Android - 更改由onClick事件触发的LayerDrawable项的Alpha值

时间:2011-12-25 10:33:07

标签: android layer

一个新手问题。

我正在尝试更改alpha valuebitmap item的{​​{1}}。

我的layer-list如下:

drawable xml

我的<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/img_btn" android:gravity="center"/> </item> <item> <bitmap android:src="@drawable/image_frame" android:gravity="center"/> </item> </layer-list> 如下:

MainActivity

第一次调用public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainApp.show(this); addListeners(); changeAlpha(128); } private void changeAlpha(int opc){ ImageView img = (ImageView) findViewById(R.id.img_A); LayerDrawable layer = (LayerDrawable) img.getDrawable(); BitmapDrawable bg = (BitmapDrawable) layer.getDrawable(0); bg.setAlpha(opc); } private void addListeners() { ImageView img = (ImageView) findViewById(R.id.img_A); View.OnClickListener imageAClickListener = new View.OnClickListener() { public void onClick(View view) { changeAlpha(255); } }; img.setOnClickListener(imageAClickListener); } public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(Definitions.CONFIRM_EXIT) .setCancelable(false) .setPositiveButton(Definitions.YES, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MainActivity.this.finish(); } }) .setNegativeButton(Definitions.NO, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } } (来自changeAlpha)工作得很好,但是当我从onCreate事件中调用该方法时,它什么也没做(没有失败)

我错过了什么?

2 个答案:

答案 0 :(得分:2)

尝试添加

img.invalidate();

到changeAlpha()方法的最后一行。

答案 1 :(得分:1)

在某些情况下,您应该致电img.setImageDrawable(layer),这将导致重新投放。