android之ImageView

来源:互联网 发布:netstat linux 编辑:程序博客网 时间:2024/05/22 01:27

先说两个过时的方法setBackgroundDrawablecontext.getResources().getDrawable(int resId)

第一个替代方法是setBackground和setImageDrawable。

第二个替代方法是ContextCompat.getDrawable(context, drawableID)。

ImageView可以在xml和代码里设置ScaleType的类型。

1.ImageVIew缩放。

这里先用到一个LinearLayout.LayoutParams类。官方介绍的是用来处理LinearLayout子布局的信息。用这个类来设置ImageView的宽高。

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(int Width, int Height);

然后在调用imageView.setLayoutParams(layoutParams);即可设置ImageView的宽高。

注意:这里的宽高最好不要超过屏幕的尺度。这里可以如下设置。

DisplayMetrics类是用来描述信息,大小,字体等信息的类。这里需要用到。

DisplayMetrics displayMetrics = new DisplayMetrics();

然后初始化displayMetrics对象,有点不一样。

activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

displayMetrics.widthPixels和displayMetrics.heightPixels是屏幕像素的绝对宽度。ImageView的宽高不要大于这个值。

2.ImageView旋转。

//图片旋转,导入包要看好啊,android.graphics.Matrixvoid rotateImage(ImageView imageView, int resId, int rotate) {    Bitmap bitmap = ((BitmapDrawable) ContextCompat.getDrawable(context, resId)).getBitmap();    Matrix matrix = new Matrix();    matrix.setRotate(rotate);    bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);    imageView.setImageBitmap(bitmap);}
这里先用bitmap加载drawable,方法BitmapDwawable.getBitmap()。然后是Matric类,必须使用reset(),setTranslate(),setRotate()其中一个方法来初始化。这里初始化成setRotate(),意指旋转类型,参数是旋转角度。然后再通过原先的bitmap和旋转矩阵构造一个新的bitmap。最后imageView.setImageBitmap(bitmap);即可产生旋转效果。



0 0
原创粉丝点击