package com.application.zhangshi_app_android.ui.home;
|
|
import android.annotation.SuppressLint;
|
import android.graphics.drawable.ColorDrawable;
|
import android.os.Bundle;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.PopupWindow;
|
|
import androidx.databinding.DataBindingUtil;
|
import androidx.lifecycle.Observer;
|
|
import com.android.app_base.manager.AppManager;
|
import com.android.app_base.utils.ScreenSizeUtils;
|
import com.application.zhangshi_app_android.BR;
|
import com.application.zhangshi_app_android.R;
|
import com.application.zhangshi_app_android.bean.HomeRootBean;
|
import com.application.zhangshi_app_android.databinding.FragmentHomeBinding;
|
import com.application.zhangshi_app_android.databinding.PopBasicInformationDoubleBinding;
|
import com.application.zhangshi_app_android.databinding.PopBasicInformationSingleBinding;
|
import com.application.zhangshi_app_android.ui.DLBaseFragment;
|
import com.application.zhangshi_app_android.widget.HomeMindMapLayout;
|
|
import java.util.List;
|
|
/**
|
* @author Ljj
|
* @date 2023.3.15
|
* @desc 首页 Fragment
|
*/
|
public class HomeFragment extends DLBaseFragment<FragmentHomeBinding,HomeFragmentViewModel> {
|
private PopupWindow mOperatePopupWindow;
|
public HomeFragment() {
|
}
|
|
public static HomeFragment newInstance() {
|
HomeFragment fragment = new HomeFragment();
|
Bundle args = new Bundle();
|
fragment.setArguments(args);
|
return fragment;
|
}
|
|
@Override
|
protected int getLayoutId() {
|
return R.layout.fragment_home;
|
}
|
|
@Override
|
protected int getVariableId() {
|
return BR.viewModel;
|
}
|
|
@Override
|
protected void initParam() {
|
|
}
|
|
@SuppressLint("ClickableViewAccessibility")
|
@Override
|
protected void initView() {
|
mOperatePopupWindow = initPopUpWindow(View.inflate(getSelfActivity(),R.layout.pop_operate_home_root_net,null));
|
binding.ivOperate.setOnClickListener(v -> {
|
mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(getSelfActivity(),120) +binding.ivOperate.getWidth(),0);
|
});
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_family).setOnClickListener(v -> {
|
AppManager.getAppManager().startActivity(GenealogyActivity.class);
|
mOperatePopupWindow.dismiss();
|
});
|
binding.scrollHomeMindMapLayout.setOnItemClickListener(new HomeMindMapLayout.OnItemClickListener() {
|
@Override
|
public void onItemClick(View view, HomeRootBean bean) {
|
View contentView;
|
if (bean.getSpouse()!=null) {
|
bean.getSpouse().setSpouse(bean);
|
PopBasicInformationDoubleBinding binding= DataBindingUtil.inflate(getLayoutInflater(),R.layout.pop_basic_information_double,null,false);
|
binding.setSelfBean(bean);
|
binding.setSpouseBean(bean.getSpouse());
|
contentView = binding.getRoot();
|
}else {
|
PopBasicInformationSingleBinding binding = DataBindingUtil.inflate(getLayoutInflater(),R.layout.pop_basic_information_single,null,false);
|
binding.setSelfBean(bean);
|
contentView = binding.getRoot();
|
}
|
PopupWindow popupWindow = new PopupWindow();
|
// 设置布局文件
|
popupWindow.setContentView(contentView);
|
// 为了避免部分机型不显示,需要重新设置一下宽高
|
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_info);
|
// 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true
|
popupWindow.setFocusable(true);
|
// 设置pop可点击,为false点击事件无效,默认为true
|
popupWindow.setTouchable(true);
|
// 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失
|
popupWindow.setOutsideTouchable(false);
|
|
|
popupWindow.setHeight(binding.zoomLayout.getHeight());
|
popupWindow.setWidth(binding.zoomLayout.getWidth());
|
popupWindow.showAsDropDown(binding.titleBar,0,0);
|
}
|
});
|
}
|
|
|
|
@Override
|
protected void initData() {
|
viewModel.getHomeRootBeanList();
|
}
|
|
@Override
|
protected void initLiveDataObserve() {
|
|
viewModel.getHomeRootBeanLiveData().observe(this, new Observer<List<HomeRootBean>>() {
|
@Override
|
public void onChanged(List<HomeRootBean> homeRootBeans) {
|
if (homeRootBeans == null || homeRootBeans.size() == 0) {
|
return;
|
}
|
binding.scrollHomeMindMapLayout.setRootMember(homeRootBeans.get(0));
|
}
|
});
|
}
|
|
@Override
|
protected boolean isStatusBarImmersionEnabled() {
|
return true;
|
}
|
|
}
|