package com.bw.daymvvm1211.fragment; import android.os.Bundle; import androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import androidx.viewpager2.widget.ViewPager2; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.bw.daymvvm1211.R; import com.bw.daymvvm1211.adapter.FragmentAdapter; import com.bw.daymvvm1211.adapter.MyTab; import com.bw.daymvvm1211.databinding.FragmentHomeBinding; import com.bw.daymvvm1211.fragment.guanzhu.GuanZhuFragment; import com.bw.daymvvm1211.fragment.shop.ShopFragment; import com.bw.daymvvm1211.fragment.tuijian.TuiJianFragment; import com.flyco.tablayout.listener.CustomTabEntity; import com.flyco.tablayout.listener.OnTabSelectListener; import java.util.ArrayList; import java.util.List; public class HomeFragment extends Fragment { public List<Fragment> list = new ArrayList<>(); public FragmentHomeBinding fragmentHomeBinding; public FragmentAdapter fragmentAdapter; public ArrayList<CustomTabEntity> list_tab = new ArrayList<>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fragmentHomeBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_home,container,false); // list.add(new ShopFragment()); // list.add(new GuanZhuFragment()); // list.add(new TuiJianFragment()); list.add(ShopFragment.newInstance()); list.add(GuanZhuFragment.newInstance()); list.add(TuiJianFragment.newInstance()); fragmentAdapter = new FragmentAdapter(getActivity(),list); fragmentHomeBinding.viewPager2.setAdapter(fragmentAdapter); list_tab.add(new MyTab("商城",0,0)); list_tab.add(new MyTab("关注",0,0)); list_tab.add(new MyTab("推荐",0,0)); fragmentHomeBinding.commonTabLayout.setTabData(list_tab); fragmentHomeBinding.commonTabLayout.setOnTabSelectListener(new OnTabSelectListener() { @Override public void onTabSelect(int position) { fragmentHomeBinding.viewPager2.setCurrentItem(position); } @Override public void onTabReselect(int position) { } }); fragmentHomeBinding.viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { super.onPageSelected(position); fragmentHomeBinding.commonTabLayout.setCurrentTab(position); } }); return fragmentHomeBinding.getRoot(); } public static HomeFragment newInstance(){ Bundle bundle = new Bundle(); HomeFragment homeFragment = new HomeFragment(); //setArguments() 方法是 Fragment 中用于设置参数的方法, // 它接收一个 Bundle 对象作为参数,用于存储 Fragment 实例所需的参数 homeFragment.setArguments(bundle); return homeFragment; } }
package com.bw.daymvvm1211.fragment.tuijian; import android.animation.ObjectAnimator; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import androidx.lifecycle.Observer; import com.bw.daymvvm1211.UI.DYLinnerLayoutManager; import com.bw.daymvvm1211.R; import com.bw.daymvvm1211.adapter.MyTuiJIanAdapter; import com.bw.daymvvm1211.databinding.FragmentTuiJianBinding; import com.bw.daymvvm1211.entity.DianZanEntity; import com.bw.daymvvm1211.entity.GuanZhuEntity; import com.bw.daymvvm1211.view.BaseMVVMFragment; import com.google.gson.Gson; import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; import java.util.HashMap; import java.util.Map; import okhttp3.MediaType; import okhttp3.RequestBody; public class TuiJianFragment extends BaseMVVMFragment<FragmentTuiJianBinding,TuiJIanViewModel> { private MyTuiJIanAdapter myTuiJIanAdapter; public static TuiJianFragment newInstance(){ Bundle bundle = new Bundle(); TuiJianFragment tuiJianFragment = new TuiJianFragment(); tuiJianFragment.setArguments(bundle); return tuiJianFragment; } @Override protected Class<TuiJIanViewModel> getViewModel() { return TuiJIanViewModel.class; } @Override protected int bindLayout() { return R.layout.fragment_tui_jian; } @Override protected void initData() { viewModel.getTuiJIanVideoData(9,10); } @Override protected void initView() { myTuiJIanAdapter = new MyTuiJIanAdapter(); DYLinnerLayoutManager dyLinnerLayoutManager = new DYLinnerLayoutManager(getContext()); viewDataBinding.recyclerView.setLayoutManager(dyLinnerLayoutManager); viewDataBinding.recyclerView.setAdapter(myTuiJIanAdapter); //自动播放 viewDataBinding.recyclerView.setOnScrollChangeListener(new View.OnScrollChangeListener() { @Override public void onScrollChange(View view, int i, int i1, int i2, int i3) { int firstVisibleItemPosition = dyLinnerLayoutManager.findFirstVisibleItemPosition(); StandardGSYVideoPlayer standardGSYVideoPlayer = (StandardGSYVideoPlayer)myTuiJIanAdapter.getViewByPosition(firstVisibleItemPosition,R.id.gsy); //自动播放 standardGSYVideoPlayer.startPlayLogic(); } }); viewModel.TuiJIanVideoLiveData.observe(this, videoTuiJIanEntity -> { if(videoTuiJIanEntity.getCode() == 200){ myTuiJIanAdapter.getData().addAll(videoTuiJIanEntity.getData()); myTuiJIanAdapter.notifyDataSetChanged(); } }); viewModel.GuanZhuVideoLiveData.observe(this, new Observer<GuanZhuEntity>() { @Override public void onChanged(GuanZhuEntity guanZhuEntity) { if(guanZhuEntity.getCode() == 200){ Toast.makeText(getContext(), "关注成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(getContext(), "关注失败", Toast.LENGTH_SHORT).show(); } } }); viewModel.DianZanVideoLiveData.observe(this, new Observer<DianZanEntity>() { @Override public void onChanged(DianZanEntity dianZanEntity) { if(dianZanEntity.getCode() == 200){ Toast.makeText(getContext(), "点赞成功", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(getContext(), "点赞失败", Toast.LENGTH_SHORT).show(); } } }); myTuiJIanAdapter.addChildClickViewIds(R.id.iv_add,R.id.iv_dianzan,R.id.iv_shoucang,R.id.iv_fenxiang,R.id.iv_tuijian); myTuiJIanAdapter.setOnItemChildClickListener((adapter, view, position) -> { switch (view.getId()){ case R.id.iv_add: guancha(position); break; case R.id.iv_dianzan: dianzan(position); break; } }); } public void guancha(int position){ String authname = myTuiJIanAdapter.getData().get(position).getAuthname(); Map<String,String> map = new HashMap<>(); map.put("authname",authname); String json = new Gson().toJson(map); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), json); viewModel.getGuanZhuVideoData(requestBody); //图片变化 ImageView iv_add = (ImageView) myTuiJIanAdapter.getViewByPosition(position, R.id.iv_add); iv_add.setImageResource(R.drawable.ic_action_duigou); iv_add.setBackground(getContext().getDrawable(R.drawable.shape_tuijian_add)); //动画 ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv_add,"alpha",1,0); objectAnimator.setDuration(2000); objectAnimator.start(); } private void dianzan(int position) { ImageView iv_add = (ImageView) myTuiJIanAdapter.getViewByPosition(position, R.id.iv_dianzan); iv_add.setImageResource(R.drawable.ic_action_aixin2); //动画 ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv_add,"alpha",1,0); objectAnimator.setDuration(2000); objectAnimator.start(); } }
package com.bw.daymvvm1211.fragment.tuijian; import com.bw.daymvvm1211.entity.DianZanEntity; import com.bw.daymvvm1211.entity.GuanZhuEntity; import com.bw.daymvvm1211.entity.VideoTuiJIanEntity; import com.bw.daymvvm1211.model.BaseModel; import io.reactivex.Observable; import okhttp3.RequestBody; import retrofit2.http.Body; import retrofit2.http.Field; public class TuiJIanModel extends BaseModel { public Observable<VideoTuiJIanEntity> TuiJIanVideo(int currentPage,int pageSize){ return api.TuiJIanVideo(currentPage, pageSize); } public Observable<GuanZhuEntity> guanzhu(RequestBody requestBody){ return api.guanzhu(requestBody); } public Observable<DianZanEntity> dianzan(int videoId){ return api.dianzan(videoId); } }
package com.bw.daymvvm1211.fragment.tuijian; import androidx.lifecycle.MutableLiveData; import com.bw.daymvvm1211.entity.DianZanEntity; import com.bw.daymvvm1211.entity.GuanZhuEntity; import com.bw.daymvvm1211.entity.VideoTuiJIanEntity; import com.bw.daymvvm1211.viewmodel.BaseViewModel; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.RequestBody; public class TuiJIanViewModel extends BaseViewModel<TuiJIanModel> { public MutableLiveData<VideoTuiJIanEntity> TuiJIanVideoLiveData = new MutableLiveData<>(); public MutableLiveData<GuanZhuEntity> GuanZhuVideoLiveData = new MutableLiveData<>(); public MutableLiveData<DianZanEntity> DianZanVideoLiveData = new MutableLiveData<>(); @Override public TuiJIanModel createRepo() { return new TuiJIanModel(); } public void getTuiJIanVideoData(int currentPage,int pageSize ){ repo.TuiJIanVideo(currentPage,pageSize) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<VideoTuiJIanEntity>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(VideoTuiJIanEntity videoTuiJIanEntity) { TuiJIanVideoLiveData.postValue(videoTuiJIanEntity); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public void getGuanZhuVideoData(RequestBody requestBody){ repo.guanzhu(requestBody) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<GuanZhuEntity>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(GuanZhuEntity guanZhuEntity) { GuanZhuVideoLiveData.postValue(guanZhuEntity); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public void getDianZanData(int videoId){ repo.dianzan(videoId) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<DianZanEntity>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(DianZanEntity dianZanEntity) { DianZanVideoLiveData.postValue(dianZanEntity); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } }