android 使用自定义画布

来源:互联网 发布:淘宝运营培训班视频 编辑:程序博客网 时间:2024/06/05 15:46


页面代码:

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Touch touch = new Touch(this);//        View view = getLayoutInflater().inflate(R.layout.activity_main, null);//        setContentView(new Touch(this));        setContentView(R.layout.activity_main);        RelativeLayout view = (RelativeLayout) findViewById(R.id.activity_main);        view.addView(new Touch(this));    }



自定义控件:


package xwj.otscale.omniteaching.com.canvas;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;/** * Created by admin on 2016/12/2. */public class Touch extends View implements View.OnClickListener {    private static final String TAG = Touch.class.getSimpleName();    int touchX = 20;    int touchY = 20;    //构造方法    public Touch(Context context) {        super(context);        setFocusable(true);        setOnClickListener(this);    }    public Touch(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected void onDraw(Canvas canvas) {        Paint paint = new Paint();        paint.setTextSize(39);        paint.setColor(Color.CYAN);        paint.setAlpha(60);        canvas.drawText("触屏",touchX,touchY,paint);        super.onDraw(canvas);    }    //键盘控件监听    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        switch (keyCode)        {            case KeyEvent.KEYCODE_DPAD_UP:                touchY -=2;                break;            case KeyEvent.KEYCODE_DPAD_DOWN:                touchY +=2;                break;            case KeyEvent.KEYCODE_DPAD_LEFT:                touchX -=2;                break;            case KeyEvent.KEYCODE_DPAD_RIGHT:                touchX +=2;                break;        }        invalidate();        return super.onKeyDown(keyCode, event);    }    //屏幕触摸监听    @Override    public boolean onTouchEvent(MotionEvent event) {        int x = (int) event.getX();        int y = (int) event.getY();        switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                touchX = x;                touchY = y;                break;            case MotionEvent.ACTION_MOVE:                touchX = x;                touchY = y;                break;            case MotionEvent.ACTION_UP:                touchX = x;                touchY = y;                break;        }        postInvalidate();        return super.onTouchEvent(event);    }    @Override    public void onClick(View v) {        invalidate();    }    //用于设置大小    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);    }}



main布局xml


<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#aa989123"    tools:context="xwj.otscale.omniteaching.com.canvas.MainActivity">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="text"        android:textSize="70dp"        /></RelativeLayout>



0 0
原创粉丝点击