2012-02-22 4 views
0

私はこのようなイメージのリストを設定するGridView有する:透明画像とGridViewの位置を更新

public int[] tb = 
{ R.drawable.tb1, R.drawable.tb2, R.drawable.tb3, R.drawable.tb4, 
     R.drawable.tb5, R.drawable.tb6, R.drawable.tb7, R.drawable.tb8, 
     R.drawable.tb9, R.drawable.tb10, R.drawable.tb11, R.drawable.tb12, 
     R.drawable.tb13, R.drawable.tb14, R.drawable.tb15, R.drawable.tb16, 
     R.drawable.tb17, R.drawable.tb18 }; 

私は例えば、アレイ内の位置を変更することにより、特定の画像を更新する方法を知っているが

tb[2] = R.drawable.image; 

その後、

mAdapter.notifyDataSetChanged(); 

を使用してしかし、私の問題は、私はグリッドビューで画像を更新し、画像が透明であるので、αを設定したいです。今すぐ通常の画像表示では、それは簡単です

ImageView iv = (ImageView) findViewById(R.id.aTest); 
iv.setAlpha(127); 

しかし、これをグリッドビューの特定の画像にどのように適用しますか?イメージは一連のintとして格納され、イメージはImageAdapterを使用して適用されます。だから私はできないことを意味する

tb[0].setAlpha(127); 

画像ビューとして認識されないため、私は、私はアダプタAlphaでimageViewを設定することができますが、それはすべての画像が透明になることを意味し、選択されたいくつかの透明にすることを意味します

誰も私はそれを設定することができますリスト内の画像を透明にします。私はonClickItemListenerが設定されているので、グリッドビューのアイテムをクリックするとそのイメージが透明になるように設定しようとしています。

さまざまなソリューションを試してみましたが、動作するものが見つからないようです。誰かが私を正しい方向に向けることができれば、とても感謝しています!

+0

位置をクリックして透明イメージを設定したい場合 –

+0

現時点では、ただ機能しています。イメージは30分のタイムスロットですが、私は現時点でアレイと各タイムスロットにループを起こす方法があり、アクティブであるかどうかを判断し、インアクティブであればイメージをaやや色あせた画像。これはうまくいきますが、この退色した画像を透明にしたいので、この部分を理解する必要があります – AdamM

答えて

1

あり、これを解決する簡単な方法はありませんが、ここであなたが行く -

  • は、このようにあなたのAdapterであなたのgetViewを変更します。 (私はそうでなければ、1つを記述する必要があります、カスタムアダプタを持っていると仮定しています。これを行う方法で、このexampleを参照してください)

    public View getView(int position, View convertView, ViewGroup parent) {   
        ImageView imageView;   
        if (convertView == null) { 
         //create new image view 
        } else {    
         // resuse 
        }   
    
        imageView.setImageResource(mThumbIds[position]);  
    
        // new code starts 
        if(clickedLocation == position){ 
         imageView.setAlpha(alphaValue) 
        } 
        // new code ends 
    
        return imageView;  
    } 
    
  • ストアonClickListener

  • clickedLocationなどからのアイテムの位置今度は GridViewオブジェクトの invalidateViews()メソッドを呼び出します。

警告:(それについて移動する最良の方法ではないかもしれません)

  • あなたは全体GridView毎回クリックがあるが再描画されますあなたの場合は、ちらつき効果
  • が表示されることがありますリソースがjpgまたはpngの場合、毎回デコードする必要があります。
+0

ありがとうございます!!!あなたのコードは完全に機能しました。あの人を笑って、歓声をあげようとした時代を過ごした! – AdamM

関連する問題