专高二知识点

#Api

#RetrofitManager

public class RetrofitManager {


    //私有化构造
    private RetrofitManager(){}

    //声明变量
    private static RetrofitManager retrofitManager=null;
    //对外提供接口
    public static RetrofitManager getInstance(){

        if(retrofitManager==null){
            retrofitManager=new RetrofitManager();
        }
        return retrofitManager;
    }
    private Retrofit mretrofit;

    private Retrofit getRetrofit(){
       if(mretrofit==null){
           mretrofit=createRetrofit();
       }
       return mretrofit;
    }


    public Retrofit createRetrofit(){
        OkHttpClient okHttpClient=new OkHttpClient.Builder()
                .writeTimeout(5, TimeUnit.MINUTES)
                .connectTimeout(5, TimeUnit.MINUTES)
                .readTimeout(5,TimeUnit.MINUTES)
                //日志拦截器
                .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
                .build();
        mretrofit=new Retrofit.Builder()
                .client(okHttpClient)
                .baseUrl("http://10.161.9.80:7012")
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
        return mretrofit;

    }}
//增加token拦截器

#GlideUtil

public class GlideUtil {
    //加载普通图片
    public static void loadImage(Context context, String path, ImageView imageView) {
        Glide.with(context)
                .load(path)
                .error(context.getDrawable(R.drawable.ic_launcher_background))
                .placeholder(context.getDrawable(R.drawable.ic_launcher_background))
                .thumbnail(0.2f)
                .skipMemoryCache(true)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageView);

    }
    //加载圆形图片
    public static void loadciecleImage(Context context, String path, ImageView imageView) {
        Glide.with(context)
                .load(path)
                .error(R.drawable.ic_launcher_background)
                .placeholder(R.drawable.ic_launcher_background)
                .thumbnail(0.2f)
                .circleCrop()
                .skipMemoryCache(true)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageView);

    }

    //加载圆角图片
    public static void loadcornerImage(Context context, String path, ImageView imageView) {
        Glide.with(context)
                .load(path)
                .error(R.drawable.ic_launcher_background)
                .placeholder(R.drawable.ic_launcher_background)
                .thumbnail(0.2f)
                .transform(new RoundedCorners(20))
                .skipMemoryCache(true)
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageView);

    }

#dylinearlayoutManager

 

public class DYLinearLayoutManager extends LinearLayoutManager {

     PagerSnapHelper pagerSnapHelper;
    public DYLinearLayoutManager(Context context) {
        super(context);
    }

    public DYLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
        super(context, orientation, reverseLayout);
    }

    public DYLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void onAttachedToWindow(RecyclerView view) {
        super.onAttachedToWindow(view);
        pagerSnapHelper=new PagerSnapHelper();
        pagerSnapHelper.attachToRecyclerView(view);
    }
}
#Entity

 

public static final int VIDEO=0;
public static final int FULL=1;
public static final int LIVE=2;
private int code;
private List<DataBean> data;
private String message;
#适配器

public class MyRecommendAdapter extends BaseMultiItemQuickAdapter<VideoEntity.DataBean, BaseViewHolder> {


    public MyRecommendAdapter() {
        addItemType(VideoEntity.VIDEO, R.layout.item_video);
        addItemType(VideoEntity.FULL, R.layout.item_full);
        addItemType(VideoEntity.LIVE, R.layout.item_live);

    }

