2015-10-06 37 views
0

我想在Android Studio中爲我的圖像提供點擊效果。這個想法是,當你按下按鈕時應用一個顏色過濾器,然後在釋放按鈕之後顏色過濾器被清除。無法在Android中應用colorfilter?

我已經嘗試過使用hte OnTouch方法使用switch語句來做到這一點,但是當我打開應用程序時,它只是崩潰。

這裏是我的代碼:

{ 
    final ImageView DNIcon_id = (ImageView) findViewById(R.id.DNIcon_id); 
    DNIcon_id.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 


      sp.play(DN_id, 1, 1, 1, 0, 1); 
      switch (event.getAction()) { 

       case (MotionEvent.ACTION_BUTTON_PRESS): { 

        DNIcon_id.setColorFilter(Color.GRAY, PorterDuff.Mode.LIGHTEN); 
        break; 
       } 
       case (MotionEvent.ACTION_BUTTON_RELEASE): { 
        DNIcon_id.clearColorFilter(); 
        break; 
       } 

      } 
      return true; 


     } 

    }); 
} 
} 

如果你知道我在做什麼錯了,請告訴我。我真的很感激。

真誠,

維達爾

+0

有一個功能會自動爲您執行此操作。閱讀顏色狀態列表 - http://developer.android.com/guide/topics/resources/color-list-resource.html – NoChinDeluxe

回答

0

它添加到RES /價值/ colors.xml

<color name="opaque">#90FFFFFF</color> 

使RES /繪製/ overlay.xml,並把這個在它

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/opaque" android:state_pressed="true"/> 
    <item android:drawable="@android:color/transparent"/> 
</selector> 

這裏是一個如何使用i的例子在配色T

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="150dp" 
    android:layout_height="150dp"> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/your_image_here"/> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/overlay"/> 

</FrameLayout> 

注:

可以在顏色改變「90後」,使其或多或少不透明。請記住,它是十六進制的,所以完全不透明將是'FF'。此外,此解決方案假定您在應用中使用#FFFFFF作爲窗口背景。 「不透明」顏色的最後6位應該是您用作窗口背景的任何內容。

相關問題