Android--简单的画画板实例代码

[java] view plain copy  print?Android--简单的画画板实例代码Android--简单的画画板实例代码
  1. <span style="font-size:14px;">public class MainActivity extends Activity {  
  2.  private ImageView iv;  
  3.  private Bitmap baseBitmap;  
  4.  private Canvas canvas;  
  5.  private Paint paint;  
  6.  @Override  
  7.  protected void onCreate(Bundle savedInstanceState) {  
  8.   super.onCreate(savedInstanceState);  
  9.   setContentView(R.layout.activity_main);  
  10.   this.iv = (ImageView) this.findViewById(R.id.iv);  
  11.   // 创建一张空白图片  
  12.   baseBitmap = Bitmap.createBitmap(480640, Bitmap.Config.ARGB_8888);  
  13.   // 创建一张画布  
  14.   canvas = new Canvas(baseBitmap);  
  15.   // 画布背景为灰色  
  16.   canvas.drawColor(Color.GRAY);  
  17.   // 创建画笔  
  18.   paint = new Paint();  
  19.   // 画笔颜色为红色  
  20.   paint.setColor(Color.RED);  
  21.   // 宽度5个像素  
  22.   paint.setStrokeWidth(5);  
  23.   // 先将灰色背景画上  
  24.   canvas.drawBitmap(baseBitmap, new Matrix(), paint);  
  25.   iv.setImageBitmap(baseBitmap);  
  26.   
  27.   iv.setOnTouchListener(new OnTouchListener() {  
  28.    int startX;  
  29.    int startY;  
  30.    @Override  
  31.    public boolean onTouch(View v, MotionEvent event) {  
  32.     switch (event.getAction()) {  
  33.     case MotionEvent.ACTION_DOWN:  
  34.      // 获取手按下时的坐标  
  35.      startX = (int) event.getX();  
  36.      startY = (int) event.getY();  
  37.      break;  
  38.     case MotionEvent.ACTION_MOVE:  
  39.      // 获取手移动后的坐标  
  40.      int stopX = (int) event.getX();  
  41.      int stopY = (int) event.getY();  
  42.      // 在开始和结束坐标间画一条线  
  43.      canvas.drawLine(startX, startY, stopX, stopY, paint);  
  44.      // 实时更新开始坐标  
  45.      startX = (int) event.getX();  
  46.      startY = (int) event.getY();  
  47.      iv.setImageBitmap(baseBitmap);  
  48.      break;  
  49.     }  
  50.     return true;  
  51.    }  
  52.   });  
  53.  }  
  54.  public void save(View view) {  
  55.   try {  
  56.    File file = new File(Environment.getExternalStorageDirectory(),  
  57.      System.currentTimeMillis() + ".jpg");  
  58.    OutputStream stream = new FileOutputStream(file);  
  59.    baseBitmap.compress(CompressFormat.JPEG, 100, stream);  
  60.    stream.close();  
  61.    // 模拟一个广播,通知系统sdcard被挂载  
  62.    Intent intent = new Intent();  
  63.    intent.setAction(Intent.ACTION_MEDIA_MOUNTED);  
  64.    intent.setData(Uri.fromFile(Environment  
  65.      .getExternalStorageDirectory()));  
  66.    sendBroadcast(intent);  
  67.    Toast.makeText(this"保存图片成功"0).show();  
  68.   } catch (Exception e) {  
  69.    Toast.makeText(this"保存图片失败"0).show();  
  70.    e.printStackTrace();  
  71.   }  
  72.  }  
  73. }  
  74. </span>  

简单的布局文件:

[html] view plain copy  print?Android--简单的画画板实例代码Android--简单的画画板实例代码
  1. <span style="font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity" >  
  6.     <Button  
  7.         android:id="@+id/button1"  
  8.         android:onClick="save"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_alignParentBottom="true"  
  12.         android:text="保存图片" />  
  13.     <ImageView  
  14.         android:layout_above="@id/button1"  
  15.         android:id="@+id/iv"  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="match_parent"  
  18.         />  
  19. </RelativeLayout></span>  

再来个权限:

[html] view plain copy  print?Android--简单的画画板实例代码Android--简单的画画板实例代码
  1. <span style="font-size:14px;"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></span>  



转载:http://blog.csdn.net/chaoyu168/article/details/51149273

上一篇:把 Notepad++ 打造成一款易用的C#脚本编辑器


下一篇:SELinux一键开启与禁用脚本