自定义View-画板的实现

这里每次按下的时候就清屏了,如果不调用重置方法,之前显示在屏幕上的曲线就会一直存在

自定义类,PathLineView:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
 * 画曲线
 */
public class PathLineView extends View {


    private Path path;//曲线
    private Paint paint;//画笔

    /**
     * 记录上一次的坐标位置
     */
    private float toX;
    private float toY;


    public PathLineView(Context context, AttributeSet attrs) {
        super(context, attrs);
        //初始化画笔
        paint = new Paint();
        paint.setStrokeWidth(2);
        paint.setColor(0xffff0000);
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.STROKE);//描边,空心,如果是FILL画出来就会是实心的了

        path = new Path();//创建曲线
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawPath(path,paint);//用画笔画这条曲线
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                path.reset();//重置,每次按下就会清屏了
                toX = event.getX();
                toY = event.getY();
                path.moveTo(toX,toY);//曲线的起点位置
                break;
            case MotionEvent.ACTION_MOVE:
                toX = event.getX();
                toY = event.getY();
                path.lineTo(toX,toY);//曲线连接到该点
                break;
            case MotionEvent.ACTION_UP:
                break;
        }
        invalidate();//重绘
        return true;
    }
}

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.workspace.my.drawline.MainActivity">

    <com.workspace.my.drawline.PathLineView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffcccc"/>
</RelativeLayout>

activity中直接显示上面布局就行

效果图:

posted @ 2016-09-12 16:54  ts-android  阅读(295)  评论(0编辑  收藏  举报