基于Android实现3D翻页效果

2019-12-10 17:55:14于丽

如果你不需要沉降效果那么你把下面的代码删除掉即可:

if (mReverse) { 
  // 正向改变Z轴角度 
  camera.translate(0.0f, 0.0f, mDepthz * interpolatedTime); 
 } else { 
  // 反向改变Z轴角度 
  camera.translate(0.0f, 0.0f, mDepthz * (1.0f - interpolatedTime)); 
 } 

好了核心代码已经上完,下面是主界面代码:

package com.test.rotateanimation; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.FrameLayout; 
import android.widget.LinearLayout; 
 
import com.test.view.RotateAnimationUtil; 
 
public class MainActivity extends Activity { 
 
 private FrameLayout container; 
 
 private LinearLayout container1; 
 
 private LinearLayout container2; 
 
 private RotateAnimationUtil rotateAnimationUtil; 
 
 private Button bt_towhile; 
 
 private Button bt_toblack; 
 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 initView(); 
 
 bt_towhile.setOnClickListener(new View.OnClickListener() { 
 
  @Override 
  public void onClick(View v) { 
  rotateAnimationUtil.applyRotateAnimation(1, 0, 90); 
  } 
 }); 
 bt_toblack.setOnClickListener(new View.OnClickListener() { 
 
  @Override 
  public void onClick(View v) { 
  rotateAnimationUtil.applyRotateAnimation(-1, 0, -90); 
  } 
 }); 
 
 // 设置当前View控件的缓存 
 container 
  .setPersistentDrawingCache(ViewGroup.PERSISTENT_ANIMATION_CACHE); 
 } 
 
 private void initView() { 
 container = (FrameLayout) findViewById(R.id.container); 
 bt_toblack = (Button) findViewById(R.id.bt_toblack); 
 bt_towhile = (Button) findViewById(R.id.bt_towhile); 
 
 container1 = (LinearLayout) findViewById(R.id.container1); 
 container2 = (LinearLayout) findViewById(R.id.container2); 
 
 rotateAnimationUtil = new RotateAnimationUtil(container, container1, 
  container2); 
 } 
 
 @Override 
 public boolean onCreateOptionsMenu(Menu menu) { 
 getMenuInflater().inflate(R.menu.activity_main, menu); 
 return true; 
 } 
 
}