我通过使用AlphaAnimation
操纵其alpha级别来显示具有淡入淡出动画的布局。
目前的解决方案适用于我使用Gingerbread的两个设备和使用Froyo的设备。但是,它不适用于冰淇淋三明治?!
这是我的xml布局。
<LinearLayout
android:id="@+id/photoOptionBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:alpha="0"
android:background="@color/gpsBackground"
android:orientation="horizontal">
<ImageButton
android:id="@+id/displayShareBtn"
style="@android:style/Widget.Holo.Button.Borderless.Small"
android:background="@android:color/transparent"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:padding="20dp"
android:src="@drawable/share"
android:contentDescription="Share the picture"/>
<ImageButton
android:id="@+id/displayDiscardBtn"
style="@android:style/Widget.Holo.Button.Borderless.Small"
android:background="@android:color/transparent"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:padding="20dp"
android:src="@drawable/contentdiscard"
android:contentDescription="Discard Picture"/>
</LinearLayout>
这是我的onCreate方法,在加载时将alpha设置为0,因为在xml中完成时它不起作用...
AlphaAnimation alpha = new AlphaAnimation(0.0F, 0.0F);
alpha.setDuration(0); // Make animation instant
alpha.setFillAfter(true); // Tell it to persist after the animation ends
// And then on your layout
this._photoOptionsBar.startAnimation(alpha);
然后当我想表明时,我会打电话给以下人员。
public void showOptions() {
AlphaAnimation alpha = new AlphaAnimation(0.0F, 1.0F);
alpha.setDuration(PhotoDisplayFragment.FADE_DURATION); // Make animation instant
alpha.setFillAfter(true);
this._photoOptionsBar.startAnimation(alpha);
this._optionsShowing = true;
}
当我在IceCream三明治中加载它时,LinearLayout就在那里因为你可以点击按钮并执行它们的功能,并且正在调用要显示的功能但是我看不到它!
任何帮助都会很棒
答案 0 :(得分:6)
问题在于线性布局中的android:alpha=0
。要使工作正常,您必须将可见性属性设置为在布局xml中不可见。在开始alpha动画之前,请致电setVisibility(View.VISIBLE)
答案 1 :(得分:2)
我有同样的问题。
似乎有两个独立的alpha属性。 AlphaAnimation
更改一个,android:alpha
更改另一个。这两个属性都在ICS上使用,但在ICS之前忽略android:alpha
。
因此,如果您设置android:alpha="0"
并使用AlphaAnimation
来制作动画,那么在ICS之前它会正常工作,因为android:alpha
会被忽略。在ICS上,视图将始终不可见,因为AlphaAnimation
不会将android:alpha
从0更改。因此解决方案只是删除android:alpha="0"
行。
我不是百分之百确定这一点,但这就是它的表现。
我也认为这两个alpha的工作方式略有不同。当然,如果您使用半透明图像更改ImageView
的字母数据,则AlphaAnimation
比android:alpha
更糟糕。但是你无能为力。