This commit is contained in:
2023-10-12 14:40:47 +08:00
parent 095574296f
commit 5ee72410b7
33 changed files with 1513 additions and 25 deletions

View File

@@ -40,8 +40,9 @@ public abstract class AbsOTOActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
onCreate();
setStatusBar();
if(onCreate()) {
setStatusBar();
}
setContentView(getLayoutId());
mContext = this;
main(savedInstanceState);
@@ -65,7 +66,7 @@ public abstract class AbsOTOActivity extends AppCompatActivity {
protected abstract void main(Bundle savedInstanceState);
protected void onCreate(){}
protected boolean onCreate(){ return true;}
/**
* 设置标题

View File

@@ -0,0 +1,86 @@
package com.shayu.onetoone.activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.angcyo.tablayout.DslTabLayout;
import com.angcyo.tablayout.delegate2.ViewPager2Delegate;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.fragments.home.HomeRankFragment;
import com.shayu.onetoone.listener.OnAppbarListener;
import java.util.ArrayList;
import java.util.List;
public class HomepageRankingActivity extends AbsOTOActivity {
ViewPager2 viewPager;
DslTabLayout dslTabLayout;
RadioButton mDay, mWeek;
private RadioGroup radioGroup;
List<HomeRankFragment> fragments = new ArrayList<>();
@Override
protected int getLayoutId() {
return R.layout.activity_main_list;
}
@Override
protected void main(Bundle savedInstanceState) {
mDay = findViewById(R.id.btn_day);
mWeek = findViewById(R.id.btn_week);
viewPager = findViewById(R.id.view_pager);
dslTabLayout = findViewById(R.id.dslTabLayout);
radioGroup = findViewById(R.id.radioGroup);
ViewPager2Delegate.Companion.install(viewPager, dslTabLayout, false);
fragments.add(new HomeRankFragment(HomeRankFragment.TYPE_CHARM));//魅力
fragments.add(new HomeRankFragment(HomeRankFragment.TYPE_WEALTH)); //财富
viewPager.setAdapter(new FragmentStateAdapter(this) {
@NonNull
@Override
public Fragment createFragment(int position) {
fragments.get(position).setAppbarListener(new OnAppbarListener() {
@Override
public void onShow(boolean isShow) {
if (isShow) {
radioGroup.setVisibility(View.VISIBLE);
} else {
radioGroup.setVisibility(View.INVISIBLE);
}
}
});
return fragments.get(position);
}
@Override
public int getItemCount() {
return fragments.size();
}
});
mDay.setOnClickListener(v -> {
setRadioColor(mDay, mWeek);
});
mWeek.setOnClickListener(v -> {
setRadioColor(mWeek, mDay);
});
}
private void setRadioColor(RadioButton select, RadioButton unSelect) {
select.setTextColor(Color.parseColor("#FFFFFF"));
unSelect.setTextColor(Color.parseColor("#666666"));
select.setBackgroundResource(R.drawable.bg_home_rank_day_select);
unSelect.setBackgroundResource(R.drawable.bg_home_rank_day);
}
}

View File

@@ -0,0 +1,174 @@
package com.shayu.onetoone.activity.fragments.home;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.appbar.AppBarLayout;
import com.opensource.svgaplayer.SVGAImageView;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.fragments.BaseFragment;
import com.shayu.onetoone.adapter.HomeRecommendListAdapter;
import com.shayu.onetoone.bean.HomeRankBean;
import com.shayu.onetoone.bean.UserBean;
import com.shayu.onetoone.listener.OnAppbarListener;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.custom.CommonRefreshView;
import com.yunbao.common.custom.MyRadioButton;
import com.yunbao.common.utils.ToastUtil;
import pl.droidsonroids.gif.GifImageView;
public class HomeRankFragment extends BaseFragment {
public static final int TYPE_CHARM = 0;
public static final int TYPE_WEALTH = 1;
private AppBarLayout rootView;
private OnAppbarListener appbarListener;
private SwipeRecyclerView mRecyclerView;
HomeRecommendListAdapter adapter;
private int type;
public HomeRankFragment(int type) {
super();
this.type = type;
}
public void setAppbarListener(OnAppbarListener appbarListener) {
this.appbarListener = appbarListener;
}
@Override
public void initView(View itemView) {
rootView = findViewById(R.id.rootView);
mRecyclerView = findViewById(R.id.recyclerView);
adapter = new HomeRecommendListAdapter(getContext());
mRecyclerView.setAdapter(adapter);
rootView.addOnOffsetChangedListener(new AppBarLayout.BaseOnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (appbarListener != null) {
if (verticalOffset == 0) {
appbarListener.onShow(true);
} else if (Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()) {
appbarListener.onShow(false);
}
}
}
});
}
@Override
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_home_ranking, container, false);
}
private void initData(){
}
class HeadView {
View mItem1;
View mItem2;
View mItem3;
GifImageView liveing1;
GifImageView liveing2;
GifImageView liveing3;
ImageView mAvatar1;
ImageView mAvatar2;
ImageView mAvatar3;
TextView mName1;
TextView mName2;
TextView mName3;
TextView mVotes1;
TextView mVotes2;
TextView mVotes3;
ImageView mSex1;
ImageView mSex2;
ImageView mSex3;
ImageView diamond1;
ImageView diamond2;
ImageView diamond3;
Button mBtnFollow1;
Button mBtnFollow2;
Button mBtnFollow3;
SVGAImageView svga1;
SVGAImageView svga2;
SVGAImageView svga3;
public HeadView(View itemView) {
mItem1 = itemView.findViewById(R.id.item_1);
mItem2 = itemView.findViewById(R.id.item_2);
mItem3 = itemView.findViewById(R.id.item_3);
liveing1 = itemView.findViewById(R.id.liveing1);
liveing2 = itemView.findViewById(R.id.liveing2);
liveing3 = itemView.findViewById(R.id.liveing3);
mAvatar1 = itemView.findViewById(R.id.avatar_1);
mAvatar2 = itemView.findViewById(R.id.avatar_2);
mAvatar3 = itemView.findViewById(R.id.avatar_3);
mName1 = itemView.findViewById(R.id.name_1);
mName2 = itemView.findViewById(R.id.name_2);
mName3 = itemView.findViewById(R.id.name_3);
mVotes1 = itemView.findViewById(R.id.votes_1);
mVotes2 = itemView.findViewById(R.id.votes_2);
mVotes3 = itemView.findViewById(R.id.votes_3);
mSex1 = itemView.findViewById(R.id.sex_1);
mSex2 = itemView.findViewById(R.id.sex_2);
mSex3 = itemView.findViewById(R.id.sex_3);
diamond1 = itemView.findViewById(R.id.diamond1);
diamond2 = itemView.findViewById(R.id.diamond2);
diamond3 = itemView.findViewById(R.id.diamond3);
mBtnFollow1 = itemView.findViewById(R.id.btn_follow_1);
mBtnFollow2 = itemView.findViewById(R.id.btn_follow_2);
mBtnFollow3 = itemView.findViewById(R.id.btn_follow_3);
svga1 = itemView.findViewById(R.id.svga1);
svga2 = itemView.findViewById(R.id.svga2);
svga3 = itemView.findViewById(R.id.svga3);
}
void setData(HomeRankBean user, int position){
getItem(position,mName1,mName2,mName3).setText(user.getUserNicename());
getItem(position,mVotes1,mVotes2,mVotes3).setText(user.getMoney());
if(user.isFollow()){
getItem(position,mBtnFollow1,mBtnFollow2,mBtnFollow3).setVisibility(View.GONE);
}else{
getItem(position,mBtnFollow1,mBtnFollow2,mBtnFollow3).setVisibility(View.VISIBLE);
}
if(user.getSex()==1) {
getItem(position, mSex1, mSex2, mSex3).setImageResource(R.mipmap.ic_message_tab_man);
}else{
getItem(position, mSex1, mSex2, mSex3).setImageResource(R.mipmap.ic_message_tab_woman);
}
switch (position){
case 0:
svga1.setImageResource(R.mipmap.ic_home_rank_top_1);
break;
case 1:
svga2.setImageResource(R.mipmap.ic_home_rank_top_2);
break;
case 2:
svga3.setImageResource(R.mipmap.ic_home_rank_top_3);
break;
}
}
private <T> T getItem(int position, T... views) {
return views[position];
}
private void setVisibility(int type, int position, View... views) {
if (position == -1) {
for (View view : views) {
view.setVisibility(type);
}
} else {
views[position].setVisibility(type);
}
}
}
}

View File

@@ -1,5 +1,6 @@
package com.shayu.onetoone.activity.fragments.home;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -9,6 +10,7 @@ import androidx.annotation.NonNull;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.fragments.BaseFragment;
import com.shayu.onetoone.activity.HomepageRankingActivity;
import com.shayu.onetoone.adapter.HomeRecommendListAdapter;
import com.shayu.onetoone.bean.HomeItemBean;
import com.shayu.onetoone.manager.OTONetManager;
@@ -33,8 +35,8 @@ public class RecommendFragment extends BaseFragment {
public void initView(View itemView) {
recyclerView = itemView.findViewById(R.id.recyclerView);
mRefreshLayout = itemView.findViewById(R.id.swipeRefreshLayout);
top=itemView.findViewById(R.id.btn_top_list);
adapter=new HomeRecommendListAdapter(getContext());
top = itemView.findViewById(R.id.btn_top_list);
adapter = new HomeRecommendListAdapter(getContext());
recyclerView.setAdapter(adapter);
mRefreshLayout.setNestedScrollingEnabled(false);
mRefreshLayout.setRefreshHeader(new RongRefreshHeader(this.getContext()));
@@ -50,7 +52,8 @@ public class RecommendFragment extends BaseFragment {
}
});
top.setOnClickListener(view -> {
recyclerView.scrollToPosition(0);
// recyclerView.scrollToPosition(0);
startActivity(new Intent(getContext(), HomepageRankingActivity.class));
});
initData();
}
@@ -62,7 +65,8 @@ public class RecommendFragment extends BaseFragment {
private void onConversationListRefresh(RefreshLayout refreshLayout) {
initData();
}
private void initData(){
private void initData() {
OTONetManager.getInstance(mContext)
.getHomeRecommend(new HttpCallback<List<HomeItemBean>>() {
@Override

View File

@@ -1,6 +1,10 @@
package com.shayu.onetoone.activity.fragments.message;
import static android.content.Context.CLIPBOARD_SERVICE;
import android.app.Dialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
@@ -20,10 +24,12 @@ import com.lxj.xpopup.interfaces.OnSelectListener;
import com.makeramen.roundedimageview.RoundedImageView;
import com.shayu.onetoone.R;
import com.shayu.onetoone.adapter.MsgChatMessageListAdapter;
import com.shayu.onetoone.bean.FollowBean;
import com.shayu.onetoone.bean.MessageChatAuthContent;
import com.shayu.onetoone.bean.MessageChatTipsContent;
import com.shayu.onetoone.bean.UserBean;
import com.shayu.onetoone.dialog.BottomListDialog;
import com.shayu.onetoone.dialog.MsgChatClickDialog;
import com.shayu.onetoone.dialog.TipsDialog;
import com.shayu.onetoone.listener.OnCallStatusListener;
import com.shayu.onetoone.listener.OnDialogClickListener;
@@ -393,7 +399,19 @@ public class ChatMessageFragment extends AbsConversationFragment {
targetId = getIntent().getStringExtra("targetId");
updateUserInfo();
follow.setOnClickListener(v -> {
OTONetManager.getInstance(mContext)
.follow(targetId, new HttpCallback<FollowBean>() {
@Override
public void onSuccess(FollowBean data) {
ToastUtil.show(WordUtil.getNewString(R.string.system_tip_success));
follow.setVisibility(View.GONE);
}
@Override
public void onError(String error) {
}
});
});
}
@@ -421,6 +439,9 @@ public class ChatMessageFragment extends AbsConversationFragment {
default:
status.setImageResource(R.mipmap.ic_message_msg_status_offline);
}
if (data.getUser().isFollow()) {
follow.setVisibility(View.GONE);
}
}
@Override
@@ -432,21 +453,66 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Override
public boolean onViewLongClick(int clickType, UiMessage data) {
View position = mLinearLayoutManager.findViewByPosition(((MsgChatMessageListAdapter)mAdapter).getPosition(data.getMessageId()));
View position = mLinearLayoutManager.findViewByPosition(((MsgChatMessageListAdapter) mAdapter).getPosition(data.getMessageId()));
boolean isMy = data.getMessage().getMessageDirection() == Message.MessageDirection.SEND;
boolean isTextMessage = data.getMessage().getContent() instanceof TextMessage;
String[] list;
if (isTextMessage) {
if (isMy) {
list = new String[]{"複製", "刪除"};
} else {
list = new String[]{"複製"};
}
} else {
if (isMy) {
list = new String[]{"刪除"};
} else {
list = null;
}
}
if (list == null) {
return true;
}
new XPopup.Builder(getContext())
.atView(position) // 依附于所点击的View内部会自动判断在上方或者下方显示
.asAttachList(new String[]{"分享", "编辑", "不带icon"},
new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher},
new OnSelectListener() {
.atView(position.findViewById(R.id.rc_content))
.hasShadowBg(false)
.positionByWindowCenter(true)
.asCustom(new MsgChatClickDialog(getActivity())
.setList(Arrays.asList(list))
.setOnItemClickListener(new OnItemClickListener<String>() {
@Override
public void onSelect(int position, String text) {
ToastUtil.show("click " + text);
public void onItemClick(String bean, int position) {
if (bean.equals("複製")) {
copyText(data);
} else {
delete(data);
}
}
})
}))
.show();
return true;
}
private void copyText(UiMessage uiMessage) {
ClipboardManager cm = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("text", uiMessage.getContentSpannable());
cm.setPrimaryClip(clipData);
}
private void delete(UiMessage uiMessage) {
IMCenter.getInstance().deleteMessages(Conversation.ConversationType.PRIVATE, targetId, new int[]{uiMessage.getMessageId()}, new RongIMClient.ResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean aBoolean) {
}
@Override
public void onError(RongIMClient.ErrorCode e) {
}
});
}
@Override
protected MessageListAdapter onResolveAdapter() {
return new MsgChatMessageListAdapter(this);

View File

@@ -38,11 +38,6 @@ import io.rong.imkit.conversation.ConversationFragment;
public class ChatActivity extends AbsOTOActivity {
@Override
protected void onCreate() {
super.onCreate();
}
@Override
protected int getLayoutId() {