package com.example.test;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView msg = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView) findViewById(R.id.imageView);
msg = (TextView) findViewById(R.id.msg);
// imageView.setImageResource(R.drawable.a1);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels;
int screenHeight = metrics.heightPixels;
msg.setText(msg.getText().toString() + "\n屏幕宽:" + screenWidth + " 高:"
+ screenHeight);
Drawable drawable = getResources().getDrawable(R.drawable.a1);
drawable = zoomDrawable(drawable, screenWidth,
drawable.getIntrinsicHeight()
/ (drawable.getIntrinsicWidth() / screenWidth));
imageView.setImageDrawable(drawable);
msg.setText(msg.getText().toString() + "\n新drawable宽:"
+ drawable.getIntrinsicWidth() + " 高"
+ drawable.getIntrinsicHeight());
}
public Drawable zoomDrawable(Drawable drawable, int w, int h) {
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
Bitmap oldMp = drawableToBitmap(drawable);
Matrix matrix = new Matrix();
float scaleWidth = (float) w / width;
float scaleHeight = (float) h / height;
matrix.postScale(scaleWidth, scaleHeight);
Bitmap newbmp = Bitmap.createBitmap(oldMp, 0, 0, width, height, matrix,
true);
msg.setText(msg.getText().toString() + "\n新的bitmap的宽:"
+ newbmp.getWidth() + " 高:" + newbmp.getHeight());
return new BitmapDrawable(newbmp);
}
public Bitmap drawableToBitmap(Drawable drawable) {
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
Bitmap bitmap = Bitmap.createBitmap(width, height, config);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);
return bitmap;
}
}
Drawable转BitMap实现Drawable的缩放
最新推荐文章于 2024-04-27 21:37:32 发布