Android——自定义组件和游戏开发(四)项目实战

1. 显示一张图片

要求:显示不修改的尺寸和原尺寸(110,110)

 

 

2. 自定义画板

复制代码
// 用Canvas ,Paint,Path:制作个人绘画板

public class MyPaint07 extends View {
    private Paint paint;
    private Path path;


    public MyPaint07(Context context) {
        super(context);
        init();
    }

    public MyPaint07(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyPaint07(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    public MyPaint07(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init();
    }

    public void init(){
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setStyle(Paint.Style.STROKE);
        paint.setColor(Color.parseColor("#00ff00"));
        paint.setStrokeWidth(10);
        path = new Path();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawPath(path,paint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        switch ( event.getAction() ){
            case MotionEvent.ACTION_DOWN:
                Log.i(TAG, "onTouchEvent: do it");
                path.moveTo(event.getX(),event.getY());
                break;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(event.getX(),event.getY());
                break;
        }
        invalidate();
        return true;
    }

    private static final String TAG = "MyPaint07";
}
复制代码

 

posted @   remix_alone  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示