我正在尝试创建一个应用,在第一个屏幕中,图像(应用程序的名称)飞入背景,并固定到某个位置。我是android的新手,非常感谢任何帮助。
我尝试过使用setAnimationListener()
:
public class Pageone extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
final ImageView imageView=(ImageView)findViewById(R.id.image);
Animation anim1 = new TranslateAnimation(0, 0, 1024, 824);
anim1.setDuration(3000);
anim1.setFillAfter(true);
anim1.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
Animation anim2 = new TranslateAnimation(0, 0, 824, 1024);
anim2.setDuration(3000);
anim2.setFillAfter(true);
imageView.clearAnimation();
imageView.startAnimation(anim2);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
imageView.startAnimation(anim1);
}
}
和xml页面为 -
<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="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.meeting.MainActivity$PlaceholderFragment"
android:background="@drawable/tapregister" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/meet"
/>
</RelativeLayout>'
在Android虚拟设备管理器中运行应用程序时,我发现图像已经固定,如布局部分所示。
答案 0 :(得分:0)
您不需要两个动画来完成您想要的操作。您只需要一个动画将ImageView从Bottom移动到屏幕中心。
因此,请删除anim1.setAnimationListener()
代码。将Ydelta值更改为从位置Y + 300(例如)开始,并在位置Y + 0(您的布局原始位置)结束。这会将您的ImageView放在屏幕底部,比初始位置低300 px并将其移动到中心,这就是您的布局初始位置。像这样:
final ImageView imageView=(ImageView)findViewById(R.id.image);
Animation anim1 = new TranslateAnimation(0,0,300,0);
anim1.setDuration(3000);
anim1.setFillAfter(true);
imageView.startAnimation(anim1);