4

だから私は活動を拡張するこのクラスを持っています。しかし、画面に何かを描きたいので、キャンバスを作成する必要があります。ただし、既にアクティビティであるため、ビューを拡張することはできません。私は何をすべきか?

私のアクティビティには、いくつかのことを行うために使用する onClick メソッドがありますが、onClick メソッドも呼び出すときに簡単な画像を描画したいのです。

ありがとう。

public class Stuff extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
(...)
}

@Override
public void onClick(View arg0) {
(...)
}
4

3 に答える 3

6

ステップ 1: extends によってクラスを作成する

public class DrawView extends View {  
    public float currentX=40;  
    public float currentY=50;  

    public DrawView(Context context) {  
        super(context);  
        // TODO Auto-generated constructor stub  
    }  

    @Override  
    protected void onDraw(Canvas canvas) {        
        super.onDraw(canvas);   
        Paint paint=new Paint();  
        paint.setColor(Color.RED);  
        canvas.drawCircle(currentX, currentY, 25, paint);  
    }  

} 

STEP 2: In Your Stuff アクティビティ :

public class Stuff extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);  
setContentView(R.layout.main);  
LinearLayout root=(LinearLayout) findViewById(R.id.root); 
(...)
}

@Override
public void onClick(View arg0) {
//DRAW YOUR VIEW ON BUTTON CLICK
final DrawView drawView=new DrawView(this);  
drawView.setMinimumWidth(300);  
drawView.setMinimumHeight(500);
drawView.currentX=200;  
drawView.currentY=200;  
drawView.invalidate(); 
root.addView(drawView);
(...)
}

ステップ 3:アクティビティ main.xml as :

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:orientation="vertical"   
    android:background="#99FFCC"  
    android:id="@+id/root">  
</LinearLayout>

最後に、ここで質問する前に Google で検索してみてください。

于 2012-06-29T21:46:43.307 に答える
1

次のコードを参照して、元のアクティビティ内で内部クラスを宣言できます。

    public class GraphicsTest extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new GraphicsTestView(this));
  }


  private static class GraphicsTestView extends View
  {
    private ShapeDrawable mDrawable =
        new ShapeDrawable();
    /* Drawable's are objects which can be drawn on a Canvas
       ShapeDrawable is used to draw primitive shapes such as:
       ArcShape, OvalShape, PathShape, RectShape, RoundRectShape
       A Canvas is the object provided by Android on which
       a view tries to draw itself. In addition to ShapeDrawable,
       there are other subclasses of Drawable like PictureDrawable,
       RotateDrawable, ScaleDrawable, ClipDrawable,GradientDrawable, etc
       Some of these we will see when we consider the XML approach to
       graphics 
     */

    public GraphicsTestView (Context context) 
    {
       super(context);
       setFocusable(true);
       this.mDrawable.getPaint().setColor(0xFFFF0000); 
           //argb where a is alpha (transparency)
    }

    @Override
    protected void onDraw(Canvas canvas)
    /* the onDraw method is where a view draws itself
           this is our first time overriding it.
         */
    {
        int x = 10;
        int y = 10;
        int width = 300;
        int height = 50;
        this.mDrawable.setBounds(x, y, x + width, y + height);
        this.mDrawable.draw(canvas);

        ArcShape arc = new ArcShape(45,90); //start angle, sweep angle
        ShapeDrawable test = new ShapeDrawable(arc);

        Paint p = test.getPaint();
        p.setColor(0xFF00FFFF);

        p.setStyle(Paint.Style.STROKE);

        test.setBounds(10, 70, 310, 370); 
            //Top-Left, Bottom Right of rectangle to draw into
        test.draw(canvas);

        }
    }
}
于 2012-06-29T21:41:40.037 に答える
0

XML ファイルでレイアウト ビューを取得したいということですか。そこにビューを描画し、コードでそれを呼び出して表示し、クリックしたときに応答するように画像を設定できます。

onCreate メソッドで、super.onCreate(savedInstanceState);これを追加した後setContentView(R.id.layoutname)

例えば

@Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

onClickListener については、Activity で既に実装しているため、このように実装するようにビューを設定できます。

    // set this after "setContentView(R.layout.main);"
b1 = (Button)findViewById(R.id.main);
b1.setOnClickListener(this);
于 2012-06-29T21:35:22.313 に答える