欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android多媒體之畫畫板開發(fā)案例分享

 更新時間:2021年05月19日 09:31:10   作者:TheMrNice  
這篇文章主要為大家分享了Android多媒體之畫畫板開發(fā)案例,具有一定的實(shí)用性和參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android多媒體之畫畫板開發(fā)的具體代碼,供大家參考,具體內(nèi)容如下

先看看效果:

其實(shí)畫畫板的原理很簡單,就是首先記錄下按下屏幕的點(diǎn),然后每移動一下就讓這兩次移動的點(diǎn)連線,周而復(fù)始,圖像就由很多條直線構(gòu)成了。

核心代碼 :

public class MainActivity extends Activity implements OnClickListener,OnSeekBarChangeListener {

  private View red_view,green_view,blue_view;   //控制畫筆顏色的三塊區(qū)域
  private SeekBar seekBar;    //控制畫筆粗細(xì)的拖動條
  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);//設(shè)置畫筆顏色為黑色
    paint.setStyle(Style.STROKE);//設(shè)置畫筆為空心
    //添加處理規(guī)則
    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()) {
        //獲取按下時的坐標(biāo)
        case MotionEvent.ACTION_DOWN:
          startX = event.getX();
          startY = event.getY();
          break;
        //獲取移動時的坐標(biāo)
        case MotionEvent.ACTION_MOVE:
          float stopX = event.getX();
          float stopY = event.getY();
//          // 在開始和結(jié)束坐標(biāo)間畫一條線
          canvas.drawLine(startX, startY, stopX, stopY, paint);
          //實(shí)時更新坐標(biāo)(通過不斷畫線)
          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:
      //當(dāng)點(diǎn)擊紅色區(qū)域的時候設(shè)置畫筆顏色為紅色
      paint.setColor(Color.RED);
      break;
    case R.id.green_view:
      //當(dāng)點(diǎn)擊綠色區(qū)域的時候設(shè)置畫筆顏色為綠色
      paint.setColor(Color.GREEN);
      break;
    case R.id.blue_view:
      //當(dāng)點(diǎn)擊藍(lán)色區(qū)域的時候設(shè)置畫筆顏色為藍(lán)色
      paint.setColor(Color.BLUE);
      break;
    default:
      break;
    }
  }
  //拖動條的值改變的時候調(diào)用
  @Override
  public void onProgressChanged(SeekBar seekBar, int progress,
      boolean fromUser) {

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

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

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

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

相關(guān)文章

  • Android圖片無限輪播的實(shí)現(xiàn)代碼

    Android圖片無限輪播的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Android圖片無限輪播的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • android實(shí)現(xiàn)上下滾動的TextView

    android實(shí)現(xiàn)上下滾動的TextView

    android實(shí)現(xiàn)上下滾動的TextView,需要的朋友可以參考一下
    2013-05-05
  • Android開發(fā)中Bitmap高效加載使用詳解

    Android開發(fā)中Bitmap高效加載使用詳解

    在Android開發(fā)中,我們經(jīng)常與Bitmap打交道,而對Bitmap的不恰當(dāng)?shù)牟僮鹘?jīng)常會導(dǎo)致OOM(Out of Memory)。這篇文章我們會介紹如何高效地在Android開發(fā)中使用Bitmap,在保證圖片顯示質(zhì)量的前提下盡可能占用更小的內(nèi)存。
    2017-12-12
  • 簡單談?wù)勎业腁ndroid屏幕適配之路

    簡單談?wù)勎业腁ndroid屏幕適配之路

    我相信Android碎片化問題是讓所有的Android開發(fā)者都比較頭疼的問題.尤其是屏幕適配這一塊兒.想要自己的app在不同的設(shè)備上面都有一個比較好的顯示效果.就必須做好相應(yīng)的屏幕適配.
    2017-11-11
  • Android應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面的方法

    Android應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面的方法

    最近在工作中遇到一個需求,推廣部門要求實(shí)現(xiàn)應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面,通過查找一些資料,實(shí)現(xiàn)出來了,覺得有必要整理下方便以后或者有需要的朋友們參考借鑒,下面來一起詳細(xì)看看Android應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面的方法吧。
    2016-12-12
  • Android帶刷新時間顯示的PullToRefresh上下拉刷新

    Android帶刷新時間顯示的PullToRefresh上下拉刷新

    這篇文章主要為大家詳細(xì)介紹了Android帶刷新時間顯示的PullToRefresh上下拉刷新,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android OkHttp代理與路由的徹底理解

    Android OkHttp代理與路由的徹底理解

    這篇文章主要為大家介紹了Android OkHttp代理與路由的徹底理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 刷新Activity中的scrollview示例(局部ui刷新)

    刷新Activity中的scrollview示例(局部ui刷新)

    代碼很簡單,但是很實(shí)用,適合在一個Activity中要刷新局部的UI,比如在掃描一維碼的時候,要把每次掃描的結(jié)果都顯示在界面上
    2014-01-01
  • Android編寫Router路由框架實(shí)例過程詳解

    Android編寫Router路由框架實(shí)例過程詳解

    為什么要用路由框架,路由框架哪些好處等等,在此就不做解釋
    最常用的框架是ARouter,那是不是可以自己寫一個路由框架呢,不參考ARouter的方式
    2023-04-04
  • 輕松實(shí)現(xiàn)Android仿淘寶地區(qū)選擇功能

    輕松實(shí)現(xiàn)Android仿淘寶地區(qū)選擇功能

    這篇文章主要介紹了輕松實(shí)現(xiàn)Android仿淘寶地區(qū)選擇功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評論