在线直播系统源码,多图加载成动画的形式如何实现

在线直播系统源码,多图加载成动画的形式如何实现

1、设置

 

1
<br>animationDrawable.addFrame(drawable, 1000);//添加图片生成的drawable,时间为1000ms<br>animationDrawable.setOneShot(false);//设置是否播放一次,false表示会一直循环播放<br>animationDrawable.setEnterFadeDuration(200);//进入时动画前摇时间,时间为200ms<br>animationDrawable.setExitFadeDuration(200);//退出时动画后摇时间,时间为200ms

​初始化和图片资源设置完成后

 

1
<br>animationDrawable.start();

2、停止播放

 

1
<br>animationDrawable.stop();

3、全部代码

 

1
<br>package com.mz.demo.ui.home;<br> <br>import android.Manifest;<br>import android.app.Activity;<br>import android.content.Context;<br>import android.content.pm.PackageManager;<br>import android.graphics.Bitmap;<br>import android.graphics.BitmapFactory;<br>import android.graphics.drawable.AnimationDrawable;<br>import android.graphics.drawable.BitmapDrawable;<br>import android.graphics.drawable.Drawable;<br>import android.os.Bundle;<br>import android.os.Environment;<br>import android.view.LayoutInflater;<br>import android.view.View;<br>import android.view.ViewGroup;<br> <br>import com.mz.demo.databinding.FragmentHomeBinding;<br> <br>import java.io.File;<br>import java.util.ArrayList;<br>import java.util.Arrays;<br>import java.util.List;<br> <br>import androidx.annotation.NonNull;<br>import androidx.core.app.ActivityCompat;<br>import androidx.fragment.app.Fragment;<br> <br>public class HomeFragment extends Fragment {<br>    private Activity activity;<br>    private FragmentHomeBinding binding;<br>    private AnimationDrawable animationDrawable;<br>    private final List<String> uriList = new ArrayList<>();<br> <br>    public View onCreateView(@NonNull LayoutInflater inflater,<br>                             ViewGroup container, Bundle savedInstanceState) {<br>        activity = getActivity();<br> <br>        binding = FragmentHomeBinding.inflate(inflater, container, false);<br>        return binding.getRoot();<br>    }<br> <br>    @Override<br>    public void onStart() {<br>        super.onStart();<br>        requestPermission();<br>    }<br> <br>    @Override<br>    public void onStop() {<br>        super.onStop();<br>        if (animationDrawable != null) {<br>            animationDrawable.stop();<br>            animationDrawable = null;//置空释放资源<br>        }<br>    }<br> <br>    private void requestPermission() {<br>        //读取SD权限申请<br>        if (activity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {<br>            ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);<br>        }<br>        readImagePath();<br>    }<br> <br>    private void readImagePath() {<br>        uriList.clear();<br>        //获取该路径下所有文件<br>        File file = new File(Environment.getExternalStorageDirectory() + "/DCIM/demo");<br>        String[] paths = file.list();<br>        if (paths == null)<br>            return;<br>        uriList.addAll(Arrays.asList(paths));<br>        animationDrawable = new AnimationDrawable();<br>        for (String uri : uriList) {<br>            Bitmap bitmap = BitmapFactory.decodeFile(file + "/" + uri);<br>            Drawable drawable = new BitmapDrawable(null, bitmap);<br>            animationDrawable.addFrame(drawable, 1000);<br>            animationDrawable.setOneShot(false);<br>            animationDrawable.setEnterFadeDuration(200);<br>            animationDrawable.setExitFadeDuration(200);<br>            binding.imageView.setImageDrawable(animationDrawable);<br>            animationDrawable.start();<br>        }<br>    }<br> <br>    @Override<br>    public void onDestroyView() {<br>        super.onDestroyView();<br>        binding = null;<br>    }<br>}<br><?xml version="1.0" encoding="utf-8"?><br><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"<br>    xmlns:app="http://schemas.android.com/apk/res-auto"<br>    xmlns:tools="http://schemas.android.com/tools"<br>    android:layout_width="match_parent"<br>    android:layout_height="match_parent"<br>    tools:context=".ui.home.HomeFragment"><br> <br>    <ImageView<br>        android:id="@+id/imageView"<br>        android:layout_width="match_parent"<br>        android:layout_height="0dp"<br>        app:layout_constraintDimensionRatio="16:9"<br>        android:layout_margin="30dp"<br>        app:layout_constraintTop_toTopOf="parent"/><br></androidx.constraintlayout.widget.ConstraintLayout>

 

这里的图片资源是是从SD卡的文件夹下加载的,也可以换成网络图片。

以上就是在线直播系统源码,多图加载成动画的形式如何实现, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示