我使用的布局与此类似:
<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="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:paddingRight="5dp"
android:paddingBottom="5dp"
android:background="@drawable/list_item_background"
android:descendantFocusability="blocksDescendants"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:textColor="#000000"
android:textSize="35sp"
android:text="18:15" />
<!-- some more views on the right side-->
<RelativeLayout
android:id="@+id/relativeLayoutActive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/textView1">
<!-- contains several other views, a RelativeLayout and a FrameLayout-->
</RelativeLayout>
</RelativeLayout>
现在我想在布局上执行两个动画:
relativeLayoutActive
(AlphaAnimation)并将右侧的所有视图翻译为左侧relativeLayoutActive
并将所有视图翻译回左侧以下是我用于动画的代码:
public void activate(boolean isActive){
if(!this.active && isActive && checkIfActivatable()){ // start animation 2
if(animating)
return;
animating = true;
animatingActive = isActive;
rootView.addView(relativeLayoutActive);
translate(rootView, clock, true);
fade(relativeLayoutActive, true, 1, 0, null, this, false);
//...
}else if(this.active && !isActive){ // start Animation 1
if(animating)
return;
animating = true;
animatingActive = isActive;
translate(rootView, clock, false);
fade(relativeLayoutActive, false, 1, 0, null, this, false);
//...
view.removeView(relativeLayoutActive);
}
}
private void translate(View targetParent, View target, boolean right){
Animation a = new TranslateAnimation(0.0f,
(right?1:-1)*(targetParent.getWidth() - target.getWidth() - view.getPaddingLeft() -
view.getPaddingRight()), 0.0f, 0.0f);
a.setDuration(500);
a.setInterpolator(AnimationUtils.loadInterpolator(getContext(),
android.R.anim.decelerate_interpolator));
a.setFillAfter(true);
target.startAnimation(a);
}
private void fade(View target, boolean in, float inValue, float outValue, AnimationSet as, AnimationListener listener, boolean useAs){
Animation a = new AlphaAnimation(in?outValue:inValue, in?inValue:outValue);
a.setDuration(500);
a.setFillAfter(true);
if(listener!=null){
a.setAnimationListener(listener);
}
if(!useAs)
target.startAnimation(a);
else{
as.addAnimation(a);
target.startAnimation(as);
}
}
当动画结束时,通过调用view.clearAnimations()并设置正确的layoutParams,动画更改成为永久性的。
动画1可以完美地工作,但动画2不能。除了relativeLayoutActive
的淡入,其他一切都正常工作。直到动画结束,relativeLayoutActive
才可见,即在动画期间,relativeLayoutActive
不可见。
我认为这是因为RelativeLayout
不能处理重叠,并且因为relativeLayoutActive
在2.的开头被覆盖在视图中,直到动画结束才可见
我该怎么解决这个问题?
当做
看来你的问题源于视图/视图组的z排序。
我认为这是因为RelativeLayout不能处理重叠,并且因为relativeLayoutActive在2.0开始时被覆盖在视图中,直到动画结束才可见
我不确定你说的重叠
是什么意思。但是你可以调用:
relativeLayoutActive.bringToFront();
要更改/修复z排序。您需要在以下位置调用:
rootView.addView(relativeLayoutActive);
下面是View#bringToFrond()
所做的:
公共空隙
更改视图在树中的z顺序,使其位于其他同级视图的顶部。如果父容器使用依赖于顺序的布局方案(例如,LinearLayout),则此顺序更改可能会影响布局。在KITKAT之前,此方法应在视图的父级上调用请求布局()和无效(),以强制父级用新的子级顺序重新绘制。
此外,如果您使用的是API 11及以上版本,我建议您使用android较新的动画框架。它经过高度优化,提供了更好的用户体验。链接
问题内容: 我有一个表,该表具有指向两个不同表的两个外键,两个外键 共享一个列 : 如您所见,有两个FK共享country_code(恰好在引用路径的末尾引用同一列)。实体类看起来像(JPA 1.0 @IdClass): 如您所见,我将countryCode属性和城市的country_code @JoinColumn标记为只读(insertable = false,可更新= false)。Hibe
我有一个简单的平原(正方形),上面有灯光和材料,我想在上面放一个地球纹理。但是什么都没有出现。我检查过,认为它正确加载了RGB数据,所以我的猜测是这一行有问题(数据是*char,图像是BMP24) 这是一个例子。bmp加载功能: 以下是主要和显示功能: 我玩过代码,有时(当我使用int而不是char*时)我会得到一个红色的材料覆盖所有内容,但不知道到底是什么导致了它 更新:必须更改几行才能正常工作
我想在我的玩家剑上创建一个碰撞体,如果他攻击,他会检测到,并通过动画事件关闭/打开一个名为(伤害点)的游戏对象,这是一个附加的脚本,可以减去敌人的生命值。但是在某个地方它不能正确检测到。我试图添加OnDrawGizmos函数来查看我的球体对撞机,但即使将其变大,它也无法检测到。 我的问题最奇怪的是,我对我的怪物箱子和我的幻想玩家使用相同的代码,但对箱子有效,但对玩家无效。 我创建了一个名为 Pla
我正在构建一个Java应用程序。这个应用程序是一个典型的“油漆”应用程序,你可以选择一种颜色,并在画布上绘制。除了...我将有一个圆圈数组分布在画布的顶部。我希望这些圆立即改变颜色,如果,当用户正在绘制和鼠标得到圆的X(10)个像素(其中X是绘制的线的宽度除以2)。 这是我的密码。我有一张画布是一组的一部分。我还创建了一个圆圈节点,并将其作为组的一部分。我想我需要以某种方式创建一个鼠标事件,当用户
河楼 我试图配置Hibernate本地开发与HSQL数据库,但我被困在Spring不处理事务。 配置数据源,会话工厂等... 本地环境具有hibernate配置的属性文件 引发异常的代码的调用点 调用人员Dao.saveOrUpdate()后打印的堆栈跟踪 我已经尝试过的 在HibernateTransactionManager/DatasourceTransactionManager之间切换 属
我知道Bellman-Ford算法可以很好地处理负权重图,但我开发了一个Dijkstra算法代码,它工作得非常好。但当我插入负加权边时,它失败了。有解决办法吗?