layout 布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="shortcut.song.com.myapplication.ListViewTweenActivity">    <ListView        android:id="@+id/id_list_3d"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:entries="@array/books"/>LinearLayout>

自定义的Animation

package shortcut.song.com.myapplication;import android.graphics.Camera;import android.graphics.Matrix;import android.view.animation.Animation;import android.view.animation.LinearInterpolator;import android.view.animation.Transformation;/** * Created by Administrator on 2017/8/1 0001. */public class MyAnimation extends Animation {    private float centerX;    private float centerY;    //定义动画的持续时间    private int duration;    private Camera camera = new Camera();    public MyAnimation(float x, float y, int duration)    {        this.centerX = x;        this.centerY = y;        this.duration = duration;    }    @Override    public void initialize(int width, int height, int parentWidth, int parentHeight) {        super.initialize(width, height, parentWidth, parentHeight);        setDuration(duration);//设置动画的持续时间        setFillAfter(true); //设置动画结束后效果        setInterpolator(new LinearInterpolator());    }    /*    *   interpolatedTime:代表了抽象的动画持续时间,不管动画实际持续多长时间,interpolatedTime参数总是从0(动画开始时)变化到1(动画结束时)    *   Transformation:代表了对目标组件所做的改变    *     */    @Override    protected void applyTransformation(float interpolatedTime, Transformation t) {        super.applyTransformation(interpolatedTime, t);        camera.save();        //根据interpolateTime时间来控制X,Y,Z上的偏移        camera.translate(100.0f - 100.0f * interpolatedTime, 150.0f * interpolatedTime - 150, 80.0f - 80.0f * interpolatedTime );        //根据interpolateTime时间在Y轴上旋转不同角度        camera.rotateY(360 * (interpolatedTime));        //根据interpolateTime时间在X轴上旋转不同角度        camera.rotateX(360 * (interpolatedTime));        //获取Transformation的Matrix参数        Matrix matrix = t.getMatrix();        camera.getMatrix(matrix);        matrix.preTranslate(-centerX, -centerY);        matrix.postTranslate(centerX, centerY);        camera.restore();    }}
package shortcut.song.com.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.Display;import android.view.WindowManager;import android.widget.ListView;public class ListViewTweenActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_list_view_tween);        ListView listView = (ListView)findViewById(R.id.id_list_3d);        WindowManager windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);        Display display = windowManager.getDefaultDisplay();        DisplayMetrics  metrics = new DisplayMetrics();        display.getMetrics(metrics);        //设置对ListView组件应用动画        listView.startAnimation(new MyAnimation(metrics.xdpi / 2, metrics.ydpi / 2, 3500));    }}

运行效果:

更多相关文章

  1. 【android】简单的根据url下载图片的一个类
  2. Android显示GIF动画完整示例(一)
  3. android图片切换ImageSwichter的动画切换效果
  4. android Animation介绍
  5. Android(安卓)animation - 文字旋转示例
  6. [Android] Android(安卓)Tweened Animations动画使用详解二
  7. Android(安卓)动画
  8. Android之Spinner解析
  9. interpolator

随机推荐

  1. android无需Root手机,使用Android(安卓)St
  2. Android(安卓)面试的重点要点题,快来了解
  3. android中图片色调识别探究
  4. Android多进程间采用AIDL方式进行通信简
  5. android api code 学习之FaceDetector
  6. Android(安卓)TV开发总结(二)构建一个TV Me
  7. Android(安卓)四大组件之 Service
  8. Smobiler如何实现.net一键开发,ios和andr
  9. Android(安卓)OpenGLES2.0(十一)——利用Op
  10. android程序打包apk(签名的作用)