Android控件Tween动画Demo

来源:互联网 发布:非农数据 白银 编辑:程序博客网 时间:2024/05/22 05:33
 Android动画中的Tween动画:是把控件对象不断的进行图像变化来产生旋转、平移、放缩和渐变等动画效果。
/** * 控件Tween动画 *  * @description: * @author ldm * @date 2016-6-22 下午5:26:24 */public class TweenActivity extends Activity {    private SeekBar seekBarX;// 拖动条控件    private SeekBar seekBarY;    private SeekBar scaleSeekBarX;    private SeekBar scaleSeekBarY;    private SeekBar rotationSeekBarX;    private SeekBar rotationSeekBarY;    private SeekBar rotationSeekBarZ;    private Button button;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_tween);        initViews();        initEvents();    }    /**     *      * @description:初始化控件     * @author ldm     * @date 2016-6-22 下午5:26:26     */    private void initViews() {        button = (Button) findViewById(R.id.button);        seekBarX = (SeekBar) findViewById(R.id.translationX);        seekBarX.setMax(400);        seekBarY = (SeekBar) findViewById(R.id.translationY);        seekBarY.setMax(800);        scaleSeekBarX = (SeekBar) findViewById(R.id.scaleX);        scaleSeekBarX.setMax(50);        scaleSeekBarX.setProgress(10);        scaleSeekBarY = (SeekBar) findViewById(R.id.scaleY);        scaleSeekBarY.setMax(50);        scaleSeekBarY.setProgress(10);        rotationSeekBarX = (SeekBar) findViewById(R.id.rotationX);        rotationSeekBarX.setMax(360);        rotationSeekBarY = (SeekBar) findViewById(R.id.rotationY);        rotationSeekBarY.setMax(360);        rotationSeekBarZ = (SeekBar) findViewById(R.id.rotationZ);        rotationSeekBarZ.setMax(360);    }    /**     *      * @description:控件设置监听事件     * @author ldm     * @date 2016-6-22 下午5:26:26     */    private void initEvents() {        // 按钮X方向平移动画        seekBarX.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            public void onStopTrackingTouch(SeekBar seekBar) {            }            public void onStartTrackingTouch(SeekBar seekBar) {            }            public void onProgressChanged(SeekBar seekBar, int progress,                    boolean fromUser) {                // X方向平移                button.setTranslationX((float) progress);            }        });        // 按钮Y方向平移动画        seekBarY.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            public void onStopTrackingTouch(SeekBar seekBar) {            }            public void onStartTrackingTouch(SeekBar seekBar) {            }            public void onProgressChanged(SeekBar seekBar, int progress,                    boolean fromUser) {                // Y方向平移                button.setTranslationY((float) progress);            }        });        // 按钮X方向缩放动画        scaleSeekBarX                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                    public void onStopTrackingTouch(SeekBar seekBar) {                    }                    public void onStartTrackingTouch(SeekBar seekBar) {                    }                    public void onProgressChanged(SeekBar seekBar,                            int progress, boolean fromUser) {                        // X方向缩放                        button.setScaleX((float) progress / 10f);                    }                });        // 按钮Y方向缩放动画        scaleSeekBarY                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                    public void onStopTrackingTouch(SeekBar seekBar) {                    }                    public void onStartTrackingTouch(SeekBar seekBar) {                    }                    public void onProgressChanged(SeekBar seekBar,                            int progress, boolean fromUser) {                        // Y方向缩放                        button.setScaleY((float) progress / 10f);                    }                });        // 按钮X方向旋转动画        rotationSeekBarX                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                    public void onStopTrackingTouch(SeekBar seekBar) {                    }                    public void onStartTrackingTouch(SeekBar seekBar) {                    }                    public void onProgressChanged(SeekBar seekBar,                            int progress, boolean fromUser) {                        // X方向旋转                        button.setRotationX((float) progress);                    }                });        // 按钮Y方向旋转动画        rotationSeekBarY                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                    public void onStopTrackingTouch(SeekBar seekBar) {                    }                    public void onStartTrackingTouch(SeekBar seekBar) {                    }                    public void onProgressChanged(SeekBar seekBar,                            int progress, boolean fromUser) {                        // Y方向旋转                        button.setRotationY((float) progress);                    }                });        // 按钮Z方向旋转动画        rotationSeekBarZ                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                    public void onStopTrackingTouch(SeekBar seekBar) {                    }                    public void onStartTrackingTouch(SeekBar seekBar) {                    }                    public void onProgressChanged(SeekBar seekBar,                            int progress, boolean fromUser) {                        // 设置旋转                        button.setRotation((float) progress);                    }                });    }}

—布局文件R.layout.activity_tween——-

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/container"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:splitMotionEvents="true" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="20dip"        android:orientation="horizontal"        android:splitMotionEvents="true" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="5dip"            android:paddingRight="5dip"            android:text="TX"            android:textStyle="bold" />        <SeekBar            android:id="@+id/translationX"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="15dip"            android:paddingRight="5dip"            android:text="TY"            android:textStyle="bold" />        <SeekBar            android:id="@+id/translationY"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="20dip"        android:orientation="horizontal"        android:splitMotionEvents="true" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="5dip"            android:paddingRight="5dip"            android:text="SX"            android:textStyle="bold" />        <SeekBar            android:id="@+id/scaleX"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="15dip"            android:paddingRight="5dip"            android:text="SY"            android:textStyle="bold" />        <SeekBar            android:id="@+id/scaleY"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="20dip"        android:orientation="horizontal"        android:splitMotionEvents="true" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="5dip"            android:paddingRight="5dip"            android:text="X"            android:textStyle="bold" />        <SeekBar            android:id="@+id/rotationX"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="15dip"            android:paddingRight="5dip"            android:text="Y"            android:textStyle="bold" />        <SeekBar            android:id="@+id/rotationY"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="15dip"            android:paddingRight="5dip"            android:text="Z"            android:textStyle="bold" />        <SeekBar            android:id="@+id/rotationZ"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="1"            android:orientation="horizontal" />    </LinearLayout>    <Button        android:id="@+id/rotatingButton"        android:layout_width="200dip"        android:layout_height="150dip"        android:layout_marginLeft="50dip"        android:layout_marginTop="50dip"        android:text="Rotating Button" /></LinearLayout>
1 1