在线直播系统源码,多图加载成动画的形式如何实现
在线直播系统源码,多图加载成动画的形式如何实现
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卡的文件夹下加载的,也可以换成网络图片。
以上就是在线直播系统源码,多图加载成动画的形式如何实现, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现