一個新手問題。Android - 更改由onClick事件觸發的LayerDrawable項目的Alpha值
我試圖在layer-list
內更改bitmap item
的alpha value
。
我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
)第一次調用工作得很好,但是當我打電話從方法click
事件它什麼也沒做(沒有失敗)
我錯過了什麼?
謝謝!那個技巧 – 2011-12-25 12:19:11
很酷!我希望你明白問題所在。重繪是需要的。當您在onCreate中設置它時,圖像會自動呈現第一次。但後來當你修改它時,你必須重新繪製它。經典的java有一個很好的方法叫做repaint()。 Android採取更加被動的方式我猜:P:P:P – Shaunak 2011-12-25 12:25:20
再次感謝您的闡述,我猜想這是問題所在。 – 2011-12-25 15:59:52