0
A
回答
1
嗨,你可以參考下面的代碼,在onTouchEvent中,你可以處理方向和移動對象。
// Tutorial2D.java主要活動
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Window;
public class Tutorial2D extends Activity {
Square drawView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
drawView = new Square(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);
}
}
// Square.java
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;
class Square extends View {
Bitmap mBitmap;
Paint paint = new Paint();
public Square(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
canvas.rotate(direction, mCenterX, mCenterY);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(230, 230, 280, 280, paint);
paint.setStrokeWidth(0);
paint.setColor(Color.CYAN);
canvas.drawRect(233, 260, 277, 277, paint);
paint.setColor(Color.YELLOW);
canvas.drawRect(233, 233, 277, 260, paint);
}
private float mCenterX, mCenterY;
private float direction = 0;
private float sX, sY;
private float startDirection = 0;
private void touchStart(float x, float y) {
mCenterX = this.getWidth()/2;
mCenterY = this.getHeight()/2;
sX = x;
sY = y;
}
private void touchMove(float x, float y) {
// this calculate the angle the image rotate
float angle = (float) angleBetween2Lines(mCenterX, mCenterY, sX, sY, x,
y);
direction = (float) Math.toDegrees(angle) * -1 + startDirection;
this.invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// record the start position of finger
touchStart(x, y);
break;
case MotionEvent.ACTION_MOVE:
// update image angle
touchMove(x, y);
break;
case MotionEvent.ACTION_UP:
startDirection = direction;
break;
}
return true;
}
public double angleBetween2Lines(float centerX, float centerY, float x1,
float y1, float x2, float y2) {
double angle1 = Math.atan2(y1 - centerY, x1 - centerX);
double angle2 = Math.atan2(y2 - centerY, x2 - centerX);
return angle1 - angle2;
}
}
0
這很難回答,因爲它取決於什麼是真正的應用程序。所以也許它會適合你最好從像ImageView這樣的較小的組件創建「圖片」,然後使用Animation來移動ImageView。如果沒有,你可能需要重新畫你的畫布。
相關問題
- 1. 在Android畫布中繪製2D曲線?
- 2. WorldWindJava畫布上的2D圖形動畫?
- 3. 如何在Android中製作畫布?
- 4. 如何在android中實現2D圖形?
- 5. 如何在畫布中製作矩形html5動畫
- 6. 如何用畫布製作動畫條形圖?
- 7. 如何在Android畫布上繪製數學函數的圖形
- 8. 繪製矩形畫布android
- 9. Android畫布繪製矩形
- 10. 如何使動畫過渡android
- 11. 如何在Android中旋轉在畫布上繪製的矩形?
- 12. 如何在Android中爲畫布製作自定義畫筆?
- 13. WPF畫布圖形繪製
- 14. Android視圖過渡動畫列表?
- 15. 製作頁面過渡動畫
- 16. 如何在Android中使用畫布繪製ECG波形
- 17. 繪製在圖2D圖形
- 18. Android的動畫過渡
- 19. 如何在Android的畫布中移動圖形
- 20. 如何在HTML5畫布中製作此形狀?
- 21. 如何在畫布上通過畫線方法在J2ME中繪製矩形
- 22. 通過畫布製作圖像
- 23. Android:在畫布上保存圖形
- 24. android如何在畫布上繪製三角形,星形,方形,心形
- 25. Android 2D圖形庫
- 26. 如何在畫布上製作生長線動畫android
- 27. iphone dev:如何控制視圖過渡動畫?
- 28. 如何在Android中將小圖像繪製到畫布中
- 29. 如何在Android中通過畫布繪製圓圈?
- 30. 如何在Android上使用OpenGL渲染2D圖形/圖形?