2012-10-10 3 views
1

해결 방법을 모르는 문제가 있습니다. 가능하다면 도와주세요. 내 응용 프로그램에서 확장 된보기 사용자 지정보기를 만들어야합니다. 이 뷰에서는 사각형을 많이 그려야하고 canvas.drawRect 또는 canvas.drawRoundRect로 사각형을 만듭니다. 알았습니다. 그러나 이러한 사각형의 복합 디자인 (그라디언트, 모서리, 패딩 등)을 만들고 싶습니다. XML에서 이러한 설정 (그라디언트, 모서리, 패딩 등)을 수행하고 싶습니다. 내가 어떻게 해? 문제는 내가 XML에서 모양을 결정한다는 것입니다.이 드로어 블을 배경으로 만 사용할 수는 있지만 사각형을 그릴 때 사각형에 배경을 설정할 수 없습니다. 어쩌면이 문제를 해결할 다른 방법이있을 수 있습니다. XML 도형 객체를 배경으로 사용할 수있을뿐만 아니라 x, y 좌표 및 너비, 높이가있는 뷰 객체로 설정할 수 있습니까?안드로이드에서 XML 모양 설정으로 사각형 그리기

편집 : 사각형 그릴 수 :

canvas.drawRect(x1, y1, x2, y2, paint); 

을하지만이 같은 XML의 사각형 설정이 있습니다

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

<!-- Specify a gradient for the background --> 
    <gradient 
    android:angle="90" 
    android:startColor="#55000066" 
    android:centerColor="#FFFFFF" 
    android:endColor="#55000066" /> 

<!-- Specify a dark blue border --> 
    <stroke 
    android:width="2dp" 
    android:color="#000066" /> 

<!-- Specify the margins that all content inside the drawable must adhere to --> 
    <padding 
    android:left="5dp" 
    android:right="5dp" 
    android:top="5dp" 
    android:bottom="5dp" /> 

<corners 
    android:topLeftRadius="10dp" 
    android:topRightRadius="10dp" 
    android:bottomLeftRadius="10dp" 
    android:bottomRightRadius="10dp" /> 
</shape> 

을하고 내 사각형이 설정을 적용합니다. 방법?

+0

귀하의 질문은 약간 불분명하다. 당신이 요구하는 것을보다 간결하게 편집하려고 할 수 있습니까? – Mutmatt

답변

5

당신은로드 등과 같은 코드에서 XML 정의 드로어 블을 사용할 수 있습니다

public class CustomView extends View { 

    Drawable shape; 

    public CustomView(Context context) { 
     super(context); 
     shape = context.getResources().getDrawable(R.drawable.shape); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     shape.setBounds(left, top, right, bottom); 
     shape.draw(canvas) 
    } 

    // ... Additional methods omitted for brevity 

} 
+0

고맙습니다 ... 나는 그것을 사용하려고합니다! –

+0

GradientDrawable에 캐스팅되어야하며 ShapeDrawable이 아니라 java.lang.ClassCastException 오류가 발생합니다. android.graphics.drawable.GradientDrawable –

+0

소리가 들립니다. 처음에 내 대답을 적었을 때 XML은 질문에 포함되지 않았습니다. 실제로 구현과 관련하여 특별한 것을 사용하지 않는다면 캐스팅 할 필요가 없습니다. –