10

に設定された背景画像がありImageViewます。今、画像の不透明度を変更したいので、ImageViewの不透明度を変更するためにこのコードを書きますが、そうすると画像ビューから背景画像が削除されます。私の質問は、背景画像を削除せずに ImageView の不透明度を変更する方法です。

私が使用したコードは次のとおりです。

ImageView imageView = (ImageView) findViewById(R.id.image_view);

imageView.setBackgroundResource(R.drawable.theme1_page_header); // Set background image

int opacity = 100; // from 0 to 255
imageView.setBackgroundColor(opacity * 0x1000000); // change opacity of image
4

7 に答える 7

32

alpha の最も重要な部分は、値が 10 進数でなければならないことです。

0 = 透明、1 = 可視

したがって、0.5 は途中で表示されます

あなたができるXMLで

<ImageView
        android:layout_width="30dp"
        android:layout_height="35dp"
        android:id="@+id/imageView"
        android:alpha="0.4" // <-----------------  this is the fun part
        android:layout_alignParentRight="false"
        android:background="@drawable/imagename"
        android:layout_alignParentLeft="false"
        android:layout_alignParentTop="false"
        android:layout_alignWithParentIfMissing="false"
        android:layout_marginLeft="100dp"
        android:layout_alignParentBottom="false"
        android:layout_alignParentStart="false"
        android:layout_alignTop="@+id/bar"
        android:layout_marginTop="30dp"/>
于 2013-08-25T20:50:09.093 に答える
11

使用できます

imageView.setAlpha(yourValue); //  some value 0-255 where 0 is fully transparent and 255 is fully opaque

ドキュメントを見る

于 2012-12-11T11:28:06.350 に答える
5
ImageView imageView = (ImageView) findViewById(R.id.image_view);
Drawable dPage_header= getResources().getDrawable(R.drawable.theme1_page_header);

// setting the opacity (alpha)
dPage_header.setAlpha(10);

// setting the images on the ImageViews
imageView.setImageDrawable(dPage_header);
于 2012-12-11T11:28:17.273 に答える
2

API >=16 の場合。setAlpha は今後非推奨になるため、setImageAlpha を実践として使用してください。`

ImageView.setAlpha(int)混乱を避けるために行ってきrenamedました。ImageView.setImageAlpha(int)詳細説明はこちら

于 2016-12-22T05:52:46.080 に答える
0

オプション1

を使用しimageView.setAlpha(100)ます。

Android 2.3 を使用している場合は、nineolddroids を使用して長さゼロのアニメーションで恐ろしいハックを行う必要があります。

オプション 2

そのメソッドをサブクラスImageView化してオーバーライドしonDraw()、イメージを透過的に描画します。

オプション 3

を使用して実際に画像のピクセルを変更しget/setPixel()ます。ただし、これは非常に遅くなります。これを行うには、おそらくより高速な方法があります (たとえば、renderscript を使用)。

于 2012-12-11T11:29:09.443 に答える