国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-12-12 06:22:27
字體:
來源:轉載
供稿:網友

先看看效果:

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

核心代碼 :

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)  }}

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和静县| 玉田县| 黄骅市| 马鞍山市| 太康县| 恩平市| 上高县| 桐柏县| 绥江县| 东宁县| 赤壁市| 沾化县| 龙山县| 筠连县| 利川市| 蚌埠市| 新兴县| 西林县| 澎湖县| 赤水市| 六安市| 定边县| 岱山县| 普兰县| 通河县| 达州市| 贵阳市| 岑巩县| 交城县| 清新县| 英吉沙县| 张家港市| 大洼县| 原平市| 孙吴县| 北碚区| 新源县| 澎湖县| 山东| 宣武区| 五台县|