1

onCreate()メソッド でカスタムビューを再描画しようとしています

public void onCreate(Bundle savedInstanceState)    
{    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.main);    
        circleView = (CircleView)findViewById(R.id.circleView);    
        circleView.setCircle(100, 100, 25);    
        circleView.wrapView();    
 }    

カスタムビューは:

public class CircleView extends View  
{  
    private Paint paint = null;  
    private int x = 50;  
    private int y = 50;  
    private int radius = 50;  
    public CircleView(Context context, AttributeSet attrs)   
    {  
        super(context, attrs);  
        init();  
    }  
    public CircleView(Context context)    
    {  
        super(context);  
        init();  
    }  
    private void init()  
    {  
        paint = new Paint();  
    }   
    public void setCircle(int x, int y, int radius)  
    {  
        this.x = x;  
        this.y = y;  
        this.radius = radius;  
        init();  
        this.invalidate();  
    }  
    @Override  
    protected void onDraw(Canvas canvas)   
    {  
        super.onDraw(canvas);  
        paint.setColor(Color.WHITE);  
        canvas.drawCircle(x, y, radius, paint);  
        Log.e("", "radius : " + radius);  
    }  
        public void setColor(int color)  
    {  
        paint.setColor(color);  
    }  
    public void wrapView()   
    {  
        this.setLayoutParams(new RelativeLayout.LayoutParams(radius*2, radius*2));  
        this.invalidate();  
    }  
}

xmlは次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layoutMain"
    >

    <com.pep1439.view.CircleView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/circleView" />

</RelativeLayout>

円のサイズを変更したいのですが、失敗しました。任意の半径で円を描くのを手伝ってください。これを行う方法。デフォルト値を使用すると正常に動作します。線を外すと円が描かれますcircleView.setCircle(100, 100, 25);。実行時に円を調整したい。ありがとう。

4

1 に答える 1

1

xとをに設定y100、半径をに設定し25ます。次に、ビューのサイズをに変更します。radius*2これは50、最終的に、サイズのみのビューの25位置に半径の円を描画することです。言い換えると、ビューの領域の外側に円を描きます100,10050x50

于 2013-02-24T10:05:47.137 に答える