public class SmallUserWindow extends RelativeLayout {
private ImageView ivSwitchCamera
private PaasPlusRederView ppv
private ImageView ivAvatar
private TextView tvName
private int lastY, lastX, width, height
private boolean isClick
private boolean canMove = true
private Activity activity
private OnSmallClickListener listener
private boolean isMe = true
public SmallUserWindow(Context context) {
this(context, null)
}
public SmallUserWindow(Context context, AttributeSet attrs) {
this(context, attrs, 0)
}
public SmallUserWindow(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr)
initView(context)
}
private void initView(Context context) {
activity = (Activity) context
width = ScreenUtils.getScreenWidth(activity)
height = ScreenUtils.getScreenHeight(activity)
View view = LayoutInflater.from(context).inflate(R.layout.layout_small_user_window, this)
view.setBackgroundResource(R.drawable.shape_video_window_bg)
ivSwitchCamera = view.findViewById(R.id.iv_switch_camera)
ppv = view.findViewById(R.id.ppv)
ivAvatar = view.findViewById(R.id.iv_avatar)
tvName = view.findViewById(R.id.tv_name)
ivSwitchCamera.setOnClickListener(v -> {
if (listener != null) {
listener.onTransCamera()
}
})
if (isMe() && null != UserUtil.getUserUtil(context).getUserData()) {
String avatarUrl = UserUtil.getUserUtil(context).getUserData().getAvatarUrl()
GlideShowUtil.showCircleImage(context, ivAvatar, avatarUrl)
tvName.setText("我")
}
}
/**
* 是否能拖动
*
* @param canMove
*/
public void setCanMove(boolean canMove) {
this.canMove = canMove
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getX()
lastY = (int) event.getY()
isClick = true
break
case MotionEvent.ACTION_MOVE:
//计算移动的距离
float offX = event.getX() - lastX
float offY = event.getY() - lastY
int l, t
//移动距离大于10才做移动事件
if (canMove) {
if (Math.abs(offX) > 10 || Math.abs(offY) > 10) {
//移动事件,点击事件置为false
isClick = false
l = (int) (getLeft() + offX)
t = (int) (getTop() + offY)
if (l < 0) {
l = 0
} else if (l > width - getWidth()) {
l = width - getWidth()
}
if (t < 0) {
t = 0
} else if (t > height - getHeight() - ScreenUtils.dip2px(activity,150)) {
t = height - getHeight() - ScreenUtils.dip2px(activity,150)
}
this.layout(l, t, l + getWidth(), t + getHeight())
}
}
break
case MotionEvent.ACTION_UP:
if (isClick)
if (listener != null) {
listener.onSmallUserWindowClick()
isMe = !isMe
}
break
}
return true
}
public PaasPlusRederView getRenderView() {
return ppv
}
public void switchCamera(boolean isCameraOpen) {
if (isCameraOpen) {
MeetingManager.getInstance().setPreviewView(ppv)
ppv.setRenderViewVisibility(true)
ppv.setVisibility(View.VISIBLE)
ivSwitchCamera.setVisibility(View.VISIBLE)
ivAvatar.setVisibility(View.GONE)
tvName.setVisibility(View.GONE)
} else {
MeetingManager.getInstance().stopPreviewView()
ppv.setRenderViewVisibility(false)
ppv.setVisibility(View.GONE)
ivSwitchCamera.setVisibility(View.GONE)
ivAvatar.setVisibility(View.VISIBLE)
tvName.setVisibility(View.VISIBLE)
}
}
public boolean isMe() {
return isMe
}
public void setMe(boolean me) {
isMe = me
}
public void setOnSmallClickListener(OnSmallClickListener listener) {
this.listener = listener
}
public interface OnSmallClickListener {
void onTransCamera()
void onSmallUserWindowClick()
}
}
```
```