Kotlin高仿微信-第26篇-朋友圈-选择图片、小视频对话框

news2024/11/25 14:30:06

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

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

效果图:

实现代码:

 
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">


    <LinearLayout
        android:id="@+id/moments_pop_video"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:gravity="center"
        android:background="@drawable/wc_base_white_normal"
        android:orientation="vertical">

        <androidx.appcompat.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:textColor="@color/black"
            android:textStyle="bold"
            android:text="拍摄"/>

        <androidx.appcompat.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="12sp"
            android:text="照片或视频"/>

    </LinearLayout>

    <TextView
        android:id="@+id/moments_pop_splitline"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/moments_pop_video"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/gray"
        android:text="-"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/gray_item"
        app:layout_constraintTop_toBottomOf="@+id/moments_pop_splitline"
        android:orientation="vertical">

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/moments_pop_album"
            android:layout_width="match_parent"
            android:layout_height="64dp"
            android:gravity="center"
            android:background="@color/white"
            android:text="从相册选择"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="@color/black"/>

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/moments_pop_svideo"
            android:layout_width="match_parent"
            android:layout_height="64dp"
            android:gravity="center"
            android:background="@color/white"
            android:text="选择小视频"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="@color/black"/>

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/moments_pop_cancel"
            android:layout_width="match_parent"
            android:layout_height="64dp"
            android:layout_marginTop="14dp"
            android:background="@color/white"
            android:gravity="center"
            android:text="取消"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="@color/black"/>

    </LinearLayout>



</androidx.constraintlayout.widget.ConstraintLayout>

