0

私は、ビットマップの動きに最初の一歩を踏み出しています。インターネット上のビットから、この単純なコードを作成しました。ビットマップは画面を左上から右上に移動し、画面から消えて 0,0 に戻ります。私がやりたいことは、画像を手動で移動するためのボタンまたはメソッドを追加することです。私は、この単一のクラスのみを使用していますが、main_activity xml を使用していないことに気付きました。誰かがこの 1 つの方向に私を示すことができれば、私は他の方向のために複製することができます. コードを追加して画面から消えないようにしたい場合は、おまけになります

public class MainActivity extends Activity {    
int x=0;
int y=0;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(new myView(this));  }

private class myView extends View{
public myView(Context context) {
super(context);  }

@Override
protected void onDraw(Canvas canvas) {   
Bitmap myBitmap =    BitmapFactory.decodeResource(getResources(),  R.drawable.richinch);

if (x < canvas.getWidth()){x +=10;}
else {x=0;}   
    canvas.drawBitmap(myBitmap, x, y, null);

       invalidate();

  }}}

これをコードに追加し、OnTouch リスナーを少し読んでみました。これをリージョンまたは Rectangle に追加するにはどうすればよいでしょうか。これは非常に効果的です。ボタン ID が onclick でわかっている場合、ビットマップをボタンとして使用しています。 .最終的にはすべての方向。サミットを作成しない限り、使用している名前を使用してください。例: int など

 Paint green = new Paint();
 green.setColor(Color.RED);
 green.setStyle(Paint.Style.FILL);
 ////creating the shape////         
 Rect rect= new Rect();
 rect.set(0, 0,x+50, x+50);
 canvas.drawRect(rect,green);
 Region region = new Region(0, 950, 100, 1030);
4

2 に答える 2

0

あなたはxmlを使用していません

ここのこの部分: setContentView(new myView(this)); xml ファイル setContentView(R.layout.mainxml) を追加する場所です。

指で触れるだけでビットマップを移動したい場合は、これらのチュートリアルをチェックしてください。彼らはまさにこれを行い、あなたはSurfaceViewの使い方を学びます

http://www.eis4u.com/2012/02/13/playing-with-graphics-in-android-part-i/ http://www.eis4u.com/2012/02/13/playing-with- graphics-in-android-part-ii/ http://www.eis4u.com/2012/02/13/playing-with-graphics-in-android-part-iii/

于 2013-11-14T17:37:19.563 に答える
0

何を達成したいのか正確にはわかりませんが、アニメーションを作成したい場合は、 onDraw() の使用を避け、ObjectAnimatorに「移動」させてください。ここに詳細なチュートリアルがあります。

必要な最小限のコード:

ObjectAnimator animation = ObjectAnimator.ofFloat(yourObject, "x", xDest);
animation.setDuration(500); // milliseconds
animation.start();
于 2013-11-14T17:35:30.437 に答える