側滑裡簡單的切換頭像方法-也就是二級取樣了
阿新 • • 發佈:2018-11-19
//001
首先先獲取到 imagerView 的ID 其次開啟相簿的管理 使用startActivityForResult
imageView = findViewById(R.id.hand); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent,YIBAI); } });
//002
重寫一個onActivityResult 一進去就開始判斷 你的兩個 int值
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if(requestCode==YIBAI&&resultCode==RESULT_OK){ Uri uri = data.getData(); //方法2 方法1 progressImage(url2Path(uri)); return; } super.onActivityResult(requestCode, resultCode, data); }
方法裡呼叫了兩個方法,首先第一個方法的目的在於操作圖片
//方法1 :定義一個數組 接收方法裡的Data 引數
//操作圖片 002 private String url2Path(Uri uri){ //定義陣列 String[] proj ={MediaStore.Images.Media.DATA}; //採用Cursorloader CursorLoader loader = new CursorLoader(this, uri, proj, null, null, null); //得到後臺載入 Cursor cursor = loader.loadInBackground(); int columnIndexOrThrow = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(columnIndexOrThrow); }
//方法2:
當你對圖片一頓操作之後 就要開始賦值了
這裡的 size 是我自定義的 東西 在 Valus 定義出來的dimen.xml 檔案
//001
private void progressImage(String imagrPath){
//得到一個大小 size
int size = getResources().getDimensionPixelSize(R.dimen.IConSize);
Bitmap bitmap = IconUtil.scaleBitmap(imagrPath, size, size);
imageView.setImageBitmap(bitmap);
}
//用來對圖片進行取樣的工具類
public class IconUtil {
//二次取樣
public static Bitmap scaleBitmap(String imagePath, int width, int height){
//先得到 BitmapFactory.options
BitmapFactory.Options options = new BitmapFactory.Options();
//02讓他只加載邊框--說白的就是載入圖片的所有資訊 就是不載入圖片
options.inJustDecodeBounds=true;
//03 把資訊和圖片給這個工廠
BitmapFactory.decodeFile(imagePath,options);
//04 我需要 規定一下寬高 所以需要傳參寬高過來
//就是--- 改變好寬高的一個架子
options.inSampleSize=Math.max(options.outWidth/width,options.outHeight/height);
//05加載出來這個圖片
options.inJustDecodeBounds = false;
//06 把圖片的路徑imagpath 用工廠factory給它 加上之前定義的那個規則options
return BitmapFactory.decodeFile(imagePath,options);
}