Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android 實現圖片畫畫板,

Android 實現圖片畫畫板,

編輯:關於android開發

Android 實現圖片畫畫板,


本文主要講述了Android 實現圖片畫畫板

設計項目布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ImageView
        android:layout_above="@+id/bt"
        android:id="@+id/iv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <Button
        android:id="@+id/bt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:onClick="save"
        android:text="保存圖片" />

</RelativeLayout>

首先實現畫圖功能:

public class MainActivity extends Activity {
    private ImageView iv;
    private Bitmap baseBitmap;
    private Canvas canvas;
    private Paint paint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv = (ImageView) findViewById(R.id.iv);
        paint = new Paint();
        paint.setStrokeWidth(5);
        paint.setColor(Color.GREEN);
        
        // 創建一個可以被修改的bitmap
        baseBitmap = Bitmap.createBitmap(320, 360,
                Bitmap.Config.ARGB_8888);
        System.out.println("圖寬度:"+iv.getWidth());
        System.out.println("圖高度:"+iv.getHeight());
        canvas = new Canvas(baseBitmap);
        canvas.drawColor(Color.WHITE);

        // 知道用戶手指在屏幕上移動的軌跡
        iv.setOnTouchListener(new OnTouchListener() {
            // 設置手指開始的坐標
            int startX;
            int startY;

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: // 手指第一次接觸屏幕
                    startX = (int) event.getX();
                    startY = (int) event.getY();
                    break;
                case MotionEvent.ACTION_MOVE:// 手指在屏幕上滑動
                    int newX = (int) event.getX();
                    int newY = (int) event.getY();

                    canvas.drawLine(startX, startY, newX, newY, paint);
                    // 重新更新畫筆的開始位置
                    startX = (int) event.getX();
                    startY = (int) event.getY();
                    iv.setImageBitmap(baseBitmap);
                    break;
                case MotionEvent.ACTION_UP: // 手指離開屏幕
                    break;

                default:
                    break;
                }
                return true;
            }
        });
    }

    public void save(View view) {

    }

}

接下來完成保存圖片的功能:

    public void save(View view) {
        try {
            File file = new File(Environment.getExternalStorageDirectory(),
                    System.currentTimeMillis() + ".jpg");
            FileOutputStream stream = new FileOutputStream(file);
            baseBitmap.compress(CompressFormat.JPEG, 100, stream);
            stream.close();
            Toast.makeText(this, "保存圖片成功", 1).show();
            
            //模擬一個消息通知系統sd卡被重新掛載了
            Intent intent = new Intent();
            intent.setAction(intent.ACTION_MEDIA_MOUNTED);
            intent.setData(Uri.fromFile(Environment
                    .getExternalStorageDirectory()));
            sendBroadcast(intent);

        } catch (Exception e) {
            Toast.makeText(this, "保存圖片失敗", 1).show();
            e.printStackTrace();
        }

    }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved