步驟1:編寫重定向到圖片庫的代碼
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比拉孜網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式拉孜網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋拉孜地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
我們需要寫一些Java代碼來處理按鈕的點(diǎn)擊事件,而重定向到圖片庫的代碼如下:
Intent i = new Intent(
Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
注意:這里的RESULT_LOAD_IMAGE是一個(gè)整形常量需要傳到startActivityForResult()方法。
步驟2:獲取選中的圖片
一旦選擇了一張圖片,onActivityResult()方法將會(huì)被調(diào)用。我們需要處理這個(gè)方法得到的數(shù)據(jù),代碼如下:
1 @Override
2 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
3 super.onActivityResult(requestCode, resultCode, data);
4
5 if (requestCode == RESULT_LOAD_IMAGE resultCode == RESULT_OK null != data) {
6 Uri selectedImage = data.getData();
7 String[] filePathColumn = { MediaStore.Images.Media.DATA };
8
9 Cursor cursor = getContentResolver().query(selectedImage,
10 filePathColumn, null, null, null);
11 cursor.moveToFirst();
12 13 int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
14 String picturePath = cursor.getString(columnIndex);
15 cursor.close();
16 }
注意:onActivityResult()方法只有當(dāng)圖片被選中后才會(huì)調(diào)用。在這個(gè)方法中,我們需要檢查requestCode是否是我們之前傳給startActivityForResult()方法的RESULT_LOAD_IMAGE。
是根據(jù)drawable文件夾的修飾符進(jìn)行選擇的。
比如drawable、drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawalbe-xxhdpi、drawable-xxxhdpi
根據(jù)修飾符進(jìn)行優(yōu)先匹配。
不同的dpi修飾符對(duì)應(yīng)的dpi如下
drawable-ldpi ? ? ? ? ?120DPI
drawable-mdpi ? ? ? ?160DPI
drawable-hdpi ? ? ? ??240DPI
drawable-xhdpi ? ? ??320DPI
drawalbe-xxhdpi ? ??480DPI
drawable-xxxhdpi ? ?640DPI
dpi是根據(jù)手機(jī)的當(dāng)前分辨率ppi歸一化得到的。
那么PPI如何得來的?
如果手機(jī)的寬為X,高為Y,屏幕大小為Z英寸,那么
公式中的X2其實(shí)是X的平方,即X*X。
比如三星手機(jī)I9260分辨率是1280*720,屏幕大小是4.65英寸,那么計(jì)算得到的PPI就是315.8PPI
找一個(gè)最近的DPI值應(yīng)該是320DPI,也就是這個(gè)設(shè)備被歸一化后就是320DPI。屬于xhdpi。
系統(tǒng)取圖片時(shí)會(huì)優(yōu)先選擇drawable-xhdpi里面的圖片,如果drawable-xhdpi不存在或者沒有這張圖,就會(huì)就近從其它分辨率和默認(rèn)的無后綴drawable文件夾下取。
比如工程只有在draw-xxhdpi文件下有img圖片,而你的設(shè)置是xhdpi,就會(huì)從xxhdpi取完圖片再壓縮到對(duì)應(yīng)大小返回給使用者。
1.遍歷sdcard文件夾(指定層次深度 searchDeep ),如果文件夾發(fā)現(xiàn)圖片 , 添加到已搜索到圖片的文件列表中,并跳入下一個(gè)文件夾搜索
2.使用 ContentResolver 搜索 添加搜索標(biāo)簽(png,jpg,jpeg,gif 等) 優(yōu)點(diǎn):更快速
壓縮調(diào)用
第一步--
采樣率壓縮:設(shè)置 BitmapFactory.Options.inSampleSize 大小
第二步--
PNG:尺寸壓縮( Config:ARGB_4444 ,工具: Canvas );
JPG:尺寸壓縮( Config:ARGB_565 ,工具: Canvas )+壓縮質(zhì)量( bitmap.compress() )
注 :
1.GIF不做壓縮處理
2.尺寸壓縮:改變寬高(png,jpg)
3.壓縮質(zhì)量:改變文件大小(適用jpg,png無效)
在布局文件中建立一個(gè)linearlayout,設(shè)置為clickable,然后加入一個(gè)ImageView,這是布局文件 LinearLayout android:orientation="vertical" android:layout_height="wrap_content" android:clickable="true" ImageView android:layout_width="wrap_content" android:layout_height="wrap_content android:id="@+id/img" android:layout_gravity="center_horizontal" android:layout_centerVertical="true" android:src="@drawable/360"http://這個(gè)是你的圖標(biāo) / /LinearLayout 然后在做一個(gè)布局文件,加入也是...