2016-10-08 21:12:40 youmingyu 阅读数 231
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    22121 人正在学习 去看看 任苹蜻

      此demo实现android的帧动画。


demo:下载地址


源码:

package fk.androiddemo_026;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

//Frame_by_Frame Animation一般用于不停切换背景图片
//1,在res/drawable中放入需要的序列图片
//2,在res/drawable中创建anim_image.xml文件,引入序列图片
//3,anim_image.xml资源文件添加到image控件上,控件背景图片资源转型为animationDrawable
//4,animationDrawable.start()开启动画
public class MainActivity extends Activity implements View.OnClickListener{
    Button but;
    ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        but=(Button)findViewById(R.id.but);
        but.setOnClickListener(this);
        image=(ImageView)findViewById(R.id.imageView);
    }

    @Override
    public void onClick(View v) {
        //注意:下面是setBackgroundResource方法不是平时的setImageResource
        image.setBackgroundResource(R.drawable.anim_image);
        AnimationDrawable animationDrawable = (AnimationDrawable) image.getBackground();
        animationDrawable.start();
    }
}


anim_image.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
	android:oneshot="false">
	<!--item属性:引用的图片,持续的时间-->
    <item android:drawable="@drawable/image1"
        android:duration="250"/>
    <item android:drawable="@drawable/image2"
        android:duration="250"/>
    <item android:drawable="@drawable/image3"
        android:duration="250"/>
    <item android:drawable="@drawable/image4"
        android:duration="250"/>

</animation-list>

运行截图:



2019-05-30 08:41:01 weixin_42462552 阅读数 1246
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    22121 人正在学习 去看看 任苹蜻

1.在drawable下创建donghua.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/sound_2" android:duration="100"/>
    <item android:drawable="@drawable/sound_1" android:duration="100"/>
</animation-list>
<!--android:duration表示间隔时间 ,android:oneshot="false"设置为循环播放-->

2.在布局中调用

<ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/donghua"
            android:id="@+id/donghua"/>    
             <!--设置background就好了 -->     

3.java中创建一个动画

AnimationDrawable animationDrawable;
animationDrawable = (AnimationDrawable)imageView.getBackground();
animationDrawable.start();
2017-09-05 15:23:21 xinpengfei521 阅读数 201
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    22121 人正在学习 去看看 任苹蜻

Android实现帧动画

1.在res的drawable下新建一个布局animation.xml*文件

