2012-01-23 117 views
0

我想在更改屏幕方向時更改圖像大小。我試圖使用下面的代碼,但它不起作用。調整位圖圖像大小?

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
super.onConfigurationChanged(newConfig); 
    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      myImage = Bitmap.createBitmap(BitmapFactory 
        .decodeResource(this.getResources(), R.drawable.pic)); 
      Display d = ((WindowManager)getSystemService(WINDOW_SERVICE)) 
        .getDefaultDisplay(); 

      int ScreenHeight = d.getHeight(); 
      int ScreenWidth = d.getWidth(); 

      Bitmap ScaledImage = Bitmap.createScaledBitmap(myImage , ScreenWidth, ScreenHeight, 
          true); 

      imageview = (ImageView)findViewById(R.id.imageView2); 
      imageview.setImageBitmap(ScaledImage); 
    } 
} 

回答

3

下面是Android的

public class bitmaptest extends Activity { 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     LinearLayout linLayout = new LinearLayout(this); 

     // load the origial BitMap (500 x 500 px) 
     Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
       R.drawable.android); 

     int width = bitmapOrg.width(); 
     int height = bitmapOrg.height(); 
     int newWidth = 200; 
     int newHeight = 200; 

     // calculate the scale - in this case = 0.4f 
     float scaleWidth = ((float) newWidth)/width; 
     float scaleHeight = ((float) newHeight)/height; 

     // createa matrix for the manipulation 
     Matrix matrix = new Matrix(); 
     // resize the bit map 
     matrix.postScale(scaleWidth, scaleHeight); 
     // rotate the Bitmap 
     matrix.postRotate(45); 

     // recreate the new Bitmap 
     Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
          width, height, matrix, true); 

     // make a Drawable from Bitmap to allow to set the BitMap 
     // to the ImageView, ImageButton or what ever 
     BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); 

     ImageView imageView = new ImageView(this); 

     // set the Drawable on the ImageView 
     imageView.setImageDrawable(bmd); 

     // center the Image 
     imageView.setScaleType(ScaleType.CENTER); 

     // add ImageView to the Layout 
     linLayout.addView(imageView, 
       new LinearLayout.LayoutParams(
         LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT 
       ) 
     ); 

     // set LinearLayout as ContentView 
     setContentView(linLayout); 
    } 
} 
+0

嗨,阿爾斯蘭感謝您的幫助在旋轉或重新大小的圖像的代碼,其實我已經加入我的menifest這條線,但它不工作。在縱向模式下工作,問題僅在橫向模式下。任何其他建議。 – KKC

+0

請檢查我的新答案。 – Arslan

+0

謝謝,阿爾斯蘭其工作。非常感謝你。 – KKC