private fun showPopupWindow(){
    var popupView = layoutInflater.inflate(R.layout.wc_moments_pop_view , moment_root, false)
    var popupWindow = PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true)
    popupWindow.showAtLocation(moment_root, Gravity.BOTTOM, 0, 0)

    var window = requireActivity().window
    //popupWindow在弹窗的时候背景半透明
    val params = window.attributes
    params.alpha = 0.5f
    window.attributes = params
    popupWindow.setOnDismissListener {
        params.alpha = 1.0f
        window.attributes = params
    }

    //拍照小视频
    popupView.findViewById<LinearLayout>(R.id.moments_pop_video).setOnClickListener {
        popupWindow.dismiss()
        var bundle = bundleOf(CameraFragment.TYPE_ENTER to CameraFragment.TYPE_MOMENT)
        navController?.navigate(R.id.action_svideo_camera, bundle)
    }

    //选择相册
    popupView.findViewById<AppCompatTextView>(R.id.moments_pop_album).setOnClickListener {
        popupWindow.dismiss()
        openAblum()
    }

    //选择小视频
    popupView.findViewById<AppCompatTextView>(R.id.moments_pop_svideo).setOnClickListener {
        popupWindow.dismiss()
        openVideo()
    }

    //取消
    popupView.findViewById<AppCompatTextView>(R.id.moments_pop_cancel).setOnClickListener {
        popupWindow.dismiss()
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

定时执行专家 —— 使用网络唤醒功能实现远程开机

目录 ◆ 关于网络唤醒 ◆ 定时执行专家 - 远程开机功能 - 设置方法 ◆ 使用网络唤醒实现远程开机的一些前提条件 ◆ 关于网络唤醒 Wake-on-LAN简称WOL或WoL&#xff0c;中文多译为“网上唤醒”、“远程唤醒”技术。WOL是一种技术&#xff0c;同时也是该技术的规范标准&…

Express 2 快速入门 - HelloWorld

Express Express 中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Express2 快速入门 - HelloWorld2.1 演示2.2 更多解释2 快速入门 - HelloWorld 2.1 演示 创建名为app.js 的文件 键入以下代码&#xff1a; const express require(ex…

SAP ABAP——数据类型(三)【TYPE-POOL和INCLUDE嵌套定义类型】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

威尔士和英格兰同属英国,但为啥还要在世界杯上进行PK?

聊到威尔士VS英格兰队的比赛&#xff0c;那就不得不普及一个足球常识啊。当我们打开英国的地图&#xff0c;你会发现有四个地区英格兰&#xff0c;苏格兰&#xff0c;威尔士和北爱尔兰都是属于英国的。我们还会常常看到英格兰&#xff0c;苏格兰&#xff0c;威尔士和北爱尔兰四…

JavaSE项目练习:图书管理系统

1.简介 通过前面知识&#xff1a;类&#xff0c;抽象类&#xff0c;封装&#xff0c;继承&#xff0c;多态&#xff0c;接口的学习&#xff0c;这篇文章将会通过对学习的知识点的整合运用&#xff0c;写一个小项目——图书管理系统&#xff0c;来帮助大家更好的掌握前面学习的…

物联网企业争抢「两轮车换电」赛道

两轮电动车正在攻占中国的大街小巷。 甚至无需过多的数据佐证&#xff0c;大家都可以清晰的感受到&#xff0c;“小电驴”正在加速“驰骋”。售价在千余元至万元不等的两轮电动车不仅是居民解决中距离通勤的“好帮手”&#xff0c;更是外卖员、快递员风里来雨里去的“好战友”。…

RabbitMQ镜像队列机制

镜像queue有master节点和slave节点。master和slave是针对⼀个queue而⾔的&#xff0c;⽽不是⼀个node作为所有queue的master&#xff0c;其它node作为slave。⼀个queue第⼀次创建的node为它的master节点&#xff0c;其它node为slave节点。⽆论客户端的请求打到master还是slave最…

JavaEE Bean作用域与生命周期

Bean的作用域 作用域是用来限制程序中变量的可用范围&#xff0c;Bean的作用域是Bean在Spring整个框架中的行为模式。 默认情况下&#xff0c;Spring应用上下文所有的bean都是以单例的形式创建的&#xff0c;不管给定的一个bean被注入到其他bean 多少次&#xff0c;每次所注入的…

Spring 异步@Async注解用法 Spring @Async注解用法总结 Spring @Async基本用法示例

Spring 异步Async注解用法 Spring Async注解用法总结 Spring Async基本用法示例 一、概述 在日常开发的工作中&#xff0c;经常会使用异步进行开发。Spring 提供一个简单的注解 Async &#xff0c;即可实现异步的开发&#xff0c;无需创建线程池&#xff0c;简单明了。 本文将整…

盘点 GitHub 上的神级指南

盘点 GitHub 上那些神级指南&#xff01;本次盘点都是 GitHub 上标星 10K 的开源指南。都是由中国的开发者开源&#xff0c;除了技术、教程类的指南&#xff0c;还有一些花里胡哨的东西。本期推荐开源项目目录&#xff1a;1. 计算机自学指南2. 大数据入门指南3. 程序员延寿指南…

[附源码]计算机毕业设计springboot企业人事管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MASA Framework 事件总线 - 跨进程事件总线

概述 跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中 在Masa Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序 IntegrationEvents: 提供了发件箱模式 IntegrationEvents.Dapr: 借助Dapr实现了消息的发布EventLogs.EFCore: 基…

企业想要做好数据分析,可以试试瓴羊Quick BI

企业的数字化发展已经成为了一个发展的方向&#xff0c;可是各个企业如何才可以实现数字化发展确实成为了难题。从很多企业的内部发展中来讲&#xff0c;每一个部分的数据化的分析都已经成为了行业的难点&#xff0c;如何做好这些分析工作确实是很关键的内容。 而在具体数字化…

艾美捷细胞低密度脂肪酸(LDL)摄取试剂盒的功能应用

胆固醇是一种重要的细胞成分&#xff0c;维持胆固醇稳态对正常生理功能至关重要。血浆胆固醇水平升高与各种病理状况有关&#xff0c;最明显的是冠心病&#xff0c;高胆固醇水平导致动脉泡沫细胞形成和斑块堆积&#xff0c;可能导致心脏病发作或中风。细胞胆固醇代谢和血浆胆固…

教育在线学习系统,教育培训都能用,支持多个终端

随着居家隔离不断反复&#xff0c;在线教育也成为了居家学习的必备工具之一。常用的方式就是在线教育培训。教育在线学习系统为教育行业的发展提供了有效工具&#xff0c;推动着教育行业逐步转型到线上线下的教育模式。学生在家通过手机就能随时随地学习&#xff0c;非常的方便…

基于矩阵分解模型的协同过滤理论概述(涉及到SVD,SVD++,TimeSVD++)

前言 本篇文章是对博客&#xff1a;从item-base到svd再到rbm&#xff0c;多种Collaborative Filtering(协同过滤算法)从原理到实现的补全&#xff0c;感谢该作者的分享 本文补全的内容为&#xff1a; SVD中 yjy_jyj​的实际含义理解&#xff0c;以及对应的梯度下降公式TimeS…

[附源码]JAVA毕业设计高校校园社交网络(系统+LW)

[附源码]JAVA毕业设计高校校园社交网络&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

高通导航器软件开发包使用指南(15)

高通导航器软件开发包使用指南&#xff08;15&#xff09;9 基本参数调整9.1关键调谐参数9.2调整过程9.2.1传感器方向9.2.2电子速度控制器&#xff08;ESC&#xff09;9.2.3螺旋桨和电机特性9.2.4指定车辆总质量的参数9.2.5最小和最大推力命令9.2.6推进器配置9.2.7姿态控制增益…

魔兽世界服务端源码各个重要文件详细情况说明开服一条龙

魔兽服务端开服源文件各文件翻译 很多文件在服务器中我们知道是跟什么有关&#xff0c;但就是不知道其作用是什么。就算我们知道在这些地方中的文件都是有着不小的作用。但是由于不知道各个文件代表的是什么意思所以在面对这些文件的时候都会有无从下手的感觉&#xff0c;所以…

入耳式无线蓝牙耳机哪款好?无线入耳蓝牙耳机推荐

随着近几年蓝牙耳机的快速发展&#xff0c;使用蓝牙耳机的人也越来越多&#xff0c;可供人们选择的蓝牙耳机也有很多。那么&#xff0c;在现如今的蓝牙耳机市场中&#xff0c;哪款无线蓝牙耳机好&#xff1f;下面&#xff0c;我来给大家推荐几款无线入耳蓝牙耳机&#xff0c;可…