    @Override
    protected void convert(@NonNull BaseViewHolder baseViewHolder, VideoEntity.DataBean dataBean) {

        switch (dataBean.getType()){
            case VideoEntity.VIDEO:
                break;
            case VideoEntity.FULL: {
                //通过id获取 找见gsy控件
                StandardGSYVideoPlayer standardGSYVideoPlayer = baseViewHolder.getView(R.id.gsy);
                //获取视频路径
                standardGSYVideoPlayer.setUp(dataBean.getVideopath(), true, "");
                //返回按钮隐藏
                standardGSYVideoPlayer.getBackButton().setVisibility(View.GONE);
                ImageView imageView = new ImageView(getContext());
                //加载图
                GlideUtil.loadImage(getContext(), dataBean.getVideomainimg(), imageView);
                //设置缩略图
                standardGSYVideoPlayer.setThumbImageView(imageView);
                //处理图片
                ImageView iv_heard = baseViewHolder.findView(R.id.iv_heard);
                ImageView iv_rotate = baseViewHolder.findView(R.id.iv_rotate);
                GlideUtil.loadciecleImage(getContext(), dataBean.getHeadpath(), iv_heard);
                GlideUtil.loadciecleImage(getContext(), dataBean.getHeadpath(), iv_rotate);

                //属性动画
                ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv_rotate, "Rotation", 0, 360);
                //时间间隔
                objectAnimator.setDuration(2000);
                //插值器
                objectAnimator.setInterpolator(new LinearInterpolator());
                //重复次数
                objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
                //播放
                objectAnimator.start();
                //处理文字
                baseViewHolder.setText(R.id.tv_like, dataBean.getLike_count() + "");
                baseViewHolder.setText(R.id.tv_user, dataBean.getAuthname() + "");
                baseViewHolder.setText(R.id.tv_caption, dataBean.getCaption() + "");
                baseViewHolder.setText(R.id.tv_marquee, dataBean.getAuthname() + "创作的作品");
                TextView tv_marquee = baseViewHolder.getView(R.id.tv_marquee);
                tv_marquee.requestFocus();
            }
                break;
            case VideoEntity.LIVE: {
                //通过id获取 找见gsy控件
                StandardGSYVideoPlayer standardGSYVideoPlayer = baseViewHolder.getView(R.id.gsy);
                //获取视频路径
                standardGSYVideoPlayer.setUp(dataBean.getVideopath(), true, "");
                //返回按钮隐藏
                standardGSYVideoPlayer.getBackButton().setVisibility(View.GONE);
                ImageView imageView = new ImageView(getContext());
                //加载图
                GlideUtil.loadImage(getContext(), dataBean.getVideomainimg(), imageView);
                //设置缩略图
                standardGSYVideoPlayer.setThumbImageView(imageView);
                //处理图片
                ImageView iv_heard = baseViewHolder.findView(R.id.iv_heard);
                ImageView iv_rotate = baseViewHolder.findView(R.id.iv_rotate);
                GlideUtil.loadciecleImage(getContext(), dataBean.getHeadpath(), iv_heard);
                GlideUtil.loadciecleImage(getContext(), dataBean.getHeadpath(), iv_rotate);

                //属性动画
                ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv_rotate, "Rotation", 0, 360);
                //时间间隔
                objectAnimator.setDuration(2000);
                //插值器
                objectAnimator.setInterpolator(new LinearInterpolator());
                //重复次数
                objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
                //播放
                objectAnimator.start();
                //处理文字

                baseViewHolder.setText(R.id.tv_user, dataBean.getAuthname() + "");
                baseViewHolder.setText(R.id.tv_caption, dataBean.getCaption() + "");
                baseViewHolder.setText(R.id.tv_marquee, dataBean.getAuthname() + "创作的作品");
                TextView tv_marquee = baseViewHolder.getView(R.id.tv_marquee);
                tv_marquee.requestFocus();
                break;
            }

        }

    }
}

RecommendModel

#

RecommendViewModel

 

#
RecommentFragment
public class RecommentFragment extends BaseFragment<FragmentRecommentBinding,RecommendViewModel> {

    MyRecommendAdapter myRecommendAdapter;
    public static RecommentFragment newInstance(){
        RecommentFragment recommentFragment = new RecommentFragment();
        Bundle args = new Bundle();
        recommentFragment.setArguments(args);
        return recommentFragment;
    }

