Android 自定义VIEW的运用
来源:互联网 发布:淘宝开店一个月没生意 编辑:程序博客网 时间:2024/04/18 15:48
---------------------XML
<qianming.co.cc.DrawView
android:id="@+id/draw"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
-----------------------.java
package qianming.co.cc;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class DrawView extends View {
float preX;
float preY;
private Path path;
public Paint paint = null;
final int VIEW_WIDTH = 1024;
final int VIEW_HEIGHT = 1024;
// 定义一个内存中的图片,该图片将作为缓冲区
Bitmap cacheBitmap = null;
// 定义cacheBitmap上的Canvas对象
Canvas cacheCanvas = null;
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
cacheBitmap = Bitmap.createBitmap(VIEW_WIDTH, VIEW_HEIGHT,
Config.ARGB_8888);
cacheCanvas = new Canvas();
path = new Path();
// 设置cacheCanvas将会绘制到内存中的cacheBitmap上
cacheCanvas.setBitmap(cacheBitmap);
// 设置画笔的颜色
paint = new Paint(Paint.DITHER_FLAG);
paint.setColor(Color.RED);
// 设置画笔风格
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
// 反锯齿
paint.setAntiAlias(true);
paint.setDither(true);
cacheCanvas.save(Canvas.ALL_SAVE_FLAG );
cacheCanvas.restore();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint bmpPaint = new Paint();
// 将cacheBitmap绘制到该View组件上
canvas.drawBitmap(cacheBitmap, 0, 0, bmpPaint); // ②
// 沿着path绘制
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(x, y);
preX = x;
preY = y;
break;
case MotionEvent.ACTION_MOVE:
path.quadTo(preX, preY, x, y);
preX = x;
preY = y;
break;
case MotionEvent.ACTION_UP:
cacheCanvas.drawPath(path, paint); // ①
path.reset();
break;
}
invalidate();
// 返回true表明处理方法已经处理该事件
return true;
}
}
- Android 自定义VIEW的运用
- 自定义view的基本运用
- android的自定义View
- Android自定义View研究:View的大小
- Android自定义View研究:View的大小
- Android自定义View研究:View的大小
- android自定义View---生成虚线的View
- android自定义View---生成虚线的View
- Android自定义View(一) View的测量
- Android自定义View 之 View的测量
- Android 自定义View之View的绘制
- Android 自定义View基础-View的测量
- Android 自定义View基础-View的绘制
- android 自定义view的样式
- android自定义View的用法
- android 自定义View的属性
- Android自定义简单的View
- Android自定义简单的View
- 在线招聘网站开发截图(企业模块)
- Android的IPC机制-Binder
- POJ 4047 Garden
- 71道经典Android面试题和答案--重要知识点都涉及到了
- 一个简单的Java UDP协议通信的例子
- Android 自定义VIEW的运用
- Android MENU加载方法
- memcpy和strcpy的区别
- Android Canvas 保存为图片
- 一个计算机爱好者的不完整回忆外传——网上的MM们(二)
- uva 846 - Steps
- C# 获取Internet时间
- 客户端调用服务器端代码的方式(非entity、facade方式)
- ctype.h字符处理函数