【Android技巧】ImageButton 去邊框 & 添加按下效果
最近在寫一個程序,其中主界面用到了九宮格,由于本人菜鳥,就沒有自定義控件來實現了。而是偷懶使用ImageButton,但是問題也接踵而至。
- 為ImageButton添加圖片后,有邊框,看起來像是圖片貼在了一個按扭上面,要多丑有多丑。
解決辦法:網上查了一下有兩種,我采用的是設置其背景為透明:#0000
- 圖片全部弄好,添加好以后,點擊按扭木有按下效果。這個問題搞得我頭大了。網上找了很多方法,一個一個的試過,都不是很滿意。以下是網上比較流行的方法:
- 通過代碼實現,切換背景圖片。
- 通過XML實現,也是切換背景圖片。
- 顏色過濾。不用切換背景圖片,一段代碼,通通搞定。
- 原文:http://blog.csdn.net/sytzz/archive/2010/06/16/5673662.aspx
前面兩種雖然好用,但是顯然不可取啊,像作者說的一樣,每個按扭都寫一段代碼或者XML,并且每個按扭都要配兩張圖片。那不得搞死人啊。
于是我試著使用第三種方法,但是一點效果也木有啊。現在也不知道是為神馬。目前我認為可能是我把背景設為透明的原因。
然后又試著通過類似顏色過濾的方法,在代碼中設置背景的透明度。也是一點效果也木有。身為菜鳥我表示,不知道是什么情況,且壓力很大。
最終,算是找到了一個可以接受的效果:設置圖片的透明度。
ImageButton
1 imgButton.setOnTouchListener(new View.OnTouchListener() {
2
3 @Override
4 public boolean onTouch(View v, MotionEvent event) {
5 if(event.getAction()==MotionEvent.ACTION_DOWN){
6 imgButton.getDrawable().setAlpha(150);//設置圖片透明度0~255,0完全透明,255不透明
7 imgButton.invalidate();
8 }
9 else {
10 imgButton.getDrawable().setAlpha(255);//還原圖片
11 imgButton.invalidate();
12 }
13 return false;
14 }
15 });
好了,現在點擊按扭總算是有點反應了。
注意:
- ImageButton背景設為透明
- 第7行和第11行的invalidate()方法調用(重繪一下按鈕,不然還是木有反應,為了這個我還想了半天,最后終于想到重繪,謝天謝地...)
- 具體使用的時候不用每個按扭都寫一個Listener,直接把這個匿名的Listener給個名字。然后每個ImageButton都設成這個Listener就可以了。
- 搞定,收工。
Finish Whatever U've Started !!!



浙公網安備 33010602011771號