在这篇文章中,我们将为您详细介绍AndroidImageView-setAlpha(float)与setImageAlpha(int)的内容。此外,我们还会涉及一些关于Android4.3ImageV
在这篇文章中,我们将为您详细介绍Android ImageView-setAlpha(float)与setImageAlpha(int)的内容。此外,我们还会涉及一些关于Android 4.3 ImageView ScaleType.MATRIX、Android CircleImageView圆形ImageView、Android CircleImageView圆形ImageView深入浅出、Android ImageView setImageBitmap 不显示图片的知识,以帮助您更全面地了解这个主题。
本文目录一览:- Android ImageView-setAlpha(float)与setImageAlpha(int)
- Android 4.3 ImageView ScaleType.MATRIX
- Android CircleImageView圆形ImageView
- Android CircleImageView圆形ImageView深入浅出
- Android ImageView setImageBitmap 不显示图片
Android ImageView-setAlpha(float)与setImageAlpha(int)
使用this答案作为参考,我了解到视图的setAlpha(float)基本上通常在缓冲区上绘制视图,然后使用第二遍通过场景中的alpha值绘制视图,因此设置视图的alpha通常涉及损害应用程序的性能.
但是,ImageViews还有另一种名为setimageAlpha(int)的方法,根据我收集到的方法,将alpha值应用于ImageView的滤色镜-完全不需要第二遍,因此效率更高.
我的问题是-由于在ImageView上使用setimageAlpha效率更高,是否有理由在ImageView上使用setAlpha(float)?还是应该总体上避免使用setimageAlpha(int)?
解决方法:
从方法的字面意义上讲,我猜setimageAlpha仅设置图像的Alpha.如果图像视图具有背景,则背景将不是半透明的.但是setAlpha设置整个视图的alpha值.
Android 4.3 ImageView ScaleType.MATRIX
今天我在Nexus 7上设置了新的Android JB 4.3,我试着运行我的应用程序.
除了0700和ScaleType.MATRIX之外的一件小事,Everythings的工作方式应该是应该的.
基本上我在我的应用程序中有一个ImageView作为背景,相应于ViewPager回调我移动图像的焦点部分更新Matrix我使用setImageMatix( Matrix matrix )给imageView.
问题似乎是我不能再更新矩阵了,我只需要实例化一个新的传递给ImageView.
我设法解决它每次新的Matrix实例化,但它似乎与旧版本相比内存昂贵.
这是一个BUG吗?
有没有办法更新Matrix? (顺便说一下,我已经尝试过invalidate()的ImageView ecc.)
不工作
private void updateMatrix( final int page, final double offset ) {
double pagePosition = page + offset;
Matrix matrix = imageView.getimageMatrix();
matrix.setScale( scale, scale );
matrix.postTranslate( - (float) ( pagePosition * pageWidth ) , 0 );
imageView.setimageMatrix( matrix );
imageView.invalidate();
}
工作
private void updateMatrix( final int page, final double offset ) {
double pagePosition = page + offset;
Matrix matrix = new Matrix();
matrix.setScale( scale, scale );
matrix.postTranslate( - (float) ( pagePosition * pageWidth ) , 0 );
imageView.setimageMatrix( matrix );
imageView.invalidate();
}
编辑:
在第一种情况下,图像显示在ImageView的左上角,没有应用任何比例或平移,就像矩阵回到标识.
解决方法:
只需将Matrix保存为字段,而不是从ImageView中检索它,你会很高兴:)
Android CircleImageView圆形ImageView
Android CircleImageView圆形ImageView
CircleImageView是github上一个第三方开源的实现圆形ImageView的项目。
其在github上的项目主页是:https://github.com/hdodenhof/CircleImageView
实现的结果如图:
重点说一说CircleImageView和附录文章1的异同,在开发中如何在特定情况下该选择何种技术实现方案。
(一)附录1的RoundedBitmapDrawable是谷歌官方的圆形实现,RoundedBitmapDrawable的最大特点是可以正在上层Java代码中灵活定制如边角弧度、圆角矩形、把一个矩形处理成圆形图、椭圆形图等等,但是RoundedBitmapDrawable没有提供直接定义边框的功能,比如,就像上图中的圆形图,边缘部分要加一定厚度的外层边框线,则RoundedBitmapDrawable无法直接实现。
(二)有些开发情况中,不一定非要把设置、实现圆形图的代码全部放在上层Java代码中写,而只是想写在xml布局文件中,那么RoundedBitmapDrawable就没法直接在xml布局文件中写,而CircleImageView则直接可以在xml中灵活定义边框线厚度、颜色等等。
(三)CircleImageView顾名思义,专业处理圆形图,CircleImageView不像RoundedBitmapDrawable那样还可以制作圆角矩形、椭圆图等等。
总结:
(一)假设如果仅仅只是在上层Java代码中设置一个圆形图(比如常见的开发场景中设置圆形用户头像),那么此时在xml布局中先写好一个ImageView,然后上层Java代码从服务器读取一个头像的byte字节,转化为Bitmap,然后通过RoundedBitmapDrawable处理成圆形drawable设置到ImageView中,那么这种开发场景就可以简单的使用RoundedBitmapDrawable。
(二)如果对图像的UI设计要求变得复杂,比如加边框、边线厚度、边线颜色等等都要有,且不同的圆图要有一定的遮盖等等,那这种情况下就不再合适用RoundedBitmapDrawable,而比较适合用CircleImageView。
附录:
1,《Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案》链接:http://blog.csdn.net/zhangphil/article/details/51829650
2,《Android圆形头像图Circle ImageView》链接:http://blog.csdn.net/zhangphil/article/details/44960551
3,《Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等》链接:http://blog.csdn.net/zhangphil/article/details/50119921
Android CircleImageView圆形ImageView深入浅出
重点说一说CircleImageView和附录文章1的异同,在开发中如何在特定情况下该选择何种技术实现方案。
(一)附录1的RoundedBitmapDrawable是谷歌官方的圆形实现,RoundedBitmapDrawable的最大特点是可以正在上层Java代码中灵活定制如边角弧度、圆角矩形、把一个矩形处理成圆形图、椭圆形图等等,但是RoundedBitmapDrawable没有提供直接定义边框的功能,比如,就像上图中的圆形图,边缘部分要加一定厚度的外层边框线,则RoundedBitmapDrawable无法直接实现。
(二)有些开发情况中,不一定非要把设置、实现圆形图的代码全部放在上层Java代码中写,而只是想写在xml布局文件中,那么RoundedBitmapDrawable就没法直接在xml布局文件中写,而CircleImageView则直接可以在xml中灵活定义边框线厚度、颜色等等。
(三)CircleImageView顾名思义,专业处理圆形图,CircleImageView不像RoundedBitmapDrawable那样还可以制作圆角矩形、椭圆图等等。
总结:
(一)假设如果仅仅只是在上层Java代码中设置一个圆形图(比如常见的开发场景中设置圆形用户头像),那么此时在xml布局中先写好一个ImageView,然后上层Java代码从服务器读取一个头像的byte字节,转化为Bitmap,然后通过RoundedBitmapDrawable处理成圆形drawable设置到ImageView中,那么这种开发场景就可以简单的使用RoundedBitmapDrawable。
(二)如果对图像的UI设计要求变得复杂,比如加边框、边线厚度、边线颜色等等都要有,且不同的圆图要有一定的遮盖等等,那这种情况下就不再合适用RoundedBitmapDrawable,而比较适合用CircleImageView。
Android ImageView setImageBitmap 不显示图片
从sd卡里读出图片后有时调用setImageBitmap(bitmap)方法会显示不出图片,仔细考虑过后原来是加载的图片过大导致的,解决办法为:
BitmapFactory.Options op = new BitmapFactory.Options();
op.inSampleSize = 2;
//op.inJustDecodeBounds = true; //它仅仅会把它的宽,高取回来给你,这样就不会占用太多的内存,也就不会那么频繁的发生OOM了。
//op.inPreferredConfig = Bitmap.Config.ARGB_4444; // 默认是Bitmap.Config.ARGB_8888
private Bitmap createBitmapFromByteData(byte[] data ,Options options){
Bitmap bitmap = null;
if(options == null){
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
}else{
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
}
return bitmap;
}
这样返回的bitmap就可以被显示出来了。
关于Android ImageView-setAlpha(float)与setImageAlpha(int)的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android 4.3 ImageView ScaleType.MATRIX、Android CircleImageView圆形ImageView、Android CircleImageView圆形ImageView深入浅出、Android ImageView setImageBitmap 不显示图片等相关内容,可以在本站寻找。
本文标签: