package com.application.zhangshi_app_android.ui; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; import androidx.annotation.Nullable; import androidx.databinding.DataBindingUtil; import androidx.databinding.ViewDataBinding; import androidx.drawerlayout.widget.DrawerLayout; import com.android.app_base.base.view.BaseActivity; import com.android.app_base.base.viewmodel.BaseViewModel; import com.android.app_base.manager.AppManager; import com.android.app_base.manager.UserManager; import com.android.app_base.utils.GlideUtil; import com.android.app_base.utils.ScreenSizeUtils; import com.android.app_base.utils.rxbus.MessageEvent; import com.android.app_base.utils.rxbus.RxBus; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.ui.function.CertificateOfHonorActivity; import com.application.zhangshi_app_android.ui.function.CleanStorageActivity; import com.application.zhangshi_app_android.ui.function.ContactsActivity; import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity; import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivity; import com.application.zhangshi_app_android.ui.function.GrowthExperienceActivity; import com.application.zhangshi_app_android.ui.function.HealthCareActivity; import com.application.zhangshi_app_android.ui.function.HomeDevicesActivity; import com.application.zhangshi_app_android.ui.function.HonorCollectionActivity; import com.application.zhangshi_app_android.ui.function.HundredWishActivity; import com.application.zhangshi_app_android.ui.function.IncomeAndExpensesActivity; import com.application.zhangshi_app_android.ui.function.LittleDoctorActivity; import com.application.zhangshi_app_android.ui.function.MarriageActivity; import com.application.zhangshi_app_android.ui.function.PetActivity; import com.application.zhangshi_app_android.ui.function.PetDetailActivity; import com.application.zhangshi_app_android.ui.function.PrivacyActivity; import com.application.zhangshi_app_android.ui.function.PropertyActivity; import com.application.zhangshi_app_android.ui.function.TourismActivity; import com.application.zhangshi_app_android.ui.home.HomeFragment; import com.application.zhangshi_app_android.ui.main.MainActivity; import com.github.gzuliyujiang.wheelpicker.DatePicker; import com.github.gzuliyujiang.wheelpicker.OptionPicker; import com.github.gzuliyujiang.wheelpicker.entity.DateEntity; import com.github.gzuliyujiang.wheelpicker.impl.UnitDateFormatter; import com.github.gzuliyujiang.wheelpicker.widget.DateWheelLayout; import com.github.gzuliyujiang.wheelpicker.widget.OptionWheelLayout; import com.hjq.bar.TitleBar; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.functions.Consumer; /** * @author Ljj * @date 2023.04.01. 18:21 * @desc 该APP里统一侧拉栏的Activity基类 */ public abstract class DLBaseActivity extends BaseActivity { /** * 侧拉栏 */ private DrawerLayout mDrawerLayout; private Map classMap = new HashMap<>(); @Override protected VDB initViewBinding() { if (isDrawerLayoutEnabled()){ mDrawerLayout = new DrawerLayout(this); mDrawerLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); VDB mBinding = DataBindingUtil.inflate(getLayoutInflater(), getLayoutId(), mDrawerLayout, true); if (getDrawerLayoutId() > 0){ getLayoutInflater().inflate(getDrawerLayoutId(), mDrawerLayout, true); }else { throw new IllegalArgumentException("没给侧拉栏布局就不要开启侧拉栏啦"); } setContentView(mDrawerLayout); return mBinding; } return super.initViewBinding(); } /** * 是否开启侧拉栏 */ protected boolean isDrawerLayoutEnabled() { return true; } /** * 获取侧拉栏的id * @return layout的id */ protected int getDrawerLayoutId(){ return R.layout.layout_drawer; }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (mDrawerLayout != null) { classMap.put(HomeFragment.class,(LinearLayout) findViewById(R.id.dl_home_root_net)); classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia)); classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets)); classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices)); classMap.put(HonorCollectionActivity.class,(LinearLayout) findViewById(R.id.dl_honor_collection)); classMap.put(LittleDoctorActivity.class,(LinearLayout) findViewById(R.id.dl_little_doctor)); classMap.put(CleanStorageActivity.class,(LinearLayout) findViewById(R.id.dl_clean_storage)); classMap.put(ContactsActivity.class,(LinearLayout) findViewById(R.id.dl_contacts)); classMap.put(PetActivity.class,(LinearLayout) findViewById(R.id.dl_pet)); classMap.put(IncomeAndExpensesActivity.class,(LinearLayout) findViewById(R.id.dl_income_and_expenses)); classMap.put(GrowthExperienceActivity.class,(LinearLayout) findViewById(R.id.dl_growing_up)); classMap.put(MarriageActivity.class,(LinearLayout) findViewById(R.id.dl_marriage)); classMap.put(PropertyActivity.class,(LinearLayout) findViewById(R.id.dl_property)); classMap.put(HundredWishActivity.class,(LinearLayout) findViewById(R.id.dl_hundred_wish)); classMap.put(HealthCareActivity.class,(LinearLayout) findViewById(R.id.dl_health_care)); classMap.put(CertificateOfHonorActivity.class,(LinearLayout) findViewById(R.id.dl_certificate_of_honor)); classMap.put(PrivacyActivity.class,(LinearLayout) findViewById(R.id.dl_privacy)); classMap.put(TourismActivity.class,(LinearLayout) findViewById(R.id.dl_tourism)); setSelectItem(classMap.get(getClass())); for (Map.Entry set : classMap.entrySet()) { LinearLayout linearLayout = set.getValue(); if (linearLayout != null) { linearLayout.setOnClickListener(v -> { if (set.getKey() != null){ if (set.getKey() == HomeFragment.class) { MainActivity.start(this, HomeFragment.class); }else{ AppManager.getAppManager().startActivity(set.getKey()); } } }); } else { } } mDrawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow)); } setNameAndAvatar(UserManager.getInstance().getUserName(),UserManager.getInstance().getUserAvatar()); RxBus.getInstance().toObservable(this, MessageEvent.class).subscribe(new Consumer() { @Override public void accept(MessageEvent event) throws Exception { if(event.getMessageEventCode() == MessageEvent.EVENT_UPDATE_USER_INFO){ setNameAndAvatar(UserManager.getInstance().getUserName(),UserManager.getInstance().getUserAvatar()); } } }); } public void setNameAndAvatar(String name,String avatar){ if (mDrawerLayout != null){ GlideUtil.loadImage(avatar, findViewById(R.id.dl_home_user_avatar)); TextView userNameTv = findViewById(R.id.dl_home_user_name); userNameTv.setText(name); } } private void setSelectItem(LinearLayout linearLayout) { if (linearLayout == null){ return; } TextView textView = (TextView) linearLayout.getChildAt(1); ImageView imageView = (ImageView) linearLayout.getChildAt(2); textView.setTextColor(Color.parseColor("#FFF6739F")); imageView.setBackgroundResource(R.drawable.ic_vector_pink); } /** * 获取DrawerLayout */ @Nullable public DrawerLayout getDrawerLayout() { return mDrawerLayout; } @Override public void onLeftClick(TitleBar titleBar) { super.onLeftClick(titleBar); mDrawerLayout.open(); } 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; } public DatePicker getDatePicker(){ DatePicker datePicker = new DatePicker(this); DateWheelLayout wheelLayout = datePicker.getWheelLayout(); wheelLayout.getMonthWheelView().setCurtainCorner(0);//背景无圆角 wheelLayout.getDayWheelView().setCurtainCorner(5);//背景右边有圆角 wheelLayout.getYearWheelView().setCurtainCorner(4);//背景左边有圆角 wheelLayout.setDateFormatter(new UnitDateFormatter()); wheelLayout.setPadding(50, 0, 50, 0); wheelLayout.setItemSpace(ScreenSizeUtils.dip2px(getSelfActivity(), 20)); wheelLayout.setCurtainEnabled(true); wheelLayout.setCurtainColor(Color.parseColor("#4D2F63F8")); wheelLayout.setCurtainRadius(ScreenSizeUtils.dip2px(getSelfActivity(),4)); wheelLayout.setSelectedTextColor(Color.parseColor("#FF2F63F8")); wheelLayout.setTextColor(Color.parseColor("#FF999999")); wheelLayout.setIndicatorEnabled(false); //日期可选范围 wheelLayout.setRange(DateEntity.target(1900, 1, 1), DateEntity.target(2500, 12, 31),DateEntity.target(Calendar.getInstance())); datePicker.getWheelLayout().setResetWhenLinkage(false); return datePicker; } public OptionPicker getOptionPicker(List list){ OptionPicker picker = new OptionPicker(this); OptionWheelLayout wheelLayout = picker.getWheelLayout(); wheelLayout.setCurtainCorner(1);//背景无圆角 wheelLayout.setPadding(50, 0, 50, 0); wheelLayout.setItemSpace(ScreenSizeUtils.dip2px(getSelfActivity(), 20)); wheelLayout.setCurtainEnabled(true); wheelLayout.setCurtainColor(Color.parseColor("#4D2F63F8")); wheelLayout.setCurtainRadius(ScreenSizeUtils.dip2px(getSelfActivity(),4)); wheelLayout.setSelectedTextColor(Color.parseColor("#FF2F63F8")); wheelLayout.setTextColor(Color.parseColor("#FF999999")); wheelLayout.setIndicatorEnabled(false); picker.setData(list); return picker; } }