广场话题UI优化

This commit is contained in:
huangjian
2023-03-20 16:49:35 +08:00
parent e7193e9ef4
commit c94b40fe8a
5 changed files with 140 additions and 105 deletions

View File

@@ -74,6 +74,11 @@ public class CustomerServerHelper {
.setValue(userInfo.isNewUser() ? "" : "")
.setIndex(4));
userData.add(new CustomerItemInfo("uid")
.setLabel("uid")
.setValue("uid:" + userInfo.getUid())
.setIndex(4));
ysfUserInfo.data = new Gson().toJson(userData);
Unicorn.setUserInfo(ysfUserInfo);
@@ -86,15 +91,7 @@ public class CustomerServerHelper {
}
isInit = true;
YSFOptions options = new YSFOptions();
options.inputPanelOptions = new InputPanelOptions();
options.inputPanelOptions.showActionPanel = true;
options.inputPanelOptions.actionPanelOptions = new ActionPanelOptions();
options.uiCustomization = new UICustomization();
if (userInfo != null) {
options.uiCustomization.rightAvatar = userInfo.getAvatar();
}
options.uiCustomization.titleBarStyle = 0;
options.uiCustomization.leftAvatar = AVATAR_URL;
options.uiCustomization.hideKeyboardOnEnterConsult = true;
options.uiCustomization.titleCenter = true;

View File

@@ -17,8 +17,11 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.netease.nim.uikit.common.ui.draggablebubbles.BubbleView;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.nnbc123.app.R;
@@ -30,6 +33,8 @@ import com.nnbc123.app.community.publish.view.PublishActivity;
import com.nnbc123.app.home.activity.CommunityNoticeAct;
import com.nnbc123.app.home.adapter.MainMagicIndicatorAdapter;
import com.nnbc123.app.miniworld.activity.TopicMainActivity;
import com.nnbc123.app.miniworld.adapter.RecommendTopicListAdapter;
import com.nnbc123.app.miniworld.listener.DoubleClickCheckListener;
import com.nnbc123.app.ui.utils.ImageLoadKt;
import com.nnbc123.app.ui.widget.OnPageSelectedListener;
import com.nnbc123.app.ui.widget.magicindicator.MagicIndicator;
@@ -87,21 +92,21 @@ public class SquareFragment extends BaseFragment implements MainMagicIndicatorAd
MagicIndicator magicIndicator;
@BindView(R.id.view_pager)
ViewPager viewPager;
Unbinder unbinder;
@BindView(R.id.iv_square_publish)
DragLayout ivSquarePublish;
@BindView(R.id.fl_contact_list)
FrameLayout flContactList;
@BindView(R.id.msg_number)
View tvCommunityUnread;
@BindView(R.id.roll_view)
RollPagerView rollView;
Unbinder unbinder;
private RecommendTopicListAdapter mRecommendTopicAdapter;
public static SquareFragment newInstance() {
return new SquareFragment();
}
@SuppressLint("CheckResult")
@Override
public void initiate() {
List<Integer> fragmentPos = new ArrayList<>();
@@ -155,54 +160,12 @@ public class SquareFragment extends BaseFragment implements MainMagicIndicatorAd
magicIndicator.setNavigator(commonNavigator);
ViewPagerHelper.bind(magicIndicator, viewPager);
viewPager.setCurrentItem(TAB_TYPE_RECOMMEND);
initTopic();
}
@SuppressLint({"CheckResult", "SetTextI18n"})
private void initTopic() {
rollView.setHintView(new ColorPointHintView(mContext, Color.WHITE, mContext.getResources().getColor(R.color.color_66FFFFFF)) {
@Override
public Drawable makeFocusDrawable() {
GradientDrawable dotFocus = new GradientDrawable();
dotFocus.setColor(Color.WHITE);
dotFocus.setCornerRadius(Util.dip2px(getContext(), 2));
dotFocus.setSize(Util.dip2px(getContext(), 9), Util.dip2px(getContext(), 4));
return dotFocus;
}
@Override
public Drawable makeNormalDrawable() {
GradientDrawable dotNormal = new GradientDrawable();
dotNormal.setColor(mContext.getResources().getColor(R.color.color_66FFFFFF));
dotNormal.setCornerRadius(Util.dip2px(getContext(), 2));
dotNormal.setSize(Util.dip2px(getContext(), 4), Util.dip2px(getContext(), 4));
return dotNormal;
}
});
initRecyclerView();
MiniWorldModel.getInstance().getCategoryMiniWorldList("0", 1, 500)
.compose(RxHelper.handleSchAndExce())
.compose(bindToLifecycle())
.subscribe((miniWorldInfos, throwable) -> {
if (miniWorldInfos != null) {
rollView.setAdapter(new StaticPagerAdapter() {
@Override
public View getView(ViewGroup container, int position) {
MiniWorldInfo worldInfo = miniWorldInfos.get(position);
View flRoot = LayoutInflater.from(container.getContext()).inflate(R.layout.item_square_topic_banner, container, false);
ImageView imgBanner = flRoot.findViewById(R.id.iv_cover);
ImageLoadKt.load(imgBanner, worldInfo.getIcon(), 12);
flRoot.setOnClickListener(v -> TopicMainActivity.start(mContext, String.valueOf(worldInfo.getId())));
return flRoot;
}
@Override
public int getCount() {
return miniWorldInfos.size();
}
});
rollView.setPlayDelay(5000);
}
mRecommendTopicAdapter.setNewData(miniWorldInfos);
});
}
@@ -219,6 +182,32 @@ public class SquareFragment extends BaseFragment implements MainMagicIndicatorAd
}
}
private void initRecyclerView() {
RecyclerView recyclerView = mView.findViewById(R.id.rv_topic);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);
List<MiniWorldInfo> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
list.add(new MiniWorldInfo());
}
mRecommendTopicAdapter = new RecommendTopicListAdapter(list);
mRecommendTopicAdapter.setEnableLoadMore(false);
mRecommendTopicAdapter.setOnItemClickListener(new DoubleClickCheckListener() {
@Override
protected void onItemClickSingle(BaseQuickAdapter adapter, View view, int position) {
MiniWorldInfo miniWorldInfo = mRecommendTopicAdapter.getItem(position);
if (miniWorldInfo == null) {
return;
}
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SQUARE_DONGTAI_TJ_HJ_CLICK,
"广场动态页_推荐_点击话题");
TopicMainActivity.start(mContext, String.valueOf(miniWorldInfo.getId()));
}
});
recyclerView.setAdapter(mRecommendTopicAdapter);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View File

