美文网首页
实现类gif播放效果,可以伴以提示音

实现类gif播放效果,可以伴以提示音

作者: lucas777 | 来源:发表于2022-04-05 09:15 被阅读0次
/**
 * 实现类gif播放效果,可以伴以提示音
 * 
 * @author felix.zhong
 * @时间 2014-11-14下午5:39:45
 */
public class DynamicImage extends ImageView {
    private int index = 0;
    private MediaPlayer mediaPlayer = null;
    // 继续播放标志
    private boolean continuePlay = false;
    private Handler handler;

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

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

    /**
     * 图片切换
     * 
     * @author zhongcj
     * @param resIds
     *            资源图片id
     * @param ms
     *            毫秒值
     */
    public void startRoation(final int resIds[], final long ms) {
        if (continuePlay) {
            // 如果正在播放,不做操作
            return;
        }

        if (handler == null) {
            handler = new Handler();
        }

        // 设置循环播放标志
        continuePlay = true;
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                if (continuePlay) {
                    if (index == resIds.length) {
                        index = 0;
                    }
                    DynamicImage.this.setImageResource(resIds[index]);
                    index++;
                    handler.postDelayed(this, ms);
                }
            }
        };

        handler.post(runnable);
    }

    /**
     * 图片切换并伴以声音提示
     * 
     * @author zhongcj
     * @param resIds
     * @param ms
     */
    public void startRoationWithTone(final int resIds[], final long ms) {
        // 播放图片
        startRoation(resIds, ms);
        // 播放声音提示
        playTone();
    }

    /**
     * 停止切换
     */
    public void stopRotation() {
        // 设置图片切换停止标志
        continuePlay = false;

        // 如果声音正在播放,停之
        if (mediaPlayer != null) {
            if (mediaPlayer.isPlaying()) {
                mediaPlayer.stop();
            }
            mediaPlayer.release();
        }
    }

    /**
     * 播放声音提示
     */
    private void playTone() {
        try {
            if (mediaPlayer == null) {
                mediaPlayer = new MediaPlayer();
            } else {
                mediaPlayer.reset();
            }
            Uri tone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            mediaPlayer.setDataSource(getContext(), tone);
            mediaPlayer.setLooping(false);
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (Exception e) {
            Log.e("DynamicImage", "playTone error:\r\n" + e.getMessage());
        }
    }
}
public class MainActivity extends Activity {
    private DynamicImage di;
    private int[] imageIds;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        di = (DynamicImage) findViewById(R.id.di);
        imageIds = new int[] { R.drawable.a, R.drawable.b, R.drawable.c,R.drawable.d, R.drawable.e, R.drawable.f };
        di.startRoationWithTone(imageIds, 1550);
    }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <com.demo.DynamicImage
        android:id="@+id/di"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>
a.jpg b.jpg c.jpg d.jpg e.jpg f.jpg

相关文章

  • 实现类gif播放效果,可以伴以提示音

  • ios加载gif动画

    只需要调用imageView扩展的一个类方法既可实现gif播放动画. imageView扩展类方法(UIImage...

  • 实现动画方式深度解析

    实现动画方式深度解析(一) —— 播放GIF动画(一)实现动画方式深度解析(二) —— 播放GIF动画之框架FLA...

  • Cesium圆形波纹效果

    因gif截图问题,动画效果看起来不够流畅。 1. 扩展实现类CircleWaveMaterialProperty ...

  • Android加载Gif动画

    最近项目开发中需要实现播放gif动画的效果,UI设计图如下 在点击中间话筒的时候播放动画,提示用户正在录音。 尝试...

  • js 获取gif第一帧

    效果:gif一开始是静态的,点击后才播放参考效果:微博 贴吧 …… demo基于vue框架,功能实现主要用原生js...

  • XMLYLearn-仿喜马拉雅应用

    简单仿喜马拉雅App,利用喜马拉雅的SDK,加载节目列表,实现音频播放功能 完整项目地址 效果Gif图 实现的功能...

  • iOS的gif的图片处理

    iOS上没有直接播放gif控件(gif图片是几张png格式经过播放之后显示的不同的帧来进行实现的)sdwebima...

  • Android基于ijkplayer视频播放,列表中不可见时切换

    项目中实现过如下图效果。 gif图展示的有点问题,全屏播放的时候屏幕没有旋转,这是录制的问题,真实效果中不存在这个...

  • GIFView与Android

    效果图 Android的ImageView是不支持GIF播放的,如果需要让ImageView支持GIF就需要做自定...

网友评论

      本文标题:实现类gif播放效果,可以伴以提示音

      本文链接:https://www.haomeiwen.com/subject/ojlhsrtx.html