Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android多媒體之畫畫板開發案例分享

Android多媒體之畫畫板開發案例分享

編輯:關於Android編程

先看看效果:

其實畫畫板的原理很簡單,就是首先記錄下按下屏幕的點,然後每移動一下就讓這兩次移動的點連線,周而復始,圖像就由很多條直線構成了。

核心代碼 :

public class MainActivity extends Activity implements OnClickListener,OnSeekBarChangeListener {

  private View red_view,green_view,blue_view;   //控制畫筆顏色的三塊區域
  private SeekBar seekBar;    //控制畫筆粗細的拖動條
  private ImageView iv;  
  private Bitmap bitmap,backgroud;  //畫紙和背景圖
  private Canvas canvas;       //畫布
  private Paint paint;        //畫筆
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    red_view = findViewById(R.id.red_view);
    green_view = findViewById(R.id.green_view);
    blue_view = findViewById(R.id.blue_view);
    seekBar = (SeekBar) findViewById(R.id.seekbar);
    iv = (ImageView) findViewById(R.id.iv);
    iv.setImageResource(R.drawable.bg);
    //拿到背景圖
    backgroud = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
    //拿到和背景圖一樣大小的畫紙
    bitmap = Bitmap.createBitmap(backgroud.getWidth(), backgroud.getHeight(), backgroud.getConfig());
    //把畫紙固定在畫布上
    canvas = new Canvas(bitmap);
    //拿到畫筆
    paint = new Paint();
    paint.setColor(Color.BLACK);//設置畫筆顏色為黑色
    paint.setStyle(Style.STROKE);//設置畫筆為空心
    //添加處理規則
    Matrix matrix = new Matrix();
    //照著背景圖畫
    canvas.drawBitmap(backgroud, matrix, paint);
    red_view.setOnClickListener(this);
    green_view.setOnClickListener(this);
    blue_view.setOnClickListener(this);
    seekBar.setOnSeekBarChangeListener(this);
    iv.setOnTouchListener(new OnTouchListener() {
      float startX;
      float startY;
      @Override
      public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        //獲取按下時的坐標
        case MotionEvent.ACTION_DOWN:
          startX = event.getX();
          startY = event.getY();
          break;
        //獲取移動時的坐標
        case MotionEvent.ACTION_MOVE:
          float stopX = event.getX();
          float stopY = event.getY();
//          // 在開始和結束坐標間畫一條線
          canvas.drawLine(startX, startY, stopX, stopY, paint);
          //實時更新坐標(通過不斷畫線)
          startX = event.getX();
          startY = event.getY();

          iv.setImageBitmap(bitmap);
          break;
        case MotionEvent.ACTION_UP:
          break;
        default:
          break;
        }
        return true;
      }
    });
  }
  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.red_view:
      //當點擊紅色區域的時候設置畫筆顏色為紅色
      paint.setColor(Color.RED);
      break;
    case R.id.green_view:
      //當點擊綠色區域的時候設置畫筆顏色為綠色
      paint.setColor(Color.GREEN);
      break;
    case R.id.blue_view:
      //當點擊藍色區域的時候設置畫筆顏色為藍色
      paint.setColor(Color.BLUE);
      break;
    default:
      break;
    }
  }
  //拖動條的值改變的時候調用
  @Override
  public void onProgressChanged(SeekBar seekBar, int progress,
      boolean fromUser) {

  }
  //開始拖動時調用
  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {

  }
  //停止拖動時調用
  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {
    int progress = seekBar.getProgress();//拖動條默認的最大值為100
    paint.setStrokeWidth(progress/10f);//控制畫筆的粗細范圍(0-10)
  }
}

試試覺得很簡單呢,趕緊試試吧!

又到周五了,希望大家有個快樂周末,謝謝大家一直對小編的支持,小編一定會再接再厲,為大家分享更多精彩的文章。

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