2016-09-27 46 views
4

在點擊它之前,我想使用選定的圖像設置按鈕的效果,然後單擊效果在ImageView中應用相同的圖像,但是它的方式是,使用默認圖像,而不是選擇的圖像。如何在ImageButton中單擊效果前設置圖像

imgView = (ImageView) findViewById(R.id.imgView); 
    btnSepia = (ImageButton) findViewById(R.id.btnSepia); 

    BitmapDrawable abmp = (BitmapDrawable) imgView.getDrawable(); 
    bmp = abmp.getBitmap(); 

    mProgress = (ProgressBar) findViewById(R.id.progressBar); 
    mProgress.setVisibility(View.INVISIBLE); 

    Intent i = new Intent(
      Intent.ACTION_GET_CONTENT, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    i.setType("image/"); 

    startActivityForResult(i, RESULT_LOAD_IMAGE); 


    final Drawable resSepia = new BitmapDrawable(getResources(), bmp); 
    imgView.setImageDrawable(resSepia); 

    Handler handler = new Handler(); 

    final Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      if (resSepia == null) 
       return; 
      final ColorMatrix matrixA = new ColorMatrix(); 
      // making image B&W 
      matrixA.setSaturation(0); 

      final ColorMatrix matrixB = new ColorMatrix(); 
      // applying scales for RGB color values 
      matrixB.setScale(1f, .95f, .82f, 1.0f); 
      matrixA.setConcat(matrixB, matrixA); 

      final ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrixA); 
      resSepia.setColorFilter(filter); 

      btnSepia.setImageDrawable(resSepia); 
     } 
    }; 
    handler.postDelayed(r, 1000); 

btnSepia.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      imgView.setImageDrawable(resSepia); 

     } 
    }); 

Thanks();

對不起,我的英語不是我的母語。

回答

0

我無法得到你的問題,至於我能通過上面的描述得到的是你想要改變圖像的行動。

所以你可以使用選擇器,基本上不直接放置你的圖像源,而是在圖像源中使用選擇器。

要進行選擇,定義資源selector.xml,用這種方式: <selector>(指定XML選擇標籤),並在其下定義一個項目的標籤,這將具有以下特性

<selector> 
<item 
    android:state="<Give_State_HERE>" 
    android:drawable="<GIVE_Source_of_Your_Drawable_Here"/> 
</selector> 

試試這個,並將此xml指定爲您的img:source。,希望這有助於幫助

相關問題