package com.andbase.demo.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.ab.view.app.AbRotate3dAnimation2;
import com.andbase.R;
/**
*
* © 2012 amsoft.cn
* 名称:Rotate3DActivity2.java
* 描述:3d旋转View
* @author 原作者 QQ:250333410
* @date:2013-12-11 上午11:34:16
* @version v1.0
*/
public class Rotate3DActivity2 extends Activity {
private int mCenterX = 160;
private int mCenterY = 0;
//A
private ViewGroup layoutFront;
//C
private ViewGroup layoutBack;
//B
private ViewGroup layoutRight;
//D
private ViewGroup layoutLeft;
private AbRotate3dAnimation2 leftAnimation;
private AbRotate3dAnimation2 rightAnimation;
private int toLeft = 0;
private int toRight = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//显示front
setContentView(R.layout.layout_front);
//显示正面
layoutFront = (ViewGroup)findViewById(R.id.layout_front);
Button leftBtn = (Button)findViewById(R.id.front_leftBtn);
Button rightBtn = (Button)findViewById(R.id.front_rightBtn);
leftBtn.setEnabled(true);
rightBtn.setEnabled(true);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
frontMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
frontMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//左旋转
public void initFirst(){
leftAnimation = new AbRotate3dAnimation2(0, -90, 0.0f, 0.0f, mCenterX, mCenterY);
rightAnimation = new AbRotate3dAnimation2(90, 0, 0.0f, 0.0f, mCenterX, mCenterY);
leftAnimation.setFillAfter(true);
leftAnimation.setDuration(1000);
rightAnimation.setFillAfter(true);
rightAnimation.setDuration(1000);
}
//右旋转
public void initSecond(){
leftAnimation = new AbRotate3dAnimation2(-90, 0, 0.0f, 0.0f, mCenterX, mCenterY);
rightAnimation = new AbRotate3dAnimation2(0, 90, 0.0f, 0.0f, mCenterX, mCenterY);
leftAnimation.setFillAfter(true);
leftAnimation.setDuration(1000);
rightAnimation.setFillAfter(true);
rightAnimation.setDuration(1000);
}
//B面转到A面所在位置
public void B2A(AbRotate3dAnimation2 rightAnimation){
setContentView(R.layout.layout_right);
layoutRight = (ViewGroup)findViewById(R.id.layout_right);
layoutRight.startAnimation(rightAnimation);
Button leftBtn = (Button)findViewById(R.id.right_leftBtn);
Button rightBtn = (Button)findViewById(R.id.right_rightBtn);
leftBtn.setEnabled(true); rightBtn.setEnabled(true);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
rightMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
rightMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//D面转到A面所在位置
public void D2A(AbRotate3dAnimation2 leftAnimation){
setContentView(R.layout.layout_left);
layoutLeft = (ViewGroup)findViewById(R.id.layout_left);
layoutLeft.startAnimation(leftAnimation);
Button leftBtn = (Button)findViewById(R.id.left_leftBtn);
Button rightBtn = (Button)findViewById(R.id.left_rightBtn);
leftBtn.setEnabled(true); rightBtn.setEnabled(true);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
leftMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
leftMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//A面转到D面所在位置
public void A2D(AbRotate3dAnimation2 rightAnimation){
setContentView(R.layout.layout_front);
layoutFront = (ViewGroup)findViewById(R.id.layout_front);
layoutFront.startAnimation(rightAnimation);
Button leftBtn = (Button)findViewById(R.id.front_leftBtn);
Button rightBtn = (Button)findViewById(R.id.front_rightBtn);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
frontMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
frontMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//C面转到D面所在位置
public void C2D(AbRotate3dAnimation2 leftAnimation){
setContentView(R.layout.layout_back);
layoutBack = (ViewGroup)findViewById(R.id.layout_back);
layoutBack.startAnimation(leftAnimation);
Button leftBtn = (Button)findViewById(R.id.back_leftBtn);
Button rightBtn = (Button)findViewById(R.id.back_rightBtn);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
backMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
backMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//C面转到B面所在位置
public void C2B(AbRotate3dAnimation2 rightAnimation){
setContentView(R.layout.layout_back);
layoutBack = (ViewGroup)findViewById(R.id.layout_back);
layoutBack.startAnimation(rightAnimation);
Button leftBtn = (Button)findViewById(R.id.back_leftBtn);
Button rightBtn = (Button)findViewById(R.id.back_rightBtn);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
backMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
backMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//A面转到B面所在位置
public void A2B(AbRotate3dAnimation2 leftAnimation){
setContentView(R.layout.layout_front);
layoutFront = (ViewGroup)findViewById(R.id.layout_front);
layoutFront.startAnimation(leftAnimation);
Button leftBtn = (Button)findViewById(R.id.front_leftBtn);
Button rightBtn = (Button)findViewById(R.id.front_rightBtn);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
frontMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
frontMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//D面转到C面所在位置
public void D2C(AbRotate3dAnimation2 rightAnimation){
setContentView(R.layout.layout_left);
layoutLeft = (ViewGroup)findViewById(R.id.layout_left);
layoutLeft.startAnimation(rightAnimation);
Button leftBtn = (Button)findViewById(R.id.left_leftBtn);
Button rightBtn = (Button)findViewById(R.id.left_rightBtn);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
leftMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
leftMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//B面转到C面所在位置
public void B2C(AbRotate3dAnimation2 leftAnimation){
setContentView(R.layout.layout_right);
layoutRight = (ViewGroup)findViewById(R.id.layout_right);
layoutRight.startAnimation(leftAnimation);
Button leftBtn = (Button)findViewById(R.id.right_leftBtn);
Button rightBtn = (Button)findViewById(R.id.right_rightBtn);
leftBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
rightMoveHandle(toRight);
v.setEnabled(false);
}
});
rightBtn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
rightMoveHandle(toLeft);
v.setEnabled(false);
}
});
}
//A在正面时
public void frontMoveHandle(int to){
if(to == toLeft){
initFirst();
layoutFront.startAnimation(leftAnimation);
B2A(rightAnimation);
}else if(to == toRight){
initSecond();
layoutFront.startAnimation(rightAnimation);
D2A(leftAnimation);
}
}
//B位于正面时
public void rightMoveHandle(int to){
if(to == toLeft){
initFirst();
layoutRight.startAnimation(leftAnimation);
C2B(rightAnimation);
}else if(to == toRight){
initSecond();
layoutRight.startAnimation(rightAnimation);
A2B(leftAnimation);
}
}
//D位于正面时
public void leftMoveHandle(int to){
if(to == toLeft){
initFirst();
layoutLeft.startAnimation(leftAnimation);
A2D(rightAnimation);
}else if(to == toRight){
initSecond();
layoutLeft.startAnimation(rightAnimation);
C2D(leftAnimation);
}
}
//C位于正面时
public void backMoveHandle(int to){
if(to == toLeft){
initFirst();
layoutBack.startAnimation(leftAnimation);
D2C(rightAnimation);
}else if(to == toRight){
initSecond();
layoutBack.startAnimation(rightAnimation);
B2C(leftAnimation);
}
}
}