android!自定义view的使用
2016-04-08 15:15
435 查看
首先要自定义一个类,继承View:
layout文件应该这样写:
mainActivity中:
package com.example.fontshow; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; /** * Created by Rabbit. */ public class PaintView extends View{ // 类属性,类方法 private Bitmap bitmap; private Canvas canvas; private Path path; private Paint paint; int num = 24; int [][] paintData = new int[num][num]; float eachW; float eachH; public void clearCanvas(){ for (int i=0;i<num;i++){ for (int j=0;j<num;j++){ paintData[i][j]=0; } } invalidate(); } // 构造函数 public PaintView(Context context,AttributeSet attrs) { super(context,attrs); paint=new Paint();//设置一个笔 paint.setAntiAlias(true);//设置没有锯齿 paint.setColor(Color.BLACK);//设置笔的颜色 paint.setStyle(Paint.Style.FILL);//设置填满 // 触摸监听 this.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { // 当触摸的时候 case (MotionEvent.ACTION_MOVE): float x=event.getX(); float y=event.getY(); float w=v.getWidth(); float h=v.getHeight(); eachW = w/num; eachH = h/num; int numw = (int)Math.floor(x/eachW); int numh = (int)Math.floor(y/eachH); paintData[numw][numh] = 1; // 此方法会触发onDraw函数执行 invalidate(); break; default: break; } return true; } }); } @Override // 重写该方法,进行绘图 protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 重绘画板 canvas.drawColor(Color.rgb(230,230,250)); for (int i=0;i<num;i++){ for (int j=0;j<num;j++){ if (paintData[i][j]==1){ //System.out.println(i+"~~~"+j); Rect r1=new Rect(); r1.left=i*(int)eachW; r1.top=j*(int)eachH; r1.right=(i+1)*(int)eachW; r1.bottom=(j+1)*(int)eachH; canvas.drawRect(r1,paint); } } } } }
layout文件应该这样写:
<com.example.fontshow.PaintView android:id="@+id/paintView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_alignParentBottom="true" android:layout_below="@+id/button_second" android:layout_alignParentStart="true" android:layout_alignEnd="@+id/listView"/>
mainActivity中:
paintView = (PaintView)findViewById(R.id.paintView);
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories