|
|
@@ -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);
|
|
|
}
|
|
|
}
|