日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android生成缩略图-使用Android 2.2新特性完成

發布時間:2025/3/17 Android 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android生成缩略图-使用Android 2.2新特性完成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

在Android 2.2版本之前,如果需要完成縮略圖功能,往往是通過Bitmap、Drawable和Canvas配合完成,需要寫一系列繁雜的邏輯去縮小原有圖片,從而得到縮略圖。但是到了Andorid 2.2版本,如果大家還這么做,那么就證明大家已經成為那個專打怪獸的奧特曼(out man)超人了。

在Android 2.2版本中,新增了一個ThumbnailUtils工具類來是實現縮略圖,此工具類的功能是強大的,使用是簡單,它提供了一個常量和三個方法。利用這些常數和方法,可以輕松快捷的實現圖片和視頻的縮略圖功能。(親,你沒有看錯,還包括生成視頻的縮略圖哦)

下面將依次說明一下這些常數和方法。

常數:

OPTIONS_RECYCLE_INPUT: 從此常量用于表示應該回收extractThumbnail(Bitmap, int, int, int)輸入源圖片(第一個參數),除非輸出圖片就是輸入圖片。

方法:

Bitmap createVideoThumbnail(String filePath, int kind)

從方法名稱即可看出,這個方法用于生成視頻縮略圖。

參數:

filePath: 視頻文件路徑

kind:  文件種類,可以是 MINI_KIND 或 MICRO_KIND

?

Bitmap extractThumbnail(Bitmap source, int width, int height, int options)

此方法用于生成一個指定大小的圖片縮略圖。

參數:

source: 需要被創造縮略圖的源位圖對象

width: 生成目標的寬度

height: 生成目標的高度

options:在縮略圖抽取時提供的選項

?

Bitmap extractThumbnail(Bitmap source, int width, int height)

此方法用于生成一個指定大小的圖片縮略圖。

參數:

source: 需要被創造縮略圖的源位圖對象

width: 生成目標的寬度

height: 生成目標的高度

?

簡單的方法,簡單的常數,看完這些后,就可以開始創建縮略圖了。下面以創建一個美女圖片的縮略圖為例,展示一下創建縮略圖的步驟:

