gpt4 book ai didi

Android使用动画增长LinearLayout

转载 作者:IT老高 更新时间:2023-10-28 23:40:01 26 4
gpt4 key购买 nike

我正在尝试使用动画使布局出现在屏幕上。这个想法是布局将从高度 0 开始并增长到 100%。

我在这方面确实遇到了麻烦,需要一些帮助。由于某种原因,没有执行动画。

这是我的动画 XML 文件

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1"
android:fromYScale="1.0"
android:toYScale="1.0"
android:fillAfter="false"
/>

</set>

布局文件很基础,设计如下

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
android:id="@+id/dialog"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:layout_centerVertical="true"
android:background="@drawable/border">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Phone"
android:id="@+id/textView"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Address"
android:id="@+id/textView1"/>
<Button android:id="@+id/btn1"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Action 1"
/>
<Button android:id="@+id/btn2"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Action 2"
/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Animate"
android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
android:onClick="animate"/>
</RelativeLayout>

我的 Activity 代码也很基本

public class MyActivity extends Activity implements Animation.AnimationListener{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public void animate(View view){
LinearLayout dialog = (LinearLayout)findViewById(R.id.dialog);
dialog.setVisibility(LinearLayout.VISIBLE);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim);
Log.i("animate","Begin Animation");
animation.reset();
// animation.setFillAfter(true);
animation.setAnimationListener(this);
dialog.setAnimation(null);
Log.i("animate","End Animation");
}

@Override
public void onAnimationStart(Animation animation) {
//To change body of implemented methods use File | Settings | File Templates.
}

@Override
public void onAnimationEnd(Animation animation) {
//To change body of implemented methods use File | Settings | File Templates.
}

@Override
public void onAnimationRepeat(Animation animation) {
//To change body of implemented methods use File | Settings | File Templates.
}
}

谢谢

最佳答案

好的,我想通了。

动画 XML 布局

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillEnabled="true"
android:fillAfter="true">
<scale

android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:fillAfter="false"
/>

</set>

布局 XML 文件

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
android:id="@+id/dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:layout_centerVertical="true"
android:visibility="invisible"
android:background="@drawable/border">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Phone"
android:id="@+id/textView"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Address"
android:id="@+id/textView1"/>
<Button android:id="@+id/btn1"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Action 1"
/>
<Button android:id="@+id/btn2"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Action 2"
/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Animate"
android:id="@+id/btnAnimate" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
android:onClick="animate"/>
</RelativeLayout>

还有我的 Activity 课

public class MyActivity extends Activity{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public void animate(View view){
LinearLayout dialog = (LinearLayout)findViewById(R.id.dialog);
dialog.setVisibility(LinearLayout.VISIBLE);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim);
animation.setDuration(500);
dialog.setAnimation(animation);
dialog.animate();
animation.start();
}

}

关于Android使用动画增长LinearLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com