Android基础之简单的绘图板

来源:互联网 发布:无线端来源我的淘宝 编辑:程序博客网 时间:2024/05/29 16:37

版权声明:本文为博主原创文章,未经博主允许不得转载。

public class MainActivity extends Activity implements OnTouchListener, OnClickListener {private ImageView mIv;private float startX;private float startY;private Canvas canvas;private Paint paint;private Bitmap newBitmap;private ImageView mBlue;private ImageView mGreen;private ImageView mRad;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);mIv = (ImageView) findViewById(R.id.show_iv);mIv.setOnTouchListener(this);mRad = (ImageView) findViewById(R.id.red);mBlue = (ImageView) findViewById(R.id.blue);mGreen = (ImageView) findViewById(R.id.green);mRad.setOnClickListener(this);mGreen.setOnClickListener(this);mBlue.setOnClickListener(this);//初始化画图工具initPaint();}private void initPaint() {//获取系统的窗口管理WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);//获取屏幕的显示服务Display display = manager.getDefaultDisplay();int width=display.getWidth();int height=display.getHeight();paint = new Paint();//设置画笔的大小paint.setStrokeWidth(5);newBitmap = Bitmap.createBitmap(width, height, Config.RGB_565);canvas = new Canvas(newBitmap);//设置背景颜色canvas.drawColor(Color.WHITE);}@Overridepublic boolean onTouch(View v, MotionEvent event) {// 获取事件类型switch (event.getAction()) { case  MotionEvent.ACTION_DOWN://下压,获取坐标startX = event.getRawX();startY = event.getRawY();break;case  MotionEvent.ACTION_MOVE://移动,获取坐标,float stopX = event.getRawX();float stopY = event.getRawY();//画线canvas.drawLine(startX, startY, stopX, stopY, paint);//把当前结束的坐标赋给开始坐标startX=stopX;startY=stopY;//在设备上开始显示出来mIv.setImageBitmap(newBitmap);break;case  MotionEvent.ACTION_UP:break;}return true;}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.red:paint.setColor(0xFFFF0000);break;case R.id.green:paint.setColor(0xFF00FF00);break;case R.id.blue:paint.setColor(0xFF0000FF);break;}}public void save(View view) throws FileNotFoundException{OutputStream stream=openFileOutput("绘图板.png", MODE_PRIVATE);newBitmap.compress(CompressFormat.PNG, 50, stream);}}