Tas*_*eni 4 android android-animation
我在左上角有一个带有导航菜单的片段。在活动开始时,我想逐渐从菜单图标中滑出一个视图(我们称之为black_view)。
以下是我希望动画与下图一致的粗略细分:
我试过的:
我尝试通过使用TranslateAnimation来实现这一点。但是,black_view的整个长度出现在动画开始时,这不是我想要的。我还看到一对夫妇的滑动动画代码片段像这个和这个,但他们都遵循TranlateAnimation模型(与整个长度black_view显示瞬间)。
我怎样才能做到这一点?
PS:如果有任何我没有添加的重要细节,请告诉我。
通过Slide从Transition API. 只需使用TransitionManager.beginDelayedTransition方法然后将黑色视图的可见性从 更改GONE为VISIBLE。
import androidx.appcompat.app.AppCompatActivity;
import androidx.transition.Slide;
import androidx.transition.Transition;
import androidx.transition.TransitionManager;
public class MainActivity extends AppCompatActivity {
private ViewGroup parent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
parent = findViewById(R.id.parent);
parent.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
parent.getViewTreeObserver().removeOnPreDrawListener(this);
animate();
return true;
}
});
}
private void animate() {
View textView = findViewById(R.id.text);
Transition transition = new Slide(Gravity.LEFT);
transition.setDuration(2000);
transition.setStartDelay(1000);
TransitionManager.beginDelayedTransition(parent, transition);
textView.setVisibility(View.VISIBLE);
}
}
Run Code Online (Sandbox Code Playgroud)
活动_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="Button" />
<FrameLayout
android:id="@+id/parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/button">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000"
android:text="hello world"
android:textColor="#fff"
android:textSize="22sp"
android:visibility="gone" />
</FrameLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
结果:
这里的所有类都来自 androix 包,因此代码向后兼容。