39.实现2D旋转效果
1.下载素材。
本节素材源码,请在公众号回复" AS12193 "。
2.修改activity_main.xml。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/image1"
android:src="@drawable/bac1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:id="@+id/image2"
android:src="@drawable/bac2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
3.修改MainActivity。
public class MainActivity extends Activity {
ImageView image1;
ImageView image2;
FrameLayout frameLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image1 = findViewById(R.id.image1);
image2 = findViewById(R.id.image2);
frameLayout = findViewById(R.id.frameLayout);
showA();
final ScaleAnimation scale1 = new ScaleAnimation(1, 0, 1, 1, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
final ScaleAnimation scale2 = new ScaleAnimation(0, 1, 1, 1, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
scale1.setDuration(1000);
scale2.setDuration(1000);
scale1.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (image1.getVisibility() == View.VISIBLE) {
image1.setAnimation(null);
showB();
image2.startAnimation(scale2);
} else {
image2.setAnimation(null);
showA();
image1.startAnimation(scale2);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
frameLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (image1.getVisibility() == View.VISIBLE) {
image1.startAnimation(scale1);
}else
image2.startAnimation(scale1);
}
});
}
void showA() {
image1.setVisibility(View.VISIBLE);
image2.setVisibility(View.INVISIBLE);
}
void showB() {
image2.setVisibility(View.VISIBLE);
image1.setVisibility(View.INVISIBLE);
}
}