"><animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">

    <item
        android:drawable="@drawable/image1"
        android:duration="32" />
    <item
        android:drawable="@drawable/image2"
        android:duration="32" />
    <item
        android:drawable="@drawable/image3"
        android:duration="32" />
    <item
        android:drawable="@drawable/image4"
        android:duration="32" />
    <item
        android:drawable="@drawable/image5"
        android:duration="32" />
    <item
        android:drawable="@drawable/image6"
        android:duration="32" />
    <item
        android:drawable="@drawable/image7"
        android:duration="32" />
    <item
        android:drawable="@drawable/image8"
        android:duration="32" />
    <item
        android:drawable="@drawable/image9"
        android:duration="32" />
    <item
        android:drawable="@drawable/image10"
        android:duration="32" />
    <item
        android:drawable="@drawable/image11"
        android:duration="32" />
    <item
        android:drawable="@drawable/image12"
        android:duration="32" />
    <item
        android:drawable="@drawable/image13"
        android:duration="32" />
    <item
        android:drawable="@drawable/image14"
        android:duration="32" />
    <item
        android:drawable="@drawable/image15"
        android:duration="32" />
    <item
        android:drawable="@drawable/image16"
        android:duration="32" />
    <item
        android:drawable="@drawable/image17"
        android:duration="32" />
    <item
        android:drawable="@drawable/image18"
        android:duration="32" />
    <item
        android:drawable="@drawable/image19"
        android:duration="32" />
    <item
        android:drawable="@drawable/image20"
        android:duration="32" />
    <item
        android:drawable="@drawable/image21"
        android:duration="32" />
    <item
        android:drawable="@drawable/image22"
        android:duration="32" />
    <item
        android:drawable="@drawable/image23"
        android:duration="32" />
    <item
        android:drawable="@drawable/image24"
        android:duration="32" />
    <item
        android:drawable="@drawable/image25"
        android:duration="32" />
    <item
        android:drawable="@drawable/image26"
        android:duration="32" />
    <item
        android:drawable="@drawable/image27"
        android:duration="32" />
    <item
        android:drawable="@drawable/image28"
        android:duration="32" />
    <item
        android:drawable="@drawable/image29"
        android:duration="32" />
    <item
        android:drawable="@drawable/image30"
        android:duration="32" />
    <item
        android:drawable="@drawable/image31"
        android:duration="32" />
    <item
        android:drawable="@drawable/image32"
        android:duration="32" />
    <item
        android:drawable="@drawable/image33"
        android:duration="32" />
    <item
        android:drawable="@drawable/image34"
        android:duration="32" />
    <item
        android:drawable="@drawable/image35"
        android:duration="32" />
    <item
        android:drawable="@drawable/image36"
        android:duration="32" />
    <item
        android:drawable="@drawable/image37"
        android:duration="32" />
    <item
        android:drawable="@drawable/image38"
        android:duration="32" />
    <item
        android:drawable="@drawable/image39"
        android:duration="32" />
    <item
        android:drawable="@drawable/image40"
        android:duration="32" />
    <item
        android:drawable="@drawable/image41"
        android:duration="32" />
    <item
        android:drawable="@drawable/image42"
        android:duration="32" />
    <item
        android:drawable="@drawable/image43"
        android:duration="32" />
    <item
        android:drawable="@drawable/image44"
        android:duration="32" />
    <item
        android:drawable="@drawable/image45"
        android:duration="32" />
    <item
        android:drawable="@drawable/image46"
        android:duration="32" />
    <item
        android:drawable="@drawable/image47"
        android:duration="32" />
    <item
        android:drawable="@drawable/image48"
        android:duration="32" />
    <item
        android:drawable="@drawable/image49"
        android:duration="32" />
    <item
        android:drawable="@drawable/image50"
        android:duration="32" />
    <item
        android:drawable="@drawable/image51"
        android:duration="32" />
    <item
        android:drawable="@drawable/image52"
        android:duration="32" />
    <item
        android:drawable="@drawable/image53"
        android:duration="32" />
    <item
        android:drawable="@drawable/image54"
        android:duration="32" />
    <item
        android:drawable="@drawable/image55"
        android:duration="32" />
    <item
        android:drawable="@drawable/image56"
        android:duration="32" />
    <item
        android:drawable="@drawable/image57"
        android:duration="32" />
    <item
        android:drawable="@drawable/image58"
        android:duration="32" />
    <item
        android:drawable="@drawable/image59"
        android:duration="32" />
    <item
        android:drawable="@drawable/image60"
        android:duration="32" />

</animation-list>

android:oneshot=”true”当为true时表示只播放一次,为false时表示循环播放;

2.给ImageView设置帧动画的src

    <ImageView
        android:id="@+id/ivLoading"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerInParent="true"
        android:src="@drawable/animation"
        android:visibility="gone" />

3.播放帧动画

    ivLoading.setImageResource(R.drawable.animation);
    drawable = (AnimationDrawable) ivLoading.getDrawable();
    drawable.start();

4.以上播放默认是没有监听的,所以我们这里提供一种自定义View,可以监听帧动画播完的监听

/**
 * 自定义可以播放动态图片的ImageView
 */
public class AnimationImageView extends ImageView {

    public AnimationImageView(Context context) {
        super(context);
    }

    public AnimationImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public AnimationImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }



    public interface OnFrameAnimationListener{
        /**
         * 动画开始播放后调用
         */
        void onStart();
        /**
         * 动画结束播放后调用
         */
        void onEnd();
    }

    /**
     * 不带动画监听的播放
     * @param resId
     */
    public void loadAnimation(int resId){
        setImageResource(resId);
        AnimationDrawable anim = (AnimationDrawable)getDrawable();
        anim.start();
    }

    /**
     * 带动画监听的播放
     * @param resId
     * @param listener
     */
    public void loadAnimation(int resId, final OnFrameAnimationListener listener) {
        setImageResource(resId);
        AnimationDrawable anim = (AnimationDrawable)getDrawable();
        anim.start();
        if(listener != null){
            // 调用回调函数onStart
            listener.onStart();
        }

        // 计算动态图片所花费的事件
        int durationTime = 0;
        for (int i = 0; i < anim.getNumberOfFrames(); i++) {
            durationTime += anim.getDuration(i);
        }

        // 动画结束后
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                if(listener != null){
                    // 调用回调函数onEnd
                    listener.onEnd();
                }
            }
        }, durationTime);
    }
}

