进阶六之Android UI介面之(介面3D旋转)

天道酬勤。也许你付出了不一定得到回报,,但不付出一定得不到回报。

本讲内容:介面3D旋转

示例一效果图:

下面是res/layout/activity_main.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:id="@+id/layout_main"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:gravity="center"android:textColor="#ff0000"android:text="@string/txt_main"/><LinearLayout android:layout_marginTop="50dip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:layout_gravity="center" ><Buttonandroid:id="@+id/main_last"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="上一頁"/><Buttonandroid:id="@+id/main_next"android:layout_marginLeft="50dip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下一頁"/></LinearLayout></LinearLayout>下面是res/layout/next.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:id="@+id/layout_next"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:gravity="center"android:textColor="#ff0000"android:text="@string/txt_next"/><LinearLayout android:layout_marginTop="5dip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:layout_gravity="center" ><Buttonandroid:id="@+id/next_last"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="上一頁"/><Buttonandroid:id="@+id/next_next"android:layout_marginLeft="50dip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下一頁"/></LinearLayout></LinearLayout>下面是res/values/string.xml 文件:

<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">Rotate3D</string><string name="hello_world">Hello world!</string><string name="action_settings">Settings</string><string name="txt_main">第一页\n\n珍爱生命</string><string name="txt_next">第二页\n远离IT</string></resources>下面是Rotate3D.java文件:

public class Rotate3D extends Animation {private float fromDegree;// 旋转起始角度private float toDegree;// 旋转终止角度private float mCenterX;// 旋转中心xprivate float mCenterY;// 旋转中心yprivate Camera mCamera;public Rotate3D(float fromDegree, float toDegree, float centerX, float centerY) {this.fromDegree = fromDegree;this.toDegree = toDegree;this.mCenterX = centerX;this.mCenterY = centerY;}@Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);mCamera = new Camera();}@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {final float FromDegree = fromDegree;float degrees = FromDegree + (toDegree – fromDegree) * interpolatedTime;// 旋转角度(angle)final float centerX = mCenterX;final float centerY = mCenterY;final Matrix matrix = t.getMatrix();if (degrees <= -76.0f) {degrees = -90.0f;mCamera.save();mCamera.rotateY(degrees);// 旋转mCamera.getMatrix(matrix);mCamera.restore();} else if (degrees >= 76.0f) {degrees = 90.0f;mCamera.save();mCamera.rotateY(degrees);mCamera.getMatrix(matrix);mCamera.restore();} else {mCamera.save();mCamera.translate(0, 0, centerX);// 位移xmCamera.rotateY(degrees);mCamera.translate(0, 0, -centerX);mCamera.getMatrix(matrix);mCamera.restore();}matrix.preTranslate(-centerX, -centerY);matrix.postTranslate(centerX, centerY);}}下面是MainActivity.java主界面文件:

谁是谁生命的点缀。

进阶六之Android UI介面之(介面3D旋转)

相关文章:

你感兴趣的文章:

标签云: