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

歡迎訪問 生活随笔!

生活随笔

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

Android

android壁纸选择器,Android 图片选择器

發布時間:2023/12/19 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android壁纸选择器,Android 图片选择器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在安卓開發中經常用到修改頭像功能,通常就拍照和選擇相冊圖片兩種。有很多時候還需要對圖片進行裁剪。所以這個工具可以更快速完成這些功能。對于6.0權限的處理,每個人用的都不一樣,所以這個工具使用的是純原生的方法,使用時已經對權限進行了處理。當然也可以在使用前使用自己喜歡的方法處理動態權限。對 7.0 的FileProvider用了鴻陽大神的庫,FitAndroid7,庫很小,使用簡單,一行代碼完成Android 7 FileProvider適配~。

使用

導入

implementation 'com.github.KiWiLss.PopupUtils:ximageselect:1.0.7'

2,在界面中初始化,第二個參數代表是否裁剪圖片

mXImgSelect = new XImgSelect(this, false, new XImgSelectCallback() {

@Override

public void noCamerPermission(boolean isShow) {//沒有權限的監聽

if (isShow){

Toast.makeText(CameraTestActivity.this, "請設置權限", Toast.LENGTH_SHORT).show();

}else {//點了不再詢問,可用做成進入設置權限

Toast.makeText(CameraTestActivity.this, "在設置中授予權限", Toast.LENGTH_SHORT).show();

}

}

@Override

public void getPicPath(String path) {//結果的監聽

Log.e(TAG, "getPicPath: "+path);

Bitmap bitmap = BitmapFactory.decodeFile(path);

mIvPic.setImageBitmap(bitmap);

//BitmapUtils.saveBpImageToGallery(CameraTestActivity.this,bitmap);

}

});

權限處理

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

mXImgSelect.onRequestPermissionsResult(requestCode,permissions,grantResults);

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

調用onActivityResult()才能獲取結果

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

//如果裁剪圖片,在獲取結果前設置圖片尺寸

//mXImgSelect.setClipSize(300,300);

mXImgSelect.onActivityResult(requestCode,resultCode,data);

Log.e("MMM", "onActivityResult: "+ requestCode+"--"+data);

//mIvPic.setImageURI(mXImgSelect.uriClipUri);

}

BitmapUtils

這個工具類里有一些常用的對 bitmap 處理的方法。

compressSize :壓縮圖片尺寸

compressBitmap :圖片質量壓縮

zoomImage :圖片縮放

getBitmapFromDrawable :drawable轉bitmap

bitmapTodrawable :bitmapTodrawable

getByteFromBitmap :bitamp -> byte[]

getBitmapFromByte :byte[] -> bitmap

createBitmapThumbnail

getBitmapByUri :Uri -> bitmap

saveBpImageToGallery :保存bitmap到本地

github 地址

相冊多選的情況

有時除了選擇頭像一張圖片,還會有選擇多張圖片的情況。這里推薦一個仿知乎的第三方庫。Matisse,這個庫也很簡單好用,需要自己處理 6.0 權限申請,效果如下:

image

拍照的實現

mMediaStoreCompat = new MediaStoreCompat(this);

mMediaStoreCompat.setCaptureStrategy(new CaptureStrategy(true,

getPackageName() + ".android7.fileprovider","test"));

mMediaStoreCompat.dispatchCaptureIntent(this,199);

結果處理:onActivityResult中

Uri contentUri = mMediaStoreCompat.getCurrentPhotoUri();

String path = mMediaStoreCompat.getCurrentPhotoPath();

選擇相冊

Matisse.from(this)

.choose(MimeType.ofAll())

.countable(true)

.capture(true)

.captureStrategy(new CaptureStrategy

(true, getPackageName()+".android7.fileprovider",

"test"))

.maxSelectable(9)

.addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))

.gridExpectedSize(

getResources().getDimensionPixelSize(R.dimen.grid_expected_size))

.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)

.thumbnailScale(0.85f)

// .imageEngine(new GlideEngine()) // for glide-V3

.imageEngine(new Glide4Engine()) // for glide-V4

.setOnSelectedListener(new OnSelectedListener() {

@Override

public void onSelected(

@NonNull List uriList, @NonNull List pathList) {

// DO SOMETHING IMMEDIATELY HERE

Log.e("onSelected", "onSelected: pathList=" + pathList);

}

})

.originalEnable(true)

.maxOriginalSize(10)

.autoHideToolbarOnSingleTap(true)

.setOnCheckedListener(new OnCheckedListener() {

@Override

public void onCheck(boolean isChecked) {

// DO SOMETHING IMMEDIATELY HERE

Log.e("isChecked", "onCheck: isChecked=" + isChecked);

}

})

.forResult(22);

結果處理:

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 22){

assert data != null;

//boolean b = Matisse.obtainOriginalState(data);

List list = Matisse.obtainPathResult(data);

Log.e("MMM ", list.get(0));

}

}

在選擇圖片時也可以拍照,如果不想要拍照,可用通過 .capture(true)設置。詳情可參考Matisse.

總結

以上是生活随笔為你收集整理的android壁纸选择器,Android 图片选择器的全部內容,希望文章能夠幫你解決所遇到的問題。

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