前面在写 Android学习小demo(1)自定义View的时候,自定义的drawable
属性是指向 drawable 中的某一张图片,如下:
attrs.xml
<resources>
<declare-styleable name="CustomRotateView">
<attr name="drawable" format="reference"/>
<attr name="degree" format="float" />
<attr name="bgcolor" format="color" />
</declare-styleable>
</resources>
Layout xml
<com.example.apidemostudy.CustomRotateView
android:id="@+id/rotateView1"
android:layout_width="240dip"
android:layout_height="300dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
custom:bgcolor="#000000"
custom:degree="0"
custom:drawable="@drawable/photo1" />
当时在自定义View 中获取这个属性的时候,是直接返回一个Drawable 属性,然后再将其转成一个Bitmap 的,代码如下:
Drawable drawable = typedArray.getDrawable(R.styleable.CustomRotateView_drawable);
private Bitmap drawableToBitmap(Drawable drawable) {
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
drawable.draw(canvas);
return bitmap;
}
但其实有另外一种方法,在获取自定义的属性的的时候,可以利用typedArray 的 获取 资源ID (ResourceID) ,然后利用BitmapFactory 来创建Bitmap 的,代码如下:
int resId = typedArray.getResourceId(R.styleable.CustomRotateView_drawable, R.drawable.empty_photo);
mBitmap = BitmapFactory.decodeResource(getResources(), resId);
利用第二种方法,就不用自己再去写一个方法来将Drawable 转化成 Bitmap了。
分享到:
相关推荐
Drawable Bitmap之间的转化Drawable Bitmap之间的转化
Android自定义Drawable的代码例子。用于演示自定义Drawable的功能,包括自定义形状、自定义水印、自定义淡出等几种类型的Drawable。
Drawable Bitmap InputStream byte[]相互转化工具类,单例模式
文档中描述了Drawable Bitmap 几种转换方法供初学者使用。方法都是经过实践验证的。
自定义Drawable 实现图片圆角、圆形、椭圆形,帮助理解自定义Drawable; 自定义Drawable 实现图片圆角、圆形、椭圆形,帮助理解自定义Drawable;
通过自定义Drawable实现,圆角图片,和圆形图片.让自定义多一个方向!
巧用 Drawable 之实现一个最简单的自定义电池图标
自定义属性动画 详细介绍见:https://blog.csdn.net/lantianZMH01/article/details/80039200
1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象2、Canvas画布,绘图的...
Android Drawable、Bitmap、byte、灰度 转换
很多开发者表示,不知道Android的Drawable和Bitmap之间如何相关转换。下面Android123给大家两种比较简单高效的方法。 一、Bitmap转Drawable 代码如下: Bitmap bm=xxx; //xxx根据你的情况获取 BitmapDrawable bd...
DrawableStatesDemo 一个学习自定义Drawable以及学习DrawableState的demo #Author Wangjia55 () #效果图
自定义Drawable实现灵动的红鲤鱼动画,附:算法计算。
对于不同的屏幕密度、不同的设备方向,不同的语言和区域,都会涉及到备选 drawable 资源,下面这篇文章主要给你大家介绍了关于Android自定义Drawable之在Drawable中部指定透明区域的相关资料,需要的朋友可以参考下
自定义Drawable实现圆形图片和圆角图片,个人感觉挺简单的
Android Drawable、Bitmap、byte、灰度 之间的转换
Android Drawable和Bitmap的转换实例详解 通常我们需要通过代码去设置图片,就需要设置图片Bitmap和Drawable的转换,下面整理了几种方式 一、Bitmap转Drawable Bitmap bm=xxx; //xxx根据你的情况获取 ...
详细的介绍了android_Drawable、Bitmap、byte[]之间的转换 在android开发中非常实用