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()
    }
} 
 
                









![[附源码]计算机毕业设计springboot企业人事管理系统](https://img-blog.csdnimg.cn/7e54e9dfc48649b89645d3b12d0314bb.png)





![[附源码]JAVA毕业设计高校校园社交网络(系统+LW)](https://img-blog.csdnimg.cn/c6d9bdb5fd634ea183a7a710097e76dc.png)