5.代码中加载并设置监听

            // 加载带监听的帧动画
            anim_view.loadAnimation(R.drawable.anim_defense,
                    new OnFrameAnimationListener() {

                        @Override
                        public void onStart() {
                            // 动画刚播放时
                        }

                        @Override
                        public void onEnd() {
                            // 动画结束播放时
                        }
                    });

参考文章:

http://blog.csdn.net/zuozuoshenghen/article/details/50249569

http://blog.csdn.net/u012975705/article/details/48717391

http://www.cnblogs.com/net168/p/4204797.html

2018-10-10 15:58:16 qq_37482202 阅读数 46
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    22121 人正在学习 去看看 任苹蜻

逐帧动画是在时间帧上逐帧绘制帧内容,由于是一帧一帧的画,所以逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容。因为使用简便,所以开发中也经常使用

逐帧动画和其它动画一样有两种设置方式

<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">

    <item android:drawable="@drawable/refresh_1" android:duration="100" />
    <item android:drawable="@drawable/refresh_2" android:duration="100" />
    <item android:drawable="@drawable/refresh_3" android:duration="100" />
    <item android:drawable="@drawable/refresh_4" android:duration="100" />
    <item android:drawable="@drawable/refresh_5" android:duration="100" />
    <item android:drawable="@drawable/refresh_6" android:duration="100" />
    <item android:drawable="@drawable/refresh_7" android:duration="100" />
    <item android:drawable="@drawable/refresh_8" android:duration="100" />
    <item android:drawable="@drawable/refresh_9" android:duration="100" />
    <item android:drawable="@drawable/refresh_10" android:duration="100" />
    <item android:drawable="@drawable/refresh_11" android:duration="100" />
    <item android:drawable="@drawable/refresh_12" android:duration="100" />
    <item android:drawable="@drawable/refresh_13" android:duration="100" />
    <item android:drawable="@drawable/refresh_14" android:duration="100" />
    <item android:drawable="@drawable/refresh_15" android:duration="100" />
    <item android:drawable="@drawable/refresh_16" android:duration="100" />
    <item android:drawable="@drawable/refresh_17" android:duration="100" />
    <item android:drawable="@drawable/refresh_18" android:duration="100" />
    
</animation-list>

首先xml中写明每帧动画的播放顺序和持续时间,oneshot属性设置为true为播放一次,false为循环播放

或者在java中设置

animationDrawable = new AnimationDrawable();
                for (int i = 1; i <= 18; i++) {
                    int drawableID = getResources().getIdentifier("refresh_" + i, "drawable", getPackageName());
                    Drawable drawable = getResources().getDrawable(drawableID);
                    animationDrawable.addFrame(drawable, 100);
                }

从xml加载并设置到ImageView上

imageView.setImageResource(R.drawable.frame_animation);
animationDrawable=(AnimationDrawable)imageView.getDrawable();

设置animationDrawable对象到ImageView上

 imageView.setImageDrawable(animationDrawable);

开始动画

animationDrawable.start();

停止动画

animationDrawable.stop();

 

2017-09-25 18:08:32 tracydragonlxy 阅读数 6404
  • 快速入门Android开发 视频 教程 android studio

    这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

    22121 人正在学习 去看看 任苹蜻

Android逐帧动画——让图片动起来

前言:逐帧动画要求开发者把动画过程的每张静态图片都收集起来,然后由android来控制依次显示这些静态图片,然后利用人眼视觉暂留的原理,给用户造成“动画”的错觉。通过逐帧动画我们就能让我们的图片“动起来”。

效果图:

这里写图片描述

