最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android canvas drawBitmap方法詳解及實(shí)例

 更新時(shí)間:2017年01月24日 14:47:21   作者:小豬快跑22  
這篇文章主要介紹了 Android canvas drawBitmap方法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下

 Android canvas drawBitmap方法詳解及實(shí)例

之前自己在自定義view,用到canvas.drawBitmap(Bitmap, SrcRect, DesRect, Paint)的時(shí)候,對(duì)其中的第2和3個(gè)參數(shù)的含義含糊不清??丛创a函數(shù)也沒理解,然后看了一些其他的博客加上自己的理解,整理如下。首先,我們看一張圖片,今天就要繪制這張圖片。

這里寫圖片描述

然后將圖片用紅色的線條分成4個(gè)部分,如下:


這里寫圖片描述

我們自定義一個(gè)View,代碼如下:

public class PoterDuffLoadingView extends View {

 private Resources mResources;
 private Paint mBitPaint;
 private Bitmap mBitmap;

 private int mTotalWidth, mTotalHeight;
 private Bitmap girlBitmap;
 private int girlBitWidth , girlBitHeight;
 private Rect girlSrcRect , girlDesRect;

 public PoterDuffLoadingView(Context context) {
  super(context);
  mResources = getResources();
  initBitmap();
 }

 private void initBitmap() {
  //美女圖片的寬和高
  girlBitmap = ((BitmapDrawable)mResources.getDrawable(R.drawable.a1)).getBitmap();
  girlBitWidth = girlBitmap.getWidth();
  girlBitHeight = girlBitmap.getHeight();


 }

 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  canvas.drawBitmap(girlBitmap, girlSrcRect, girlDesRect, null);
 }
 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 }

 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  Log.d("xxxxxx", "onSizeChanged , w = "+w+" , h = "+h+" , mBitWidth = "+mBitWidth+" , mBitHeight = "+mBitHeight);
  super.onSizeChanged(w, h, oldw, oldh);
  mTotalWidth = w;
  mTotalHeight = h;

  girlSrcRect = new Rect(0, 0, girlBitWidth, girlBitHeight);
  girlDesRect = new Rect(0, 0, girlBitWidth, girlBitHeight);

 }
}

其中:

girlSrcRect = new Rect(0, 0, girlBitWidth, girlBitHeight); 

表示要畫的圖就是整個(gè)圖片的大小。我覺得girlSrcRect 就是指畫圖的大小范圍。

girlDesRect :就是所畫的圖在View上的位置。表是距離左邊和上邊為0,右邊(girlBitWidth - 0)就為圖片的寬度,下邊(girlBitHeight - 0)為圖片的高度。

效果圖如下 :


這里寫圖片描述

當(dāng)我們想移動(dòng)圖片的位置,代碼如下:

girlDesRect = new Rect(20, 50, 20+girlBitWidth, 50+girlBitHeight);

表示圖片的左邊所在的位置為20個(gè)像素,圖片的頂部在View上的位置為50個(gè)像素。圖片右邊在view上的位置為(20+girlBitWidth )即距離圖片的左邊的距離是:[(20+girlBitWidth )- 20]。底部一樣的道理。

如圖:


這里寫圖片描述

如果我們只想畫上述圖片的第2部分,該怎么做呢?我們只需要做如下修改:

girlSrcRect = new Rect(girlBitWidth/2, 0, girlBitWidth, girlBitHeight/2);
  girlDesRect = new Rect(20, 50, 20+girlBitWidth, 50+girlBitHeight);

效果圖:
這里寫圖片描述
是不是就是顯示圖片的第二部分呢,細(xì)心的會(huì)發(fā)現(xiàn)這個(gè)圖和之前整體的圖片大小是一樣的。原因是什么呢:

girlSrcRect :表示我們要畫圖的部分。

girlDesRect :表示我們要繪圖的位置。從上面的girlDesRect 值看出,繪圖的位置的確是整個(gè)圖片的位置。

那我們只想要1/4圖的大小呢,怎么辦?

