編輯:關於Android編程
一個簡單的畫板,可以繪制,可以選擇顏色,可以保存。 當然了這種工具一般常用的通訊軟件都是會有的,比如QQ, 飛秋等
其中我們必須監聽手指的觸摸事件,手指的觸摸事件就分為3種: 按下,抬起,移動。 通常我們只需要關系按下的時候,然後就是整個手指滑動的過程。然後將手指滑動的過程繪制為不同的直線。當然也可以設置繪制的顏色,繪制直線的寬度等。
public class MainActivity extends Activity { private int TouchX; private int TouchY; private Paint paint; private Canvas canvas; Bitmap bitmapCopy; ImageView lView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1: 先創建一個畫板的背景圖片,這時候這圖片需要修改,就需要創建該圖片的副本 Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(), R.drawable.bg); bitmapCopy = Bitmap.createBitmap(bitmapSrc.getWidth(), bitmapSrc.getHeight(), bitmapSrc.getConfig()); paint = new Paint(); canvas = new Canvas(bitmapCopy); canvas.drawBitmap(bitmapSrc, new Matrix(), paint); lView = (ImageView) findViewById(R.id.lv); lView.setImageBitmap(bitmapCopy); //2: 就需要監聽手指的觸摸事件 lView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //手指觸摸分三種: 按下, 抬起,移動 int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: //首先是按下,當按下時,需要記錄第一次按下的位置 TouchX = (int) event.getX(); TouchY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: //只要每次移動,都會產生移動事件的,得到當前的坐標 int x = (int)event.getX(); int y = (int)event.getY(); //畫線 canvas.drawLine(TouchX, TouchY, x, y, paint); //更改下次繪制的起始坐標 TouchX = x; TouchY = y; lView.setImageBitmap(bitmapCopy); break; case MotionEvent.ACTION_UP: break; } //true:告訴系統,這個觸摸事件由我來處理 //false:告訴系統,這個觸摸事件我不處理,這時系統會把觸摸事件傳遞給imageview的父節點 return true; } }); } //設置畫筆的顏色為紅色 public void red(View v) { paint.setColor(Color.RED); } //設置畫筆的顏色為綠色 public void green(View v) { paint.setColor(Color.GREEN); } //設置刷子的寬度 public void brush(View v) { paint.setStrokeWidth(7); } //保存 public void save(View v) { File file = new File(sdcard/tupian.png); FileOutputStream fStream = null; try { fStream = new FileOutputStream(file); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //保存為png格式,100代表最高質量 bitmapCopy.compress(CompressFormat.PNG, 100, fStream); } }
以上就是一個簡單的畫板,可以繪制簡單的圖片,可以實現保存。
視差效果是什麼?所謂的視差效果在Web設計和移動應用中都非常常見,我們在一些主要的平台都可以發現它的身影,從Windows Phone到iOS乃至Android。按照維基
1.fragment1布局及代碼布局<?xml version=1.0 encoding=utf-8?><RelativeLayout
1.修改SDK版本: 打開File--Project Structure... Modules--app--Properties
前面幾篇博文介紹了Android如何自定義控件,其實就是講一下如何“從無到有”的自定義一個全新的控件,繼承View或者繼承ViewG