zoukankan      html  css  js  c++  java
  • Android Frame动画demo

    Android动画介绍:Android为我们提供了两种动画实现,Frame和Tween。

    两者之间的区别:

      1.Frame动画:就像放电影一样,是通过预先做好的图片进行连续播放从而形成动画效果

      2.Tween动画:通过对图片设置平移、缩放、旋转、改变透明度等方式来显示动画效果

    本节仅讲Frame动画,

    Frame动画是通过AnimationDrawable来实现的,它提供了start()和stop()两个方法,对播放的动画进行控制,一般通过XML文件配置,在工程的res/anim目录下创建一个XML配置文件,该配置文件有一个<animation-list>根元素和若干个<item>子元素。

    废话就不说了,下面将贴出该例子的完整代码,供大家测试使用:

    一、FrameActivity

    package com.yw.myapiupdate.frame;
    
    import com.yw.myapiupdate.R;
    
    import android.app.Activity;
    import android.graphics.drawable.AnimationDrawable;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    
    /**
     * 
     * 实现动画轮询播放
     * @author yw-tony
     *
     */
    public class FrameActivity extends Activity implements OnClickListener{
        private Button btn_start;
        private Button btn_end;
        private ImageView iv;
        private AnimationDrawable ad;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.frame_layout);
            initViews();
        }
        private void initViews(){
            btn_start = (Button)findViewById(R.id.frame_btn_start);
            btn_end = (Button)findViewById(R.id.frame_btn_end);
            iv = (ImageView)findViewById(R.id.frame_iv);
            btn_start.setOnClickListener(this);
            btn_end.setOnClickListener(this);
            this.ad = (AnimationDrawable)iv.getBackground();
        }
        private void startAnimation(){
            this.ad.start();
        }
        private void stopAnimation(){
            this.ad.stop();
        }
        @Override
        public void onClick(View v) {
            switch(v.getId()){
            case R.id.frame_btn_start:
                startAnimation();
                break;
            case R.id.frame_btn_end:
                stopAnimation();
                break;
            }
        }
    }

    与之对应的xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical" >
        <ImageView 
            android:id="@+id/frame_iv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@anim/framedrawable"/>
        <Button 
            android:id="@+id/frame_btn_start"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="start"/>
        <Button 
            android:id="@+id/frame_btn_end"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="end"/>
    </LinearLayout>

    二、设置动画的xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:apk="http://schemas.android.com/apk/res/android" apk:oneshot="false">
        <item apk:drawable="@drawable/anim_1" apk:duration="200" />
        <item apk:drawable="@drawable/anim_2" apk:duration="200" />
        <item apk:drawable="@drawable/anim_3" apk:duration="200" />
        <item apk:drawable="@drawable/anim_4" apk:duration="200" />
        <item apk:drawable="@drawable/anim_5" apk:duration="200" />
        <item apk:drawable="@drawable/anim_6" apk:duration="200" />
    </animation-list>

    下面是源代码以及资源文件的下载地址:

     http://files.cnblogs.com/tony-yang-flutter/anni.zip

  • 相关阅读:
    MySQL Online DDL导致全局锁表案例分析
    .NET Core教程--给API加一个服务端缓存啦
    任务队列和异步接口的正确打开方式(.NET Core版本)
    .NET Core中使用RabbitMQ正确方式
    .NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )
    没有执行过rm -rf /*的开发不是好运维
    dotnet core在Task中使用依赖注入的Service/EFContext
    可能是全网首个支持阿里云Elasticsearch Xapck鉴权的Skywalking
    dpdk中QSBR具体实现
    C语言二级指针底层实现
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/3392269.html
Copyright © 2011-2022 走看看