1

次のリンクを読みました。

Androidで線を引く方法

http://marakana.com/s/android_2d_graphics_example,1036/index.html

http://developer.android.com/reference/android/graphics/Canvas.html

Activity.setContentView、View.setContentView?

「setContentView(R.layout.main)」なしでアクティビティを作成する方法

http://www.jayway.com/2009/03/26/layout-resources-in-android/

私の問題について話している以前の記事を読みましたが、問題を解決できません。

私の問題は、画像間の接続をシミュレートするために直線を描きたいということですが、基本的には直線を描くことです。

私が見たすべての例には、アクティビティから継承するメイン クラスと、ビューから継承する別の内部クラスがあります。メイン クラスでは、View クラスを含むユーザー インターフェイスを設定するので、空のユーザー インターフェイスができます。このようなもの:

public class ActivityMain extends Activity{

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MyView view1 =new MyView(this);
    setContentView(view1);       
}

public class MyView extends View {
    public MyView(Context c) {
        super(c);
    }
}
//And more code
}

アクティビティから継承するクラスにユーザー インターフェイス (xml ファイル) を設定したい (通常どおり):

public class ActivityMain extends Activity{
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.union);
}
}

そして、Activity を継承するクラスから直線を描画したいので、View を継承するクラスは持ちたくありません。

次のことを試しましたが、行が表示されません。

public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();

switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        Canvas canvas = new Canvas();
        Paint paint = new Paint();
                    paint.setColor(Color.BLACK);
        canvas.drawLine(0, 0, 300, 700, paint);     
    break;
    case MotionEvent.ACTION_MOVE:
    break;
    case MotionEvent.ACTION_UP:
    break;
}   
return true;
}

前の方法では、角 0,0 から角 300,700 まで線を引きたいと思います。簡単なテストです。しかし、私は何も描いていませんし、その理由もわかりません。

4

1 に答える 1

0

ビューを拡張してオーバーライドし、onDrawそこにあるすべての行を管理できます。

次に、このビュー (全画面表示可能) を別の xml (アクティビティで使用可能) に次のように追加できます。

<my.package.myView
    android:layout_width=@"fill_parent"
    android:layout_height=@"fill_parent"/>

メイン アクティビティで使用するレイアウトは、RelativeLayout画面全体に表示され、ビューの一番上に表示されるようにしてください。ビューをビューの上に配置するには、アクティビティ xml の最後にビューがあることを確認してください。

于 2012-10-20T16:29:25.257 に答える