布局文件 main.xml:

  • <linearlayout?xmlns:android="http://schemas.android.com/apk/res/android"?android:orientation="vertical"?android:background="#999999"?android:layout_width="fill_parent"?android:layout_height="fill_parent">??

  • ?????<imageview?android:layout_width="wrap_content"?android:layout_height="wrap_content"?android:layout_gravity="center"?android:src="@drawable/girl">??

  • ?????<textview?android:layout_width="wrap_content"?android:layout_height="wrap_content"?android:layout_marginleft="10dp"?android:text="縮略圖:"?android:textcolor="#000000">??

  • ?????<imageview?android:id="@+id/image"?android:layout_width="wrap_content"?android:layout_height="wrap_content"?android:layout_marginleft="20dp"?android:layout_margintop="10dp">??

  • </imageview></textview></imageview></linearlayout>??

  • Activity代碼:

  • public?class?MainActivity?extends?Activity?{??

  • ??

  • ?????@Override??

  • ?????public?void?onCreate(Bundle?savedInstanceState)?{??

  • ????????super.onCreate(savedInstanceState);??

  • ????????setContentView(R.layout.main);??

  • ??

  • ????????ImageView?humbnail?=?(ImageView)?findViewById(R.id.image);??????????

  • ??

  • ???????//獲得一個Drawable對象??

  • ???????Drawable?girl?=?getResources().getDrawable(R.drawable.girl);??

  • ???????//將Drawable對象強轉為Bitmap位圖對象??

  • ???????Bitmap?bitmap?=?((BitmapDrawable)girl).getBitmap();??

  • ???????//利用Bitmap位圖對象生成縮略圖??

  • ???????bitmap?=?ThumbnailUtils.extractThumbnail(bitmap,?51,?108);??

  • ??

  • ???????humbnail.setImageBitmap(bitmap);??

  • ????}??

  • }??

  • 運行結果:

    好了,運行結果出來了,如圖所示,運行結果如預想一樣,創建了一個美女圖片的縮略圖,并且顯示了出來。這樣的結果看上去絲毫問題沒有,但是在這里,需要指出的是,雖然結果正確,但是過程卻是不正確的。

    “過程不正確,那作者你為什么要這么寫呢?”,這樣的問題可能會出現在各位讀者的腦海中。別急,接下來我就解釋一下我為什么要這么寫,另外再重寫一個正確的代碼給大家。大家注意下面這兩行代碼:

  • //獲得一個Drawable對象??

  • Drawable?girl?=?getResources().getDrawable(R.drawable.girl);??

  • //將Drawable對象強轉為Bitmap位圖對象??

  • Bitmap?bitmap?=?((BitmapDrawable)girl).getBitmap();??

  • 我相信絕大部分人都會通過這么一種強制轉換的方法來實現從Drawable到BitmapDrawable的轉換,這也是網上瘋狂流傳并誤導大家的。首先,利用強制轉換的方法來實現類型轉換這種方式,從代碼的角度看,它是不優雅的,是簡單粗暴的,缺乏代碼的美感;其次,因為BitmapDrawable是Drawable的子類,所以無法保證每一個Drawable對象都能正確的強制轉換為BitmapDrawable,這就給代碼增加了安全的因素。

    其實Google的工程師們提供了從資源文件優雅獲取BitmapDrawable對象的方式。下面,我將貼出真正正確的寫法。

  • public?class?MainActivity?extends?Activity?{<p></p>??

  • <p>????@Override<br>??

  • ????public?void?onCreate(Bundle?savedInstanceState)?{<br>??

  • ???????super.onCreate(savedInstanceState);<br>??

  • ???????setContentView(R.layout.main);</p>??

  • <p>???????ImageView?humbnail?=?(ImageView)?findViewById(R.id.image);????????</p>??

  • <p>???????//通過openRawResource獲取一個InputStream對象<br>??

  • ???????InputStream?input?=?getResources().openRawResource(R.drawable.girl);<br>??

  • ???????//通過InputStream創建BitmapDrawable對象<br>??

  • ???????BitmapDrawable?girl?=?new?BitmapDrawable(input);<br>??

  • ???????//通過BitmapDrawable對象獲取Bitmap對象<br>??

  • ???????Bitmap?bitmap?=?girl.getBitmap();<br>??

  • ???????//利用Bitmpa對象創建縮略圖<br>??

  • ???????bitmap?=?ThumbnailUtils.extractThumbnail(bitmap,?51,?108);</p>??

  • <p>???????humbnail.setImageBitmap(bitmap);<br>??

  • ????}<br>??

  • }</p>??

  • <pre?class="java:nocontrols"?name="code">這樣獲取BitmapDrawable對象的方式,是否比前面的代碼優雅并且安全了呢?<p></p>??

  • ????????????</pre> ?

  • 原文出處:http://www.androidzz.com/2011/08/android-picture-thumbnail-android-22/


    轉載于:https://my.oschina.net/u/1866821/blog/394233

    總結

    以上是生活随笔為你收集整理的Android生成缩略图-使用Android 2.2新特性完成的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 九九热视频这里只有精品 | 欧美老肥婆性猛交视频 | 在线视频91 | 成人免费看类便视频 | 日韩二级片 | 青青草成人网 | 好色综合 | 精品一区二区毛片 | 国产三级精品在线 | 天啪| 自拍偷拍亚洲欧洲 | 91国产视频在线播放 | 99热亚洲| 亚洲精品在线91 | 成长快手短视频在线观看 | 国产视频你懂得 | 山外人精品影院 | 一级看片| 久久人人爽人人爽 | 国语精品 | 国产精品久久影院 | 天天干天天爽天天射 | 污网站免费在线 | 久久国产视频精品 | 国产精品九九九九九 | 一区二区三区视频免费视 | 久久99精品久久久久久 | 永久av网站 | 日批免费在线观看 | 久久波多野 | 啪啪在线观看 | 91禁在线观看 | 五月婷婷欧美 | 在线亚洲自拍 | 欧美一区三区二区在线观看 | www在线看片 | 在线黄色免费网站 | 日批视频在线免费看 | 少妇精品无码一区二区三区 | 一级片欧美 | 亚洲精品一区二区三区影院忠贞 | 日韩欧美一区二区在线观看 | 国产免费成人av | 久草视频手机在线观看 | 欧美成人午夜 | 欧美日韩不卡在线 | 中文字幕网伦射乱中文 | 看日本黄色录像 | 亚洲精品二 | 亚洲成人高清在线观看 | 中字av在线 | 免费成人一级片 | 深夜福利影院 | 日韩毛片一区二区三区 | 全部毛片永久免费看 | 日本在线免费看 | 亚洲欧美激情图片 | 日韩资源站 | 特黄特色免费视频 | 久久综合一区二区三区 | 成人妇女淫片aaaa视频 | 婷婷色五 | 国产高清自拍一区 | 免费看欧美黑人毛片 | 一级α片免费看刺激高潮视频 | 亚洲黄色网址大全 | 国产婷 | 丝袜+亚洲+另类+欧美+变态 | 亚洲aa| 依依激情网 | 免费国产小视频 | 91porn九色 | 精品国产网 | 色呦呦网站入口 | 欧美日韩精品一区二区 | 在线香蕉视频 | 一级做a爱片 | 成人理论视频 | 中文字幕乱码在线 | 69精品视频 | 色综合久久五月 | 亚洲成人av中文字幕 | 日韩精品视频一区二区 | 天天天天天天天天干 | 性生生活大片又黄又 | 欧美一区二区三区四区五区 | 久久久久久免费精品 | 无人在线观看的免费高清视频 | 日韩干 | 午夜影院h | 老公吃小头头视频免费观看 | 中国丰满老妇xxxxx交性 | 怡红院成永久免费人全部视频 | 朝鲜女人性猛交 | 草草在线观看 | 久久精品视屏 | 成人自拍网站 | 黑人巨大精品欧美 | 国产原创视频在线 |