@@ -33,8 +33,8 @@
android:layout_marginBottom="15dp"
android:layout_height="wrap_content">
<com.nnbc123.app.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_topic"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="345:74"

View File

@@ -22,6 +22,8 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.netease.nim.uikit.StatusBarUtil;
import com.nnbc123.app.R;
import com.nnbc123.app.UIHelper;
@@ -88,6 +90,10 @@ public class TopicMainActivity extends BaseMvpActivity<IMiniWorldGuestPage, Mini
ImageView ivBg;// 高斯模糊背景
@BindView(R.id.layout_world_guest_page)
ViewGroup layoutPage;
@BindView(R.id.abl_mw_info)
AppBarLayout ablMWInfo;
@BindView(R.id.collapsing_toolbar)
CollapsingToolbarLayout collapsingToolbarLayout;
@BindView(R.id.tv_world_description)
TextView tvWorldDescription;// 世界描述
@@ -100,6 +106,9 @@ public class TopicMainActivity extends BaseMvpActivity<IMiniWorldGuestPage, Mini
@BindView(R.id.fl_iv_publish)
FrameLayout flPublish;
@BindView(R.id.iv_back)
View ivBack;
private EasyPopup easyPopup;// 点击更多弹窗
private String worldId;
@@ -121,7 +130,6 @@ public class TopicMainActivity extends BaseMvpActivity<IMiniWorldGuestPage, Mini
EventBus.getDefault().register(this);
ButterKnife.bind(this);
getMvpPresenter().attachMvpView(this);
initWhiteTitleBar("");
if (getIntent() != null && getIntent().getStringExtra("world_id") != null) {
worldId = getIntent().getStringExtra("world_id");
} else {
@@ -182,6 +190,8 @@ public class TopicMainActivity extends BaseMvpActivity<IMiniWorldGuestPage, Mini
private void setListeners() {
flPublish.setOnClickListener(this);
ablMWInfo.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> tvWorldDescription.setAlpha((200 + verticalOffset) / 200f));
ivBack.setOnClickListener(v -> finish());
}
@Override
@@ -276,7 +286,8 @@ public class TopicMainActivity extends BaseMvpActivity<IMiniWorldGuestPage, Mini
ImageLoadUtils.loadImage(context, infoVM.getWorldIcon(), ivBg);
isSet = true;
mTitleBar.setTitle(infoVM.getWorldName());
// 世界昵称
collapsingToolbarLayout.setTitle(infoVM.getWorldName());
// 世界描述
tvWorldDescription.setText(infoVM.getWorldDescription());

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_world_guest_page"
@@ -8,20 +8,33 @@
android:background="@color/bg_normal_1c1b22"
android:orientation="vertical">
<com.nnbc123.app.base.TitleBar
android:id="@+id/title_bar"
android:layout_marginTop="25dp"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/dp_50">
<FrameLayout
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/abl_mw_info"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:background="@color/transparent"
app:elevation="0dp">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:collapsedTitleTextAppearance="@style/TitleTextAppearance"
app:contentScrim="@color/transparent"
app:expandedTitleMarginBottom="120dp"
app:expandedTitleTextAppearance="@style/TitleTextAppearance"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/iv_bg"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_height="225dp"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.4"
@@ -30,23 +43,44 @@
<View
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_height="225dp"
android:background="#66000000" />
<TextView
android:id="@+id/tv_world_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="50dp"
android:layout_marginEnd="50dp"
android:lines="2"
android:textColor="#FFFFFF"
android:textSize="12sp"
android:layout_marginStart="@dimen/dp_32"
android:layout_marginTop="112dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="15dp"
android:lineSpacingExtra="5dp"
android:textColor="#CCFFFFFF"
android:textSize="13sp"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.4"
tools:text="故事的小黄花,从出生那年就飘着,童年的荡秋千,随记忆一直晃到现在故事的小黄花,从出生那年就飘着,童年的荡秋千,随记忆一直晃到现在~" />
</FrameLayout>
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="70dp"
android:paddingTop="@dimen/dp_20"
android:visibility="visible"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin">
<ImageView
android:id="@+id/iv_back"
android:layout_width="44dp"
android:layout_height="44dp"
android:scaleType="centerInside"
android:src="@drawable/arrow_left_white" />
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<com.nnbc123.app.ui.widget.magicindicator.MagicIndicator
android:id="@+id/mi_mini_world"
@@ -54,11 +88,16 @@
android:layout_height="33dp"
android:layout_marginEnd="12dp" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_mini_world"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/fl_iv_publish"
@@ -79,6 +118,5 @@
tools:ignore="ContentDescription" />
</FrameLayout>
</LinearLayout>
</FrameLayout>