2013-08-20 18 views
0

我是java/android新手,正在製作測試應用程序。它有ImageButtons,當點擊時暫時切換到不同的圖像。將原稿以activity_main.xml中 問題使用如何從setImageResource()調整第二個圖像的大小

android:adjustViewBounds="true" 
android:scaleType="centerCrop" 

裁剪是第二圖像裁剪未啓用,因此太大的按鈕。有誰知道我該如何解決這個問題?繼承人的一個按鈕的例子:

public void onClick(View v) { 

     //switch to second img 
butt2.setImageResource(R.drawable.newimg); 

//switch back to first after pause 

new Handler().postDelayed(new Runnable() { 

    public void run() { 

     butt2.setImageResource(R.drawable.orig); 


    } 

}, 500L); 

      }  
    }); 
+0

可能重複? http://stackoverflow.com/questions/13639773/crop-a-drawable-image-by-android-gallery-cropping-method –

+0

聽起來像你應該使用選擇器(即'StateListDrawable'),而不是手動切換圖像點擊事件。 –

回答

0

還有另外一種方式來嘗試這件事情,如果你要喜歡,當你點擊按鈕的背景應該改變當你釋放它的時候,背景會變成前一個。

這樣就可以實現在你的main.xml文件如下

現在你想顯示爲一個活動,在那裏你已宣佈的按鈕標籤,添加一條語句,

的android:背景=」 @繪製/ customDefaultBackground」

,它會像

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/customDefaultBackground" /> 

現在添加選擇標籤類型的XML文件,並將它命名爲customDefaul tBackground.xml,打開該文件,並添加下列內容: -

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" android:drawable="@drawable/onPressBackground" ></item> 
<item android:drawable="@drawable/defaultBackground"></item> 
</selector> 

與Android產品標籤:state_pressed設置爲true,表示當一個按鈕用戶點擊並按住不放的backgroundOnPressed版本將顯示,否則它會顯示默認背景。

+0

你需要爲每個按鈕單獨的xml文件嗎?如果他們有不同的圖像 – user718229

+0

是的,你應該有不同的xmls,因爲你要爲每個按鈕設置不同的背景。如果你想爲每個按鈕有相同的背景,你可以使用一個xml。 –

+0

我希望這對你有好處。 –

2

我已經使用了以下

int normal[] = { R.drawable.num0, R.drawable.num1, R.drawable.num2, 
      R.drawable.num3, R.drawable.num4, R.drawable.num5, 
      R.drawable.num6, R.drawable.num7, R.drawable.num8, 
      R.drawable.num9, R.drawable.del, R.drawable.go }; 
    int pressed[] = { R.drawable.num0_clicked, R.drawable.num1_clicked, 
      R.drawable.num2_clicked, R.drawable.num3_clicked, 
      R.drawable.num4_clicked, R.drawable.num5_clicked, 
      R.drawable.num6_clicked, R.drawable.num7_clicked, 
      R.drawable.num8_clicked, R.drawable.num9_clicked, 
      R.drawable.del_clicked, R.drawable.go_clicked }; 
        StateListDrawable sld; 
        for (int i = 0; i < 12; i++) { 
      sld = new StateListDrawable(); 
      sld.addState(new int[] { android.R.attr.state_pressed }, 
        getResources().getDrawable(pressed[i])); 
      sld.addState(new int[] {}, getResources().getDrawable(normal[i])); 
      btns[i].setImageDrawable(sld); 
     }