From 879ec1ae04b37eb7bf9357903d10acc860d84d5b Mon Sep 17 00:00:00 2001
From: zhujie <leon.zhu@cloudroam.com.cn>
Date: 星期二, 15 四月 2025 03:02:18 +0800
Subject: [PATCH] 1

---
 app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt |   92 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 78 insertions(+), 14 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt b/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt
index 55d957f..353707d 100644
--- a/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt
+++ b/app/src/main/java/com/example/firstapp/ui/invitation/InvitationActivity.kt
@@ -1,13 +1,19 @@
 package com.example.firstapp.ui.invitation
 
+import android.content.ClipData
+import android.content.ClipboardManager
 import android.content.Context
+import android.content.Intent
+import android.net.Uri
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
 import android.text.Html
 import android.util.TypedValue
 import android.view.View
+import android.widget.Button
 import android.widget.TextView
+import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.LinearSmoothScroller
@@ -16,6 +22,7 @@
 import com.example.firstapp.adapter.InvitationAdapter
 import com.example.firstapp.adapter.InvitationRecordAdapter
 import com.example.firstapp.entity.InvitationRecord
+import com.example.firstapp.utils.PreferencesManager
 import kotlin.math.abs
 
 class InvitationActivity : AppCompatActivity() {
@@ -51,6 +58,26 @@
 
         //启动轮播
         startAutoScroll()
+
+        //分享
+        val btnInvite = findViewById<Button>(R.id.btnInvite)
+        btnInvite.setOnClickListener {
+            shareImageToWechat()
+        }
+
+        //邀请码
+        val invitationCodeText = findViewById<TextView>(R.id.invitationCodeText)
+        invitationCodeText.text = "A1B2"
+        //invitationCodeText.text = formatInvitationCode(PreferencesManager.getInviteCode());
+        findViewById<Button>(R.id.copyButton).setOnClickListener {
+            val clipboard = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
+            val clip = ClipData.newPlainText(
+                "邀请码",
+                invitationCodeText.text.toString().replace(" ", "") // 复制时去掉空格
+            )
+            clipboard.setPrimaryClip(clip)
+            Toast.makeText(this, "已复制邀请码", Toast.LENGTH_SHORT).show()
+        }
     }
 
     private fun initViews() {
@@ -64,12 +91,12 @@
         addRecordListener()
     }
 
-    private fun addSuccessListener(){
+    private fun addSuccessListener() {
         recyclerSuccessView.viewTreeObserver.addOnGlobalLayoutListener {
             if (recyclerSuccessView.childCount > 0) {
                 // 计算预期高度(60dp转px)
                 val expectedHeight = dpToPx(60f)
-                if(itemHeight!= expectedHeight){
+                if (itemHeight != expectedHeight) {
                     // 修正所有item的高度
                     for (i in 0 until recyclerSuccessView.childCount) {
                         recyclerSuccessView.getChildAt(i).layoutParams.height = expectedHeight
@@ -106,12 +133,12 @@
         }
     }
 
-    private fun addRecordListener(){
+    private fun addRecordListener() {
         recyclerRecordView.viewTreeObserver.addOnGlobalLayoutListener {
             if (recyclerSuccessView.childCount > 0) {
                 // 计算预期高度(60dp转px)
                 val expectedHeight = dpToPx(60f)
-                if(itemHeight!= expectedHeight){
+                if (itemHeight != expectedHeight) {
                     // 修正所有item的高度
                     for (i in 0 until recyclerSuccessView.childCount) {
                         recyclerSuccessView.getChildAt(i).layoutParams.height = expectedHeight
@@ -184,11 +211,11 @@
         data.clear()
         data.addAll(
             listOf(
-                InvitationRecord("H****e", "获得了1天会员","已注册"),
-                InvitationRecord("U****r", "获得了2天会员","已注册"),
-                InvitationRecord("A****e", "获得了免广告特权","已注册"),
-                InvitationRecord("B****e", "获得了3天会员","已注册"),
-                InvitationRecord("C****o", "获得了4天会员","已注册")
+                InvitationRecord("H****e", "获得了1天会员", "已注册"),
+                InvitationRecord("U****r", "获得了2天会员", "已注册"),
+                InvitationRecord("A****e", "获得了免广告特权", "已注册"),
+                InvitationRecord("B****e", "获得了3天会员", "已注册"),
+                InvitationRecord("C****o", "获得了4天会员", "已注册")
             )
         )
         adapter.notifyDataSetChanged()
@@ -198,14 +225,50 @@
         recorddata.clear()
         recorddata.addAll(
             listOf(
-                InvitationRecord("M****e", "","未注册"),
-                InvitationRecord("Q****r", "","已注册"),
-                InvitationRecord("W****e", "","未注册"),
-                InvitationRecord("E****e", "","未注册"),
-                InvitationRecord("R****o", "","已注册")
+                InvitationRecord("M****e", "", "未注册"),
+                InvitationRecord("Q****r", "", "已注册"),
+                InvitationRecord("W****e", "", "未注册"),
+                InvitationRecord("E****e", "", "未注册"),
+                InvitationRecord("R****o", "", "已注册")
             )
         )
         recordadapter.notifyDataSetChanged()
+    }
+
+    // 分享资源图片到微信
+    private fun shareImageToWechat() {
+        try {
+            // 获取资源图片的URI
+            val imageUri = Uri.parse("android.resource://${packageName}/${R.drawable.location}")
+
+            val intent = Intent().apply {
+                action = Intent.ACTION_SEND
+                type = "image/*"
+                putExtra(Intent.EXTRA_STREAM, imageUri)
+                flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
+                setPackage("com.tencent.mm") // 指定微信包名
+            }
+
+            // 创建选择器,即使微信不可用也能选择其他应用
+            val chooserIntent = Intent.createChooser(intent, "分享邀请图片")
+
+            // 检查是否有应用能处理这个Intent
+            if (intent.resolveActivity(packageManager) != null) {
+                startActivity(chooserIntent)
+            } else {
+                Toast.makeText(this, "未找到可分享的应用", Toast.LENGTH_SHORT).show()
+            }
+        } catch (e: Exception) {
+            Toast.makeText(this, "分享失败: ${e.message}", Toast.LENGTH_SHORT).show()
+        }
+    }
+
+    private fun formatInvitationCode(code: String): String {
+        return if (code.length > 2) {
+            code.chunked(2).joinToString(" ")
+        } else {
+            code
+        }
     }
 
     private val scrollRunnable = object : Runnable {
@@ -301,6 +364,7 @@
     private fun pxToDp(px: Int, context: Context): Int {
         return (px / (context.resources.displayMetrics.density)).toInt()
     }
+
     private fun dpToPx(dp: Float): Int {
         return (dp * resources.displayMetrics.density).toInt()
     }

--
Gitblit v1.9.3