Skip to content

Commit

Permalink
fix(*):修复滑动冲突问题,优化主页体验,粉丝页载入错误布局
Browse files Browse the repository at this point in the history
  • Loading branch information
dyjcow committed Nov 21, 2022
1 parent 6184ffd commit dad2127
Show file tree
Hide file tree
Showing 20 changed files with 232 additions and 109 deletions.
17 changes: 0 additions & 17 deletions .idea/deploymentTargetDropDown.xml

This file was deleted.

1 change: 1 addition & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ dependencies {
implementation "androidx.viewpager2:viewpager2:1.0.0"

//引入Rv管理
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.7'
// implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.8'


/*retrofit raJava*/
Expand Down Expand Up @@ -140,8 +140,8 @@ dependencies {
annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbus_version"

//抖音
implementation 'com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.9.0'
implementation 'com.bytedance.ies.ugc.aweme:opensdk-common:0.1.9.0'
implementation 'com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.9.4'
implementation 'com.bytedance.ies.ugc.aweme:opensdk-common:0.1.9.4'

//WorkManager
implementation 'androidx.work:work-runtime:2.5.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public class FollowFragment extends BaseFragment<BasePresenter, RelativelayoutMi
}
tab.setCustomView(textView);
};

//根据标签选中与否更改文本效果
private TabLayout.OnTabSelectedListener selectedListener = new TabLayout.OnTabSelectedListener() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.qxy.potatos.R;
import com.qxy.potatos.base.BaseFragment;
import com.qxy.potatos.bean.Fans;
import com.qxy.potatos.bean.Followings;
Expand All @@ -17,6 +18,7 @@
import com.qxy.potatos.module.Follow.presenter.FollowPresenter;
import com.qxy.potatos.module.Follow.view.IFollowView;
import com.qxy.potatos.util.ActivityUtil;
import com.qxy.potatos.util.EmptyViewUtil;
import com.qxy.potatos.util.ToastUtil;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import com.scwang.smart.refresh.header.MaterialHeader;
Expand Down Expand Up @@ -181,4 +183,63 @@ public void loadFail(String msg) {
}
ToastUtil.showToast(msg);
}

