在没有setAlpha的ImageView上设置alpha

时间:2012-03-13 21:06:05

标签: android imageview alpha

我是否可以通过编程方式设置ImageView的alpha,而无需依赖于引入setAlpha的API级别11?

4 个答案:

答案 0 :(得分:40)

ImageView自API级别1开始有setAlpha(int)方法。因此您可以在任何API级别使用它。
它是setAlpha(float)View方法,在API级别11中引入。

答案 1 :(得分:4)

我使用代码来设置图像本身的Alpha,而不是视图。这可以从API级别1 ..

获得
public void toggleButton(int i) {
    if (indImageBtnEnabled[i]) {

        int di = getDrawableId(findViewById(myImagebtns[i]));
        Drawable d = this.getResources().getDrawable(di);
        d.setAlpha(25);

        ((ImageView) findViewById(myImagebtns[i])).setImageDrawable(d);

        indImageBtnEnabled[i] = false;
    } else {
        // findViewById(myImagebtns[i]).setAlpha(1f) << NEEDS API11;
        int di = getDrawableId(findViewById(myImagebtns[i]));
        Drawable d = this.getResources().getDrawable(di);
        d.setAlpha(255);

        ((ImageView) findViewById(myImagebtns[i])).setImageDrawable(d);

        indImageBtnEnabled[i] = true;
    }
}

答案 2 :(得分:2)

我认为(但不确定)您可以将Alpha动画应用于ImageView,只要在动画中将fillAfter()设置为true,Image就应该保持在它结束的任何alpha级别在

答案 3 :(得分:2)

您可以仅使用图片制作新的布局,设置布局所需的Alpha,将其设置为叠加层并在需要时进行充气。

LayoutInflater inflater = LayoutInflater.from(this);
        View overView = inflater.inflate(R.layout.myAlpahImageLayout, null);
        this.addContentView(overView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:alpha="0.5"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/myImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/myImage1" />

</RelativeLayout>