    @Override
    protected int getLyoutId() {
        return R.layout.fragment_recomment;
    }
    @Override
    protected Class<RecommendViewModel> getViewModel() {
        return RecommendViewModel.class;
    }
    @Override
    protected void initView() {
      mviewModel.getVideo(17,10);
    }
    @Override
    protected void initData() {
         myRecommendAdapter=new MyRecommendAdapter();
        mviewDataBinding.rvRecommend.setAdapter(myRecommendAdapter);
//        mviewDataBinding.rvRecommend.setLayoutManager(new LinearLayoutManager(getContext()));
        DYLinearLayoutManager dyLinearLayoutManager=new DYLinearLayoutManager(getContext());
        mviewDataBinding.rvRecommend.setLayoutManager(dyLinearLayoutManager);

        //自动播放
        mviewDataBinding.rvRecommend.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View view, int i, int i1, int i2, int i3) {
                int firstVisibleItemPosition = dyLinearLayoutManager.findFirstVisibleItemPosition();
      StandardGSYVideoPlayer standardGSYVideoPlayer= (StandardGSYVideoPlayer) myRecommendAdapter.getViewByPosition(firstVisibleItemPosition,R.id.gsy);
                standardGSYVideoPlayer.startPlayLogic();
            }
        });


        myRecommendAdapter.addChildClickViewIds(R.id.iv_focus,R.id.iv_lick,R.id.iv_comment,R.id.iv_collect,R.id.iv_share);

        myRecommendAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
            @Override
            public void onItemChildClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
                switch (view.getId()) {

                    case R.id.iv_focus:
                        focus(position);
                        break;
                    case R.id.iv_lick:
                        like(position);
                        break;
                    case R.id.iv_comment:
                        break;
                    case R.id.iv_collect:
                        break;
                }

            }

          
        });

    }
    private void like(int position) {
        VideoEntity.DataBean dataBean=myRecommendAdapter.getData().get(position);
        int videoId=dataBean.getId();
        mviewModel.postLove(videoId);
        //图片替换
        ImageView iv_like = (ImageView) myRecommendAdapter.getViewByPosition(position, R.id.iv_lick);
        if(dataBean.getDianzan()==0){
            mviewModel.postLove(videoId);
            iv_like.setImageResource(R.drawable.ic_action_xihuan);
            //缩放动画
            ObjectAnimator scaleX = ObjectAnimator.ofFloat(iv_like, "scaleX", 1, 2, 1);
            ObjectAnimator scaleY = ObjectAnimator.ofFloat(iv_like, "scaleY", 1, 2, 1);
            AnimatorSet animatorSet=new AnimatorSet();
            animatorSet.setDuration(2000);
            animatorSet.play(scaleX).with(scaleY);
            animatorSet.start();
            //处理一下文字
            TextView tv_like = (TextView) myRecommendAdapter.getViewByPosition(position, R.id.tv_like);
            int like_count=dataBean.getLike_count();
            like_count++;
            tv_like.setText(like_count+"");
            dataBean.setDianzan(1);
        }else {
            mviewModel.postNoLove(videoId);
            iv_like.setImageResource(R.drawable.ic_action_love);
            dataBean.setDianzan(0);
        }


    }
    //关注
    private void focus(int position) {
        String authname=myRecommendAdapter.getData().get(position).getAuthname();
        Map<String,String> stringMap=new HashMap<>();
        stringMap.put("authname",authname);
        String json=new Gson().toJson(stringMap);
        RequestBody requestBody=RequestBody.create(MediaType.parse("application/json;charset=utf-8"),json);
        //启动mvvm
        mviewModel.postFocus(requestBody);
        ImageView iv_focus= (ImageView) myRecommendAdapter.getViewByPosition(position,R.id.iv_focus);
        iv_focus.setImageResource(R.drawable.ic_action_duigou);
        iv_focus.setBackground(getContext().getDrawable(R.drawable.ic_action_gray));

        //动画效果
        ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(iv_focus,"alpha",1,0);
        objectAnimator.setDuration(2000);
        objectAnimator.start();

    }

    @Override
    protected void handObserver() {
        super.handObserver();
      mviewModel.videoLiveData.observe(this, new Observer<VideoEntity>() {
          @Override
          public void onChanged(VideoEntity videoEntity) {
              if(videoEntity.getCode()==200){
                  List<VideoEntity.DataBean> dataBeans=videoEntity.getData();
                  myRecommendAdapter.getData().addAll(dataBeans);
                  myRecommendAdapter.notifyDataSetChanged();
              }
          }
      });
      mviewModel.focusLiveData.observe(this, new Observer<ResultEntity>() {
          @Override
          public void onChanged(ResultEntity resultEntity) {
            if(resultEntity.getCode()==200){
                Toast.makeText(getContext(), "关注成功", Toast.LENGTH_SHORT).show();
            }else {
                Toast.makeText(getContext(), "关注成功", Toast.LENGTH_SHORT).show();
            }

          }
      });
        mviewModel.loveLiveData.observe(this, new Observer<ResultEntity>() {
            @Override
            public void onChanged(ResultEntity resultEntity) {
                if(resultEntity.getCode()==200){
                    Toast.makeText(getContext(), "点赞成功", Toast.LENGTH_SHORT).show();
                }else
                {
                    Toast.makeText(getContext(), "点赞成功", Toast.LENGTH_SHORT).show();
                }
            }
        });
        mviewModel.noloveLiveData.observe(this, new Observer<ResultEntity>() {
            @Override
            public void onChanged(ResultEntity resultEntity) {
                if(resultEntity.getCode()==200){
                    Toast.makeText(getContext(), "取消点赞成功", Toast.LENGTH_SHORT).show();
                }else {
                    Toast.makeText(getContext(), "取消点赞失败", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

}

}

  • 38
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值