@Override public void setFailView() {
FollowingsRecycleViewAdapter followAdapter;
FansRecycleViewAdapter fansAdapter;

View emptyView = EmptyViewUtil.getErrorView(recyclerView);
emptyView.setOnClickListener(v -> {
switch (mType) {
case FollowFragment.FOLLOWINGS: {
//每次刷新重新加载
recyclerView.setAdapter(null);
followingCursor = 0;
presenter.getFollowingsList(followingCursor, 12);
break;
}
case FollowFragment.Fans: {
recyclerView.setAdapter(null);
fanCursor = 0;
presenter.getFansList(fanCursor, 12);
break;
}
default:
break;
}
});

if (recyclerView.getAdapter() == null) {
switch (mType){
case FollowFragment.FOLLOWINGS:
followAdapter = new FollowingsRecycleViewAdapter(null);
recyclerView.setAdapter(followAdapter);
followAdapter.setEmptyView(emptyView);
break;
case FollowFragment.Fans:
fansAdapter = new FansRecycleViewAdapter(null);
recyclerView.setAdapter(fansAdapter);
fansAdapter.setEmptyView(emptyView);
break;
default:
break;
}
}else {
switch (mType) {
case FollowFragment.FOLLOWINGS:
followAdapter = (FollowingsRecycleViewAdapter) recyclerView.getAdapter();
followAdapter.setList(null);
followAdapter.setEmptyView(emptyView);
break;
case FollowFragment.Fans:
fansAdapter = (FansRecycleViewAdapter) recyclerView.getAdapter();
fansAdapter.setList(null);
fansAdapter.setEmptyView(emptyView);
break;
default:
break;

}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
*/
public class FollowPresenter extends BasePresenter<IFollowView> {

private MMKV mmkv = MMKV.defaultMMKV();
private String token = mmkv.decodeString(GlobalConstant.ACCESS_TOKEN);
private String openId = mmkv.decodeString(GlobalConstant.OPEN_ID);
private final MMKV mmkv = MMKV.defaultMMKV();
private final String token = mmkv.decodeString(GlobalConstant.ACCESS_TOKEN);
private final String openId = mmkv.decodeString(GlobalConstant.OPEN_ID);

public FollowPresenter(IFollowView baseView) {
super(baseView);
Expand All @@ -41,6 +41,7 @@ public void getFollowingsList(int cursor, int count) {
@Override
public void onError(String msg) {
LogUtil.e("获取关注列表失败:", msg);
baseView.setFailView();
baseView.loadFail(msg);
}

Expand All @@ -62,6 +63,7 @@ public void getFansList(int cursor, int count) {
@Override
public void onError(String msg) {
LogUtil.e("获取粉丝列表失败:", msg);
baseView.setFailView();
baseView.loadFail(msg);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ public interface IFollowView extends BaseView {
void showFansList(Fans followers);

void loadFail(String msg);

void setFailView();
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public class HomeActivity extends BaseActivity<HomePresenter, ActivityHomeBindin

private final MMKV mmkv = MMKV.defaultMMKV();
List<MyVideo.Videos> list = new ArrayList<>();
private HomeAdapter adapter;
/**
* 保存用户按返回键的时间
*/
Expand Down Expand Up @@ -184,18 +185,14 @@ public void onClick(View view) {
//下拉加载更多
getBinding().homeRefreshlayout.setEnableRefresh(false);
getBinding().homeRefreshlayout.setEnableLoadMore(true);
getBinding().homeRefreshlayout.setRefreshFooter(new ClassicsFooter(this));
getBinding().homeRefreshlayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {

if (isHasMore && checkList.size() != 0) {
presenter.getPersonalVideoList(cursor);
refreshLayout.finishLoadMore(true);
} else {
refreshLayout.finishLoadMore(true);
refreshLayout.setEnableLoadMore(false);
getBinding().homeRecyclerviewFooter.setVisibility(View.VISIBLE);
refreshLayout.finishLoadMoreWithNoMoreData();
}
}
});
Expand Down Expand Up @@ -297,16 +294,20 @@ public void showPersonalInfo(UserInfo userInfo) {
public void showPersonalVideo(List<MyVideo.Videos> videos, boolean isHasMore, long cursor) {
this.isHasMore = isHasMore;
this.cursor = cursor;
HomeAdapter adapter = new HomeAdapter(R.layout.reycylerview_item_home, list);
adapter.addChildClickViewIds(R.id.home_item_imageView);
adapter.setAnimationEnable(true);
adapter.setAnimationFirstOnly(true);
adapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.SlideInBottom);

//recyclerview初始化
getBinding().recyclerViewHome.addItemDecoration(new HomeItemDecoration(120, 5, 5, 5));
getBinding().recyclerViewHome.setLayoutManager(new GridLayoutManager(this, 3));
getBinding().recyclerViewHome.setAdapter(adapter);
// TODO: 2022/11/21 改为不得重复创建
if (adapter == null){
adapter = new HomeAdapter(R.layout.reycylerview_item_home, list);
adapter.addChildClickViewIds(R.id.home_item_imageView);
adapter.setAnimationEnable(true);
adapter.setAnimationFirstOnly(true);
adapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.SlideInBottom);

//recyclerview初始化
getBinding().recyclerViewHome.addItemDecoration(new HomeItemDecoration(120, 5, 5, 5));
getBinding().recyclerViewHome.setLayoutManager(new GridLayoutManager(this, 3));
getBinding().recyclerViewHome.setAdapter(adapter);
}

adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
Expand All @@ -316,6 +317,7 @@ public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View v
startActivity(intent);
}
});

if (videos != null) {
for (int i = 0; i < videos.size(); i++) {
checkList.clear();
Expand All @@ -332,7 +334,7 @@ public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View v
getBinding().homeTextViewLike.setText(like+getString(R.string.likes));

}

getBinding().homeRefreshlayout.finishLoadMore(true);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void getPersonalVideoList(long cursor) {
HashMap<String, Long> map = new HashMap<>();
map.put(MyUtil.getString(R.string.cursor), cursor);
map.put(MyUtil.getString(R.string.count), (long) 12);
addDisposable(apiServer.GetMyVideos(access_token, openId, map), new BaseObserver<BaseBean<MyVideo>>(baseView, true) {
addDisposable(apiServer.GetMyVideos(access_token, openId, map), new BaseObserver<BaseBean<MyVideo>>(baseView, false) {
@Override
public void onError(String msg) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,12 @@ public void onBackPressed() {

@Override
public void onReq(BaseReq baseReq) {

LogUtil.d("onReq");
}

@Override
public void onResp(BaseResp baseResp) {
LogUtil.d("onResp");
if (baseResp.getType() == CommonConstants.ModeType.SEND_AUTH_RESPONSE) {
Authorization.Response response = (Authorization.Response) baseResp;
if (baseResp.isSuccess()) {
Expand All @@ -157,6 +158,6 @@ public void onResp(BaseResp baseResp) {

@Override
public void onErrorIntent(Intent intent) {

LogUtil.d("onErrorIntent");
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,40 @@
package com.qxy.potatos.module.videorank.activity;

import android.app.Activity;
import android.content.res.Resources;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.ColorRes;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import com.bumptech.glide.Glide;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import com.qxy.potatos.R;
import com.qxy.potatos.annotation.InitAIHand;
import com.qxy.potatos.base.BaseActivity;
import com.qxy.potatos.databinding.ActivityVideoRankBinding;
import com.qxy.potatos.module.videorank.adapter.VRViewPageAdapter;
import com.qxy.potatos.module.videorank.fragment.VideoRankFragment;
import com.qxy.potatos.module.videorank.presenter.RankPresenter;
import com.qxy.potatos.module.videorank.view.IRankView;
import com.qxy.potatos.util.ActivityUtil;
import com.qxy.potatos.util.ColorUtil;
import com.qxy.potatos.util.LogUtil;
import com.qxy.potatos.util.MyUtil;

import java.util.ArrayList;
import java.util.List;

@InitAIHand
public class RankActivity extends BaseActivity<RankPresenter, ActivityVideoRankBinding> implements IRankView {
private final String[] tabText = {"电影榜", "电视剧榜", "综艺榜"};

private final Activity activity = ActivityUtil.getCurrentActivity();

/**
* 初始化presenter,也是与Activity的绑定
Expand Down Expand Up @@ -71,9 +84,58 @@ private void showView() {
new TabLayoutMediator(getBinding().tabLayout, getBinding().viewPager2, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
tab.setText(tabText[position]);
TextView textView = new TextView(activity);
textView.setGravity(Gravity.CENTER_HORIZONTAL);
textView.setText(tabText[position]);
tab.setCustomView(textView);
}
}).attach();

getBinding().viewPager2.registerOnPageChangeCallback(changeCallback);
getBinding().tabLayout.addOnTabSelectedListener(selectedListener);

}


//根据标签选中与否更改文本效果
private TabLayout.OnTabSelectedListener selectedListener = new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getCustomView() != null) {
TextView textView = (TextView) tab.getCustomView();
textView.setTextAppearance(activity, R.style.selected_tab_text);
}
}

@Override
public void onTabUnselected(TabLayout.Tab tab) {
if (tab.getCustomView() != null) {
TextView textView = (TextView) tab.getCustomView();
textView.setTextAppearance(activity, R.style.unselected_tab_text);
}
}

@Override
public void onTabReselected(TabLayout.Tab tab) {

}
};
//根据页面切换与否更改文本效果
private ViewPager2.OnPageChangeCallback changeCallback = new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
int tabCount = getBinding().tabLayout.getTabCount();
for (int i = 0; i < tabCount; i++) {
TabLayout.Tab tab = getBinding().tabLayout.getTabAt(i);
TextView textView = (TextView) tab.getCustomView();
if (textView != null) {
if (tab.getPosition() == position) {
textView.setTextAppearance(activity, R.style.selected_tab_text);
} else {
textView.setTextAppearance(activity, R.style.unselected_tab_text);
}
}
}
}
};
}
Loading

0 comments on commit dad2127

Please sign in to comment.