package com.application.zhangshi_app_android.ui.function;
|
|
import android.content.Intent;
|
import android.os.Bundle;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.widget.PopupWindow;
|
|
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.FragmentTransaction;
|
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.BannerBean;
|
import com.application.zhangshi_app_android.databinding.FragmentFunctionBinding;
|
import com.application.zhangshi_app_android.ui.DLBaseFragment;
|
import com.application.zhangshi_app_android.ui.dialog.TotalAddDialog;
|
import com.application.zhangshi_app_android.ui.home.TreeFragment;
|
import com.application.zhangshi_app_android.ui.main.MainActivity;
|
|
import java.io.Serializable;
|
import java.util.List;
|
|
/**
|
* @author Ljj
|
* @date 2023.03.15. 20:14
|
* @desc 首页 Fragment
|
*/
|
public class HomeFragment extends DLBaseFragment<FragmentFunctionBinding,FunctionFragmentViewModel> {
|
|
private PopupWindow mOperatePopupWindow;
|
private ImageCarouselFragment imageCarouselFragment;
|
private VideoCarouselFragment videoCarouselFragment;
|
|
private 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_function;
|
}
|
|
@Override
|
protected int getVariableId() {
|
return BR.viewModel;
|
}
|
|
@Override
|
protected void initParam() {
|
|
}
|
|
@Override
|
protected void initView() {
|
binding.layoutHomeRootNet.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
MainActivity.start(getSelfActivity(), TreeFragment.class);
|
}
|
});
|
binding.layoutFamilyMemorabilia.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
AppManager.getAppManager().startActivity(FamilyMemorabiliaActivity.class);
|
}
|
});
|
binding.layoutGrowingUp.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
AppManager.getAppManager().startActivity(PersonalNotepadActivity.class);
|
}
|
});
|
binding.layoutFamilyAssets.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View view) {
|
AppManager.getAppManager().startActivity(FamilyAssetsActivity.class);
|
}
|
});
|
binding.layoutHomeDevices.setOnClickListener(view -> {
|
AppManager.getAppManager().startActivity(HomeDevicesActivity.class);
|
});
|
binding.layoutGrowingUp.setOnClickListener(view -> {
|
AppManager.getAppManager().startActivity(PersonalNotepadActivity.class);
|
});
|
binding.layoutHonorCollection.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(HonorCollectionActivity.class);
|
});
|
binding.layoutLittleDoctor.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(LittleDoctorActivity.class);
|
});
|
binding.layoutCleanStorage.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(CleanStorageActivity.class);
|
});
|
binding.layoutPet.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(PetActivity.class);
|
});
|
binding.layoutIncomeAndExpenses.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(IncomeAndExpensesActivity.class);
|
});
|
binding.layoutProperty.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(PropertyActivity.class);
|
});
|
binding.layoutHundredWish.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(HundredWishActivity.class);
|
});
|
binding.layoutCertificateOfHonor.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(CertificateOfHonorActivity.class);
|
});
|
binding.layoutMarriage.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(MarriageActivity.class);
|
});
|
binding.layoutHealthCare.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(AnnualHealthStatusActivity.class);
|
});
|
binding.layoutPrivacy.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(PrivacyActivity.class);
|
});
|
binding.layoutTourism.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(TourismActivity.class);
|
});
|
binding.layoutContacts.setOnClickListener(v->{
|
AppManager.getAppManager().startActivity(ContactsActivity.class);
|
});
|
|
binding.fabAdd.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
|
}
|
});
|
binding.fabAdd.setOnTouchListener(new View.OnTouchListener() {
|
|
private boolean isDragging = false;
|
private int startX, startY;
|
private float dX, dY;
|
|
@Override
|
public boolean onTouch(View v, MotionEvent event) {
|
boolean flag = false;
|
|
switch (event.getAction()) {
|
case MotionEvent.ACTION_DOWN:
|
// 计算手指按下时相对于 FloatingActionButton 的偏移量
|
dX = v.getX() - event.getRawX();
|
dY = v.getY() - event.getRawY();
|
startY = (int) event.getRawY();
|
startX = (int) event.getRawX();
|
isDragging = false;
|
break;
|
case MotionEvent.ACTION_MOVE:
|
// 更新 FloatingActionButton 的位置
|
float newX = event.getRawX() + dX;
|
float newY = event.getRawY() + dY;
|
|
// 限制移动范围
|
float minX = 0;
|
float maxX = binding.container.getWidth() - v.getWidth();
|
float minY = 0;
|
float maxY = binding.container.getHeight() - v.getHeight();
|
|
// 确保不超出范围
|
if (newX < minX) {
|
newX = minX;
|
} else if (newX > maxX) {
|
newX = maxX;
|
}
|
|
if (newY < minY) {
|
newY = minY;
|
} else if (newY > maxY) {
|
newY = maxY;
|
}
|
v.setX(newX);
|
v.setY(newY);
|
if (Math.abs(event.getRawX() - startX) > 10 || Math.abs(event.getRawY() - startY) > 10) {
|
isDragging = true; // 如果移动距离大于阈值,认为是拖动
|
}else {
|
isDragging = false;
|
}
|
flag = true;
|
break;
|
case MotionEvent.ACTION_UP:
|
if (!isDragging) {
|
// 如果没有拖动,认为是点击事件
|
new TotalAddDialog.Builder(getContext()).show();
|
}
|
break;
|
default:
|
break;
|
}
|
return flag;
|
}
|
});
|
|
binding.ivOperateSelect.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),ImageSelectActivity.class).putExtra("flag",0).putExtra("list", (Serializable) imageCarouselFragment.getImageList()));
|
}
|
});
|
|
//右上角操作弹窗
|
mOperatePopupWindow = initPopUpWindow(View.inflate(getSelfActivity(),R.layout.pop_switch_video_or_image,null));
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_image).setOnClickListener(v -> {
|
mOperatePopupWindow.dismiss();
|
imageCarouselFragment = ImageCarouselFragment.newInstance();
|
replaceFragment(imageCarouselFragment);
|
imageCarouselFragment.setImageList(viewModel.getImageListLiveData().getValue());
|
binding.ivOperateSelect.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),ImageSelectActivity.class).putExtra("flag",0).putExtra("list", (Serializable) imageCarouselFragment.getImageList()));
|
}
|
});
|
});
|
mOperatePopupWindow.getContentView().findViewById(R.id.tv_video).setOnClickListener(v -> {
|
mOperatePopupWindow.dismiss();
|
videoCarouselFragment = VideoCarouselFragment.newInstance();
|
replaceFragment(videoCarouselFragment);
|
videoCarouselFragment.setVideoList(viewModel.getVideoListLiveData().getValue());
|
binding.ivOperateSelect.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),ImageSelectActivity.class).putExtra("flag",1).putExtra("list", (Serializable) videoCarouselFragment.getVideoList()));
|
}
|
|
});
|
});
|
//点击弹出操作弹窗
|
binding.ivOperate.setOnClickListener(v -> {
|
mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(getSelfActivity(),85) +binding.ivOperate.getWidth(),0);
|
});
|
|
imageCarouselFragment = ImageCarouselFragment.newInstance();
|
replaceFragment(imageCarouselFragment);
|
}
|
public void replaceFragment(Fragment fragment){
|
FragmentTransaction transaction = getSelfActivity().getSupportFragmentManager().beginTransaction();
|
transaction.replace(R.id.layout_frame,fragment);
|
transaction.commit();
|
}
|
@Override
|
protected void initData() {
|
viewModel.getBannerData();
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
initData();
|
}
|
|
@Override
|
protected void initLiveDataObserve() {
|
viewModel.getImageListLiveData().observe(this, new Observer<List<BannerBean>>() {
|
@Override
|
public void onChanged(List<BannerBean> bannerBeans) {
|
if (imageCarouselFragment != null){
|
imageCarouselFragment.setImageList(bannerBeans);
|
}
|
}
|
});
|
viewModel.getVideoListLiveData().observe(this, new Observer<List<BannerBean>>() {
|
@Override
|
public void onChanged(List<BannerBean> bannerBeans) {
|
if (videoCarouselFragment != null){
|
videoCarouselFragment.setVideoList(bannerBeans);
|
}
|
}
|
});
|
|
}
|
|
@Override
|
protected boolean isStatusBarImmersionEnabled() {
|
return true;
|
}
|
|
}
|