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
- android 使用自定义画布
- Android 自定义View——使用画布canvas
- Android自定义万能Canvas画布
- Android自定义View之画笔与画布
- Android自定义View之画笔与画布
- android中自定义画布Canvas的实现
- Android-自定义UI-设置画布的大小
- Android自定义View之画笔与画布
- Android自定义View之画笔与画布
- Android 画布使用之电子签名
- 【Android】自定义View、画布Canvas与画笔Paint
- Android自定义View之画笔与画布(2)
- Android 自定义View探索——画布绘制
- Android自定义View高级(三)-Canvas之画布操作
- Android自定义View(六)_Canvas之画布操作
- android自定义控件画布canvas背景色失效变黑色
- android paint(画笔)及Canvas(画布)的使用
- Android画布使用Region.Op.XOR没有效果的原因
- 描述 Web 服务:WSDL
- ItemReorder
- 关于memset()函数
- Nagios利用NRPE监控Linux主机
- WebService 之 WSDL文件 讲解
- android 使用自定义画布
- AndroidStudio集成极光推送
- [Hibernate]Hibernate4实体注解方法
- 设置cookie,跨域取值
- Android实现ListView异步加载图片
- java抽象类和接口
- Android艺术开发探索学习 之 测量view的宽高 以及 动态设置View的位置
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,即附近的人
- 从这个类关系图中你可以看出什么?