浏览代码

修复设置功能

clark 10 月之前
父节点
当前提交
d275ff30de
共有 1 个文件被更改,包括 34 次插入20 次删除
  1. 34 20
      Android/app/src/main/java/com/tencent/liteav/demo/ConferenceOptionsActivity.java

+ 34 - 20
Android/app/src/main/java/com/tencent/liteav/demo/ConferenceOptionsActivity.java

@@ -30,8 +30,7 @@ import com.tencent.cloud.tuikit.roomkit.R;
 import com.tencent.cloud.tuikit.roomkit.manager.eventcenter.ConferenceEventCenter;
 import com.tencent.cloud.tuikit.roomkit.view.basic.PrepareView;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Random;
 
@@ -40,7 +39,7 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
     private static final int REQUEST_OVERLAY_PERMISSION = 1;
     private WindowManager windowManager;
     private Uri imageUri;
-    private final List<View> bindViewViews = new ArrayList<>();
+    private final HashMap<Integer,View> bindViewViews = new HashMap<>();
     private final int minSize = 150;
     private final BroadcastReceiver imageUpdateReceiver = new BroadcastReceiver() {
         @Override
@@ -49,6 +48,8 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
             updateFloatViewBackground();
         }
     };
+    private int targetSelectId;
+    private long lastClickTime = 0;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -79,7 +80,11 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
             @Override
             public void onNotifyUIEvent(String key, Map<String, Object> params)
             {
-                checkAddHideView();
+                long now = System.currentTimeMillis();
+                if (now - lastClickTime > 1000){
+                    lastClickTime = now;
+                    checkAddHideView();
+                }
             }
         });
     }
@@ -99,7 +104,7 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
     @SuppressLint("ClickableViewAccessibility")
     private void showFloatingWindowNew() {
         DisplayMetrics displayMetrics = new DisplayMetrics();
-        windowManager.getDefaultDisplay().getMetrics(displayMetrics);
+        windowManager.getDefaultDisplay().getRealMetrics(displayMetrics);
         int screenWidth = displayMetrics.widthPixels;
         int screenHeight = displayMetrics.heightPixels;
 
@@ -107,7 +112,9 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
                 400,
                 300,
                 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
-                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+                        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
+                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                 PixelFormat.TRANSLUCENT
         );
 
@@ -116,8 +123,11 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
         lpLocal.y = new Random().nextInt(50) + 50;
 
         View overlayLayout = LayoutInflater.from(this).inflate(com.tencent.liteav.demo.R.layout.hide_bar_main, null, false);
-        bindViewViews.add(overlayLayout);
-        overlayLayout.setId(ViewCompat.generateViewId());
+        int viewId = ViewCompat.generateViewId();
+
+        overlayLayout.setId(viewId);
+
+        bindViewViews.put(viewId,overlayLayout);
 
         ImageView resizeIcon = overlayLayout.findViewById(com.tencent.liteav.demo.R.id.ivChange);
         ImageView lockIcon = overlayLayout.findViewById(com.tencent.liteav.demo.R.id.ivLockStatus);
@@ -126,13 +136,7 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
         ImageView closeIcon = overlayLayout.findViewById(com.tencent.liteav.demo.R.id.ivClose);
         ImageView changeBackgroundIcon = overlayLayout.findViewById(com.tencent.liteav.demo.R.id.ivChangeBackground);
 
-        if (imageUri != null && !bindViewViews.isEmpty()) {
-            ImageView imageBackground = overlayLayout.findViewById(com.tencent.liteav.demo.R.id.ivImageBackground);
-            ImageView imageView = bindViewViews.get(0).findViewById(com.tencent.liteav.demo.R.id.ivImageBackground);
-            imageBackground.setImageDrawable(imageView.getDrawable());
-            imageBackground.setBackgroundColor(Color.TRANSPARENT); // 设置背景为透明
 
-        }
         windowManager.addView(overlayLayout, lpLocal);
 
         lockIcon.setOnClickListener(v -> {
@@ -145,7 +149,12 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
         });
         closeIcon.setOnClickListener(v -> removeHideBar(overlayLayout));
 
-        changeBackgroundIcon.setOnClickListener(v -> openImagePicker());
+        changeBackgroundIcon.setOnClickListener(v -> {
+                targetSelectId = viewId;
+                openImagePicker();
+        });
+
+
 
         overlayLayout.setOnTouchListener(new View.OnTouchListener() {
             private int initialX;
@@ -206,16 +215,21 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
 
     private void updateFloatViewBackground() {
         if (imageUri != null) {
-            for (View view : bindViewViews) {
-                ImageView imageView = view.findViewById(com.tencent.liteav.demo.R.id.ivImageBackground);
-                imageView.setImageURI(imageUri);
-                imageView.setBackgroundColor(Color.TRANSPARENT); // 设置背景为透明
+            View view = bindViewViews.get(targetSelectId);
+            if (view == null)
+            {
+                return;
             }
+            ImageView imageView = view.findViewById(com.tencent.liteav.demo.R.id.ivImageBackground);
+            imageView.setImageURI(imageUri);
+            imageView.setBackgroundColor(Color.TRANSPARENT); // 设置背景为透明
+
         }
     }
 
 
     private void openImagePicker() {
+
         Intent intent = new Intent(this, ImagePickerActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
@@ -240,7 +254,7 @@ public class ConferenceOptionsActivity extends AppCompatActivity {
     protected void onDestroy() {
         LocalBroadcastManager.getInstance(this).unregisterReceiver(imageUpdateReceiver);
         super.onDestroy();
-        for (View view : bindViewViews) {
+        for (View view : bindViewViews.values()) {
             removeHideBar(view);
         }
     }