Kotlin高仿微信-第28篇-朋友圈-预览图片、预览小视频
创始人
2024-03-06 21:52:56
0

 Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。

Kotlin高仿微信-项目实践58篇,点击查看详情

效果图:

实现代码:

/*** Author : wangning* Email : maoning20080809@163.com* Date : 2022/5/24 16:11* Description : 朋友圈小视频播放*/
class SVideoPlayFragment : BaseDataBindingFragment(){override fun getLayoutRes() = R.layout.wc_svideo_playprivate var navController: NavController? = nullprivate var enterType: Int = 0private var isHideConfirm : Boolean = falseprivate var svideoView: SVideoView? = nulloverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)navController = findNavController()svideoView = svideo_play_view//2图片、3、小视频var type = arguments?.get(CommonUtils.Moments.TYPE_NAME) as Intvar filePath = arguments?.get(CommonUtils.Moments.TYPE_IMAGE_PATH).toString()//小视频路径var videoFilePath = arguments?.get(CommonUtils.Moments.TYPE_VIDEO_PATH).toString()//enterType = arguments?.get(CameraFragment.TYPE_ENTER)arguments?.let {it.get(CameraFragment.TYPE_ENTER)?.let {enterType = it as Int}it.get(CommonUtils.Chat.IS_HIDE_CONFIRM)?.let {isHideConfirm = it as Boolean}}if(type.equals(CommonUtils.Moments.TYPE_PICTURE)){super.builder().setTitleContent(R.string.me_moments_picture_preview)svideo_play_view.visibility = View.GONEphoto_preview_icon.visibility = View.VISIBLEvar degree = ImageUtils.getExifOrientation(filePath)TagUtils.d("图片角度:${degree} , 图片路径:${filePath}")if(degree == 0){GlideUtils.load(photo_preview_icon, filePath)} else {GlideUtils.loadRounded(photo_preview_icon, filePath, degree)}} else if(type.equals(CommonUtils.Moments.TYPE_VIDEO)){super.builder().setTitleContent(R.string.me_moments_video_preview)svideo_play_view.visibility = View.VISIBLEphoto_preview_icon.visibility = View.GONETagUtils.d("播放小视频文件:${videoFilePath}")svideo_play_view.initData(videoFilePath, true)}if(isHideConfirm){photo_preview_confirm.visibility = View.GONE}photo_preview_confirm.setOnClickListener {TagUtils.d("点击返回按钮:${enterType}")if(enterType == CameraFragment.TYPE_CHAT){var sVideoBean : SVideoBean? = nullif(type.equals(CommonUtils.Moments.TYPE_PICTURE)){//图片sVideoBean = SVideoBean(type, filePath)} else if(type.equals(CommonUtils.Moments.TYPE_VIDEO)){//小视频sVideoBean = SVideoBean(type, videoFilePath)}EventBus.getDefault().post(sVideoBean)navController?.popBackStack(R.id.nav_chat, false)} else if(enterType == CameraFragment.TYPE_MOMENT){TagUtils.d("跳转到发布:${type}, ${videoFilePath} , ${filePath}")navController?.popBackStack()var bundle = bundleOf(CommonUtils.Moments.TYPE_NAME to type,CommonUtils.Moments.TYPE_IMAGE_PATH to filePath,CommonUtils.Moments.TYPE_VIDEO_PATH to videoFilePath)navController?.navigate(R.id.action_moments_publish, bundle)} else {TagUtils.d("点击返回按钮:else  ")}}svideo_play_root.setOnClickListener {//svideo_play_view.onDestroy()svideoView?.onDestroy()Navigation.findNavController(it).popBackStack()}}override fun onResume() {super.onResume()}var isOnPause = falseoverride fun onStart() {super.onStart()if(isOnPause){svideoView?.onStart()isOnPause = false}}override fun onPause() {super.onPause()isOnPause = truesvideoView?.onStop()}override fun onStop() {super.onStop()}override fun onDestroy() {super.onDestroy()svideoView?.onDestroy()}}

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...