定义逐帧动画只要在 < animation-list…/>元素中使用 < item…/>子元素定义动画的全部帧,并指定各帧的持续时间即可。

1. 第一步

在/res/drawable目录下,定义一个逐帧动画的资源文件fat_po.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <!-- 添加多帧 -->
    <item android:drawable="@drawable/pic01" android:duration="120"/>
    <item android:drawable="@drawable/pic02" android:duration="120"/>
    <item android:drawable="@drawable/pic03" android:duration="120"/>
    <item android:drawable="@drawable/pic04" android:duration="120"/>
    <item android:drawable="@drawable/pic05" android:duration="120"/>
    <item android:drawable="@drawable/pic06" android:duration="120"/>
    <item android:drawable="@drawable/pic07" android:duration="120"/>
    <item android:drawable="@drawable/pic08" android:duration="120"/>
    <item android:drawable="@drawable/pic09" android:duration="120"/>
    <item android:drawable="@drawable/pic11" android:duration="120"/>
    <item android:drawable="@drawable/pic12" android:duration="120"/>
    <item android:drawable="@drawable/pic13" android:duration="120"/>
    <item android:drawable="@drawable/pic14" android:duration="120"/>
    <item android:drawable="@drawable/pic15" android:duration="120"/>
    <item android:drawable="@drawable/pic16" android:duration="120"/>
    <item android:drawable="@drawable/pic17" android:duration="120"/>
    <item android:drawable="@drawable/pic18" android:duration="120"/>
    <item android:drawable="@drawable/pic19" android:duration="120"/>
    <item android:drawable="@drawable/pic10" android:duration="120"/>
    <item android:drawable="@drawable/pic20" android:duration="120"/>
    <item android:drawable="@drawable/pic21" android:duration="120"/>
    <item android:drawable="@drawable/pic22" android:duration="120"/>
    <item android:drawable="@drawable/pic23" android:duration="120"/>
    <item android:drawable="@drawable/pic24" android:duration="120"/>
    <item android:drawable="@drawable/pic25" android:duration="120"/>
    <item android:drawable="@drawable/pic26" android:duration="120"/>
    <item android:drawable="@drawable/pic27" android:duration="120"/>
    <item android:drawable="@drawable/pic28" android:duration="120"/>
    <item android:drawable="@drawable/pic29" android:duration="120"/>

</animation-list>

该文件中将静态图片添加到逐帧动画,一张静态图片就对应一帧图像。

2. 第二步

在布局文件中添加两个按钮,一个用来控制逐帧动画的播放,一个用来控制逐帧动画的暂停。最后再添加一个ImageView来显示每一帧图像。

<?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"
    android:orientation="vertical"
    tools:context="com.newdegree.mytest.FatPoActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/play"
            android:text="开始"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <Button
            android:id="@+id/pause"
            android:text="暂停"
            android:layout_weight="1"
            android:layout_marginLeft="5dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>

    <ImageView
        android:id="@+id/anim"
        android:src="@drawable/fat_po"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

在 < ImageView …/> 标签中引入逐帧动画的资源文件,android:src=”@drawable/fat_po”。

2. 第三步

编写activity文件,在activity中控制逐帧动画的播放暂停。

public class FatPoActivity extends AppCompatActivity {

    private Button btn_play,btn_pause;
    private ImageView iv;

    private AnimationDrawable anim;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fat_po);

        btn_play = (Button) findViewById(R.id.play);
        btn_pause = (Button) findViewById(R.id.pause);
        iv = (ImageView) findViewById(R.id.anim);

        iv.setImageResource(R.drawable.fat_po);
        anim = (AnimationDrawable) iv.getDrawable();

        btn_play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                anim.start();
            }
        });

        btn_pause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                anim.stop();
            }
        });
    }
}

总结:最后我们就完成了逐帧动画,一系列静态图片将会“动起来”了,但是还有一个问题,当我们要添加很多静态图片到一个逐帧资源文件中时,就会报java.lang.OutOfMemoryError异常。

Android之帧布局

阅读数 169

android 限帧

阅读数 491

android 真机上限制帧数,我们

博文 来自: DFNum1

加载框,Android,帧动画

博文 来自: liu_ling1216
没有更多推荐了,返回首页