2016-12-27 58 views
2

我從圖庫中選擇圖片如下android:如何以編程方式固定大小的圖像視圖?

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.profile_image : 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY); 

    } 
    } 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == GALLERY && resultCode != 0) { 
     profileImage.setImageBitmap(null); 
      if (Image != null) 
       Image.recycle(); 
     Uri mImageUri = data.getData(); 
     try { 
      Image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mImageUri); 
       profileImage.setImageBitmap(Image); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

這個完美的作品,但一個問題是存在的,圖像的高度和寬度得到改變爲不同的圖像設置帳戶的個人資料圖片。我想要的是將圖像大小和寬度固定爲150 dp? 下面是我的XML代碼

<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    app:srcCompat="@android:drawable/sym_def_app_icon" 
    android:clickable="true"/> 
+0

請參閱[此](http://stackoverflow.com/a/41038654/5460053)調整圖像大小。 –

回答

2

可以使用「centerCrop」scaleType用於此目的。

<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:scaleType="centerCrop"/> 

其他規模類型有:

中心
中心視圖中的圖像,但執行不結垢。

CENTER_CROP
均勻地縮放圖像(保持圖像的縱橫比),使圖像的兩個尺寸(寬度和高度)等於或大於視圖的相應尺寸(減去填充)。

CENTER_INSIDE
均勻地縮放圖像(保持圖像的縱橫比),使圖像的兩個尺寸(寬度和高度)等於或小於視圖的相應尺寸(減去填充)。

FIT_CENTER
使用CENTER縮放圖像。

FIT_END
使用END縮放圖像。

FIT_START
使用START縮放圖像。

FIT_XY
使用FILL縮放圖像。

MATRIX
繪圖時使用圖像矩陣進行縮放。

0
<ImageView 
    android:id="@+id/profile_image" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    app:srcCompat="@android:drawable/sym_def_app_icon" 
    android:layout_centerInParent="true" 
    android:adjustViewBounds="true" 
    android:clickable="true"/> 

請上述兩個屬性添加到您的ImageView

0

您應該設置LayoutParams來查看要調整大小:

private void resizeImageView(ImageView iv, int w, int h) { 
    //set width and height in pixels 
    iv.setLayoutParams(new ViewGroup.LayoutParams(w, h)); 
    //or if w and h are in dp: 
    //iv.setLayoutParams(new ViewGroup.LayoutParams(dpToPx(this, w), dpToPx(this, h))); 
} 

private int dpToPx(Activity activity, int dp) { 
    DisplayMetrics metrics = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); 
} 
相關問題