这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
这篇文章主要介绍了Android控件Tween动画(补间动画)实现方法,结合具体实例形式分析了Android补间动画的原理、功能实现与布局相关操作技巧,需要的朋友可以参考下
本文实例讲述了Android控件Tween动画(补间动画)实现方法。分享给大家供大家参考,具体如下:
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>
希望本文所述对大家Android程序设计有所帮助。
来源: http://www.phperz.com/article/17/0912/345815.html