2D翻转
视频http://www.jikexueyuan.com/course/341.html
activity_main.xml
<FrameLayout 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:id="@+id/root"
tools:context="com.example.card2d.MainActivity" >
<ImageView
android:id="@+id/ivA"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/background_1"/>
<ImageView
android:id="@+id/ivB"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/background_2"/>
</FrameLayout>MainActivity.java
public class MainActivity extends Activity {
//声明变量
private ImageView imageA;
private ImageView imageB;
private ScaleAnimation sato0=new ScaleAnimation(1,0,1,1,
Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
private ScaleAnimation sato1=new ScaleAnimation(0,1,1,1,
Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//调用初始化方法
initView();
//注册监听器,匿名内部类
findViewById(R.id.root).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//当点击图片的时候我们应该让A来进行执行
//启动动画,让它来加载图片A
//判断imageA是否是显示的
if(imageA.getVisibility()==View.VISIBLE){
//让imageA加载第一个动画
imageA.startAnimation(sato0);
}
else{
//让imageB加载第二个动画
imageB.startAnimation(sato0);
}
}
});
}
//让图片A显示,图片B隐藏
private void showImageA(){
imageA.setVisibility(View.VISIBLE);
imageB.setVisibility(View.INVISIBLE);
}
//让图片A隐藏,图片B显示
private void showImageB(){
imageA.setVisibility(View.INVISIBLE);
imageB.setVisibility(View.VISIBLE);
}
//写一个初始化方法,让A显示
private void initView(){
//获得对象引用
imageA=(ImageView)findViewById(R.id.ivA);
imageB=(ImageView)findViewById(R.id.ivB);
//让图片A显示
showImageA();
//给动画添加执行时间0.5秒
sato0.setDuration(500);
sato1.setDuration(500);
//给第一个动画添加一个监听事件,当第一个动画执行完毕后执行第二个动画
sato0.setAnimationListener(new Animation.AnimationListener() {
//动画开始执行触发
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
//动画重复执行触发
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
//动画停止执行触发
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
//监听第一个动画什么时候停止,停止了让它执行第二个
//判断第一个动画是否是显示的
if(imageA.getVisibility()==View.VISIBLE){
//因为这是结束的动画监听,如果第一个动画是显示的,
//那么我们需要将它隐藏,然后执行第二个动画
//将第一张动画清空
imageA.setAnimation(null);
//调用第二张动画
showImageB();
//同时给showB添加上动画效果
imageB.startAnimation(sato1);
}
else{//如果是第二张动画正在执行
//将第二张动画清空
imageB.setAnimation(null);
//调用第一张动画
showImageA();
//同时给showA添加上动画效果
imageA.startAnimation(sato1);
}
}
});
}
} 相关推荐
xfcyhades 2020-11-20
Michael 2020-11-03
业余架构师 2020-10-09
OuNuo0 2020-09-29
moses 2020-09-22
Angelia 2020-09-11
qinxu 2020-09-10
刘炳昭 2020-09-10
Nostalgiachild 2020-09-07
Nostalgiachild 2020-08-17
leavesC 2020-08-14
一青年 2020-08-13
AndroidAiStudy 2020-08-07
ydc0 2020-07-30