Android:以编程方式创建的图像与资源图像

时间:2016-02-06 14:01:19

标签: android image resources drawing drawable

1)是否可以创建可绘制的示例

static Bitmap.Config conf = Bitmap.Config.ARGB_8888;
static Bitmap bmp = Bitmap.createBitmap(100, 100, conf);
// something draw
// eventually convert to DrawableBitmap

然后将其/ asiggn转换为/ put in 资源,以在资源ID参数的函数中使用,如:

public void setWidgetLayoutResource (int widgetLayoutResId)


2)是否可以动态绘制以更改R.drawable.something.bmp中的图像?

这一切都是为了将​​setWidgetLayoutResource()中widget的颜色更改为任何颜色,而不是固定为具体资源的颜色

1 个答案:

答案 0 :(得分:0)

我自己的回答

这个问题与我的其他问题有关:Android PreferenceScreen 而且我是这样做的:

ColorLinesView.java

public class ColorLinesView extends View
{
    private static GradientDrawable gdDefault = new GradientDrawable();
    public static int fillColor;

    public ColorLinesView(Context context, AttributeSet attrs)
    {   super(context, attrs);
    }

    @Override protected void onDraw(Canvas cv) 
    {   
       gdDefault.setColor(fillColor);
       gdDefault.setCornerRadius(4);
       gdDefault.setStroke(2, 0xffbbbbbb);
       this.setBackgroundDrawable(gdDefault);
    }
}

<强> color_lines_accesory.xml

<?xml version="1.0" encoding="utf-8"?>
<android.swp.ColorLinesView xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/colorBoxLines"
 android:layout_width="52dp"
 android:layout_height="26dp"
 android:gravity="right"
 android:layout_marginRight="6dp" />

最后以编程方式创建PreferenceScreen,添加类别首选项&#34; somePref&#34;:

ColorLinesView.fillColor = 0xff00ff00; // examply green
somePref.setWidgetLayoutResource(R.layout.color_lines_accesory);

和OnPreferenceClickListener()中相同的两行(带有新颜色)用于&#34; somePref&#34;类别,使用颜色选择器改变颜色。

结果:

enter image description here