在Android中,你可以使用Canvas类来绘制形状。要移动画布可绘制形状,你可以使用Canvas的平移(translate)方法。
以下是一个示例代码,展示了如何在画布上绘制一个矩形,并将画布平移(移动)到指定位置:
public class MyView extends View {
private Paint mPaint;
private float mTranslateX;
private float mTranslateY;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
// 初始化画笔
mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setAntiAlias(true);
// 设置平移的初始值
mTranslateX = 0;
mTranslateY = 0;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 平移画布
canvas.translate(mTranslateX, mTranslateY);
// 绘制矩形
canvas.drawRect(100, 100, 300, 300, mPaint);
}
// 设置平移的方法
public void setTranslation(float translateX, float translateY) {
mTranslateX = translateX;
mTranslateY = translateY;
invalidate(); // 重新绘制画布
}
}
在这个示例中,我们自定义了一个MyView类,继承自View,并重写了onDraw方法来绘制矩形。我们还添加了一个setTranslation方法,用于设置平移的值,并调用invalidate方法重新绘制画布。
你可以在你的Activity中使用MyView类,通过调用setTranslation方法来移动画布的可绘制形状,如下所示:
public class MainActivity extends AppCompatActivity {
private MyView mMyView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取MyView实例
mMyView = findViewById(R.id.my_view);
// 设置平移的值
mMyView.setTranslation(100, 200);
}
}
在这个示例中,我们在MainActivity中获取MyView的实例,并调用setTranslation方法来移动画布的可绘制形状。