我正在尝试创建一个下拉动画。当用户点击指定的按钮@+id/btnToHideView时,我希望视图@+id/relativeLayoutControls下拉/滑动(VISIBLE / GONE)。
下面是布局文件的外观:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btnToHideView"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/hide_btn"
/>
<RelativeLayout
android:id="@+id/relativeLayoutControls"
android:layout_width="60dp"
android:layout_height="fill_parent"
android:layout_marginRight="6dp"
android:layout_marginEnd="6dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true">
//I have buttons in this layoout
</RelativeLayout>
</LinearLayout>这就是我尝试过的:
我在res/anim中创建了2个动画文件
slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1000"
android:fromYDelta="0"
android:toYDelta="100%" />
</set>slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1000"
android:fromYDelta="100%"
android:toYDelta="0" />
</set>然后我试着通过以下方法来处理这个问题:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
controlsHide = (RelativeLayout) findViewById(R.id.relativeLayoutControls);
final Animation slide_down = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.slide_down);
final Animation slide_up = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.slide_up);
btnToHideView = (Button) findViewById(R.id.btnToHideView);
btnToHideView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//I just did slide_up to test if its working
controlsHide.startAnimation(slide_up);
}
});我跟踪this post,但当我点击按钮什么都没有发生。在logcat中,它只打印ACTION_DOWN。
发布于 2017-07-21 08:02:17
请试试这个:
SlideUp:
Animation slideUp = AnimationUtils.loadAnimation(activity, R.anim.slide_up);
view.startAnimation(slideUp);slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromYDelta="100%"
android:toYDelta="0" />
</set>或
view.animate().translationY(0);下拉列表:
view.animate().translationY(view.getHeight());发布于 2021-04-22 10:53:14
这是我的源代码实现(refer here),您可以使用它们
// Initially hide/show the content view.
redLayout = mView.findViewById(R.id.history_operation);
//Load animation
slide_down = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_down);
slide_up = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_up);<translate
android:duration="500"
android:fromYDelta="-100%"
android:toYDelta="0" />和
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="-100%" />最后,调用切换函数来启动定义的动画。
private void toggle1() {
// Start animation
if(isFadeOut){
redLayout.startAnimation(slide_down);
}else {
redLayout.startAnimation(slide_up);
}
isFadeOut = !isFadeOut;
}https://stackoverflow.com/questions/45232111
复制相似问题