編輯:關於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);
}
}
以上就是一個簡單的畫板,可以繪制簡單的圖片,可以實現保存。

Android實現有視差效果的ListView
視差效果是什麼?所謂的視差效果在Web設計和移動應用中都非常常見,我們在一些主要的平台都可以發現它的身影,從Windows Phone到iOS乃至Android。按照維基
Android 動態添加Fragment的實例代碼
1.fragment1布局及代碼布局<?xml version=1.0 encoding=utf-8?><RelativeLayout
AndroidStudio筆記--常用功能
1.修改SDK版本: 打開File--Project Structure... Modules--app--Properties
Android自定義控件——自定義組合控件
前面幾篇博文介紹了Android如何自定義控件,其實就是講一下如何“從無到有”的自定義一個全新的控件,繼承View或者繼承ViewG