package com.application.zhangshi_app_android.ui.function; import android.graphics.drawable.ColorDrawable; import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; import com.android.app_base.utils.ScreenSizeUtils; import com.android.app_base.widget.LinearItemDecoration; import com.application.zhangshi_app_android.BR; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.adapter.HomeDevicesRvAdapter; import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesBinding; import com.application.zhangshi_app_android.ui.DLBaseActivity; /** * @author Ljj * @date 2023.04.04. 0:00 * @desc 家庭设备 */ public class HomeDevicesActivity extends DLBaseActivity { private HomeDevicesRvAdapter adapter; private PopupWindow mOperatePopupWindow; @Override public int getLayoutId() { return R.layout.activity_home_devices; } @Override public int getVariableId() { return BR.viewModel; } @Override public void initParam() { } @Override public void initView() { adapter = new HomeDevicesRvAdapter(this); LinearItemDecoration itemDecoration = new LinearItemDecoration(); itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); binding.recyclerView.addItemDecoration(itemDecoration); binding.recyclerView.setAdapter(adapter); mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE); mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE); mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> { viewModel.sortDataList(0); mOperatePopupWindow.dismiss(); }); mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> { viewModel.sortDataList(1); mOperatePopupWindow.dismiss(); }); binding.ivOperate.setOnClickListener(v -> { mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); }); } @Override public void initData() { viewModel.getHomeDevices(); } @Override public void initLiveDataObserve() { viewModel.getDataListLiveData().observe(this, homeDevices -> { adapter.setData(homeDevices); }); } public PopupWindow initPopUpWindow(View view){ PopupWindow popupWindow = new PopupWindow(this); // 设置布局文件 popupWindow.setContentView(view); // 为了避免部分机型不显示,需要重新设置一下宽高 popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); // 设置pop透明效果 popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000)); // 设置pop出入动画 popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_operate); // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true popupWindow.setFocusable(true); // 设置pop可点击,为false点击事件无效,默认为true popupWindow.setTouchable(true); // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失 popupWindow.setOutsideTouchable(false); return popupWindow; } }