girlSrcRect = new Rect(girlBitWidth/2, 0, girlBitWidth, girlBitHeight/2);
  girlDesRect = new Rect(20, 50, 20+girlBitWidth/2, 50+girlBitHeight/2);

如下圖:
這里寫圖片描述

好了,就到這里了,畢竟自己寫的才回更深刻!

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 關(guān)于Android CountDownTimer的使用及注意事項(xiàng)

    關(guān)于Android CountDownTimer的使用及注意事項(xiàng)

    這篇文章主要介紹了關(guān)于Android CountDownTimer的使用及注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Kotlin泛型的型變之路演變示例詳解

    Kotlin泛型的型變之路演變示例詳解

    這篇文章主要為大家介紹了Kotlin泛型的型變之路演變示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android TouchListener實(shí)現(xiàn)拖拽刪實(shí)例代碼

    Android TouchListener實(shí)現(xiàn)拖拽刪實(shí)例代碼

    這篇文章主要介紹了Android TouchListener實(shí)現(xiàn)拖拽刪實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Android實(shí)現(xiàn)上下菜單雙向滑動(dòng)效果

    Android實(shí)現(xiàn)上下菜單雙向滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)上下菜單雙向滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入理解Android Bitmap

    深入理解Android Bitmap

    Bitmap是Android系統(tǒng)中的圖像處理的最重要類之一。這篇文章主要介紹了理解Android Bitmap,需要的朋友可以參考下
    2017-11-11
  • 詳解adb工具的基本使用

    詳解adb工具的基本使用

    adb全稱Android Debug Bridge,是Android SDK中的一個(gè)工具, 使用adb可以直接操作管理Android模擬器或者真實(shí)的Andriod設(shè)備,就是起到調(diào)試橋的作用,這篇文章主要介紹了adb工具的基本使用,需要的朋友可以參考下
    2022-08-08
  • Android自定義View實(shí)現(xiàn)簡(jiǎn)單水波紋效果

    Android自定義View實(shí)現(xiàn)簡(jiǎn)單水波紋效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)簡(jiǎn)單水波紋效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • android實(shí)現(xiàn)簡(jiǎn)單的乘法計(jì)算代碼

    android實(shí)現(xiàn)簡(jiǎn)單的乘法計(jì)算代碼

    本文完成輸入2個(gè)數(shù)相乘,并顯示其結(jié)果。共涉及到4個(gè)控件的使用學(xué)習(xí),輸入數(shù)字采用EditText,顯示結(jié)果用TextView,運(yùn)算按鈕button以及菜單中的退出鍵
    2013-11-11
  • Android開發(fā)高級(jí)組件之自動(dòng)完成文本框(AutoCompleteTextView)用法示例【附源碼下載】

    Android開發(fā)高級(jí)組件之自動(dòng)完成文本框(AutoCompleteTextView)用法示例【附源碼下載】

    這篇文章主要介紹了Android開發(fā)高級(jí)組件之自動(dòng)完成文本框(AutoCompleteTextView)用法,簡(jiǎn)單描述了自動(dòng)完成文本框的功能并結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)自動(dòng)完成文本框功能的具體步驟與相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2018-01-01
  • Android?shape與selector標(biāo)簽使用詳解

    Android?shape與selector標(biāo)簽使用詳解

    Android中提供一種xml的方式,讓我們可以自由地定義背景,比較常用的就是shape標(biāo)簽和selector標(biāo)簽,這篇文章主要介紹了Android?shape與selector標(biāo)簽使用,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

沂南县| 淳化县| 电白县| 亳州市| 威信县| 临夏县| 星座| 凉城县| 穆棱市| 祁阳县| 衡阳市| 濮阳县| 建宁县| 松溪县| 宜阳县| 临江市| 女性| 洱源县| 武隆县| 广德县| 彭泽县| 库尔勒市| 如东县| 承德市| 西宁市| 宁乡县| 泽州县| 武宣县| 安国市| 儋州市| 东丽区| 西华县| 岚皋县| 城固县| 抚州市| 专栏| 江北区| 大连市| 六盘水市| 南丹县| 正定县|