初始化代码

This commit is contained in:
2025-05-15 11:08:23 +08:00
commit a8d127a876
696 changed files with 481048 additions and 0 deletions

1
modulevoice/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

53
modulevoice/build.gradle Normal file
View File

@@ -0,0 +1,53 @@
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
}
android {
namespace 'com.example.modulevoice'
compileSdk 35
defaultConfig {
minSdk 24
targetSdk 35
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
dataBinding {
enabled = true
}
kotlinOptions {
jvmTarget = '11'
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation libs.appcompat
implementation libs.material
implementation project(':moduleUtil')
implementation project(':moduletablayout')
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
implementation libs.lifecycle.livedata.ktx
implementation libs.lifecycle.viewmodel.ktx
}

21
modulevoice/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,26 @@
package com.example.modulevoice;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.example.modulevoice", appContext.getPackageName());
}
}

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/BaseAppTheme">
<activity
android:name=".activity.SearchActivity"
android:exported="true" />
<activity
android:name=".activity.RankingListActivity"
android:exported="false"
/>
</application>
</manifest>

View File

@@ -0,0 +1,33 @@
package com.example.modulevoice.activity;
import com.example.modulevoice.R;
import com.example.modulevoice.activity.ui.main.SectionsPagerAdapter;
import com.example.modulevoice.databinding.ActivityRankingListBinding;
import com.qxcm.moduleutil.activity.BaseAppCompatActivity;
/**
*@author lxj
*@data 2025/5/15
*@description: 排行榜
*/
public class RankingListActivity extends BaseAppCompatActivity<ActivityRankingListBinding> {
@Override
protected void initData() {
}
@Override
protected void initView() {
mBinding.topBar.setTitle("排行榜");
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
mBinding.viewPager.setAdapter(sectionsPagerAdapter);
mBinding.tabs.setupWithViewPager( mBinding.viewPager);
}
@Override
protected int getLayoutId() {
return R.layout.activity_ranking_list;
}
}

View File

@@ -0,0 +1,291 @@
package com.example.modulevoice.activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.StringUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.modulevoice.R;
import com.example.modulevoice.adapter.SearchHistoryAdapter;
import com.example.modulevoice.adapter.SearchRecordAdapter;
import com.example.modulevoice.adapter.SearchRoomResultAdapter;
import com.example.modulevoice.adapter.SearchUserResultAdapter;
import com.example.modulevoice.contacts.SearchContacts;
import com.example.modulevoice.databinding.ActivitySearchBinding;
import com.example.modulevoice.presenter.SearchPresenter;
import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexWrap;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.bean.RecordSection;
import com.qxcm.moduleutil.bean.RoomResultResp;
import com.qxcm.moduleutil.bean.SearchResp;
import com.qxcm.moduleutil.bean.UserResultResp;
import com.qxcm.moduleutil.widget.dialog.CommonDialog;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
/*
* 搜索页面
*/
public class SearchActivity extends BaseMvpActivity<SearchPresenter, ActivitySearchBinding> implements SearchContacts.View, CommonDialog.OnClickListener {
private String keyWord;
private List<RoomResultResp.RoomResultInfo> roomResultInfoList = new ArrayList<>();
private SearchHistoryAdapter mSearchHistoryAdapter;
private SearchRecordAdapter mSearchRecordAdapter;
private SearchRoomResultAdapter mSearchRoomResultAdapter;
private SearchUserResultAdapter mSearchUserResultAdapter;
private CommonDialog commonDialog;
@Override
protected SearchPresenter bindPresenter() {
return new SearchPresenter(this, this);
}
@Override
protected void initData() {
//搜索记录
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
mBinding.recycleViewRecord.setLayoutManager(linearLayoutManager);
mBinding.recycleViewRecord.setAdapter(mSearchRecordAdapter = new SearchRecordAdapter());
mSearchRecordAdapter.bindToRecyclerView(mBinding.recycleViewRecord);
mSearchRecordAdapter.setEmptyView(R.layout.index_view_empty);
//搜索历史
FlexboxLayoutManager flexboxLayoutManager = new FlexboxLayoutManager(this);
flexboxLayoutManager.setFlexDirection(FlexDirection.ROW);
flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP);
mBinding.recycleViewHistory.setLayoutManager(flexboxLayoutManager);
mBinding.recycleViewHistory.setAdapter(mSearchHistoryAdapter = new SearchHistoryAdapter());
//搜索到用户数据
mBinding.recycleViewUser.setLayoutManager(new LinearLayoutManager(this));
mBinding.recycleViewUser.setAdapter(mSearchUserResultAdapter = new SearchUserResultAdapter());
//搜索到房间信息
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
mBinding.recycleViewRoom.setLayoutManager(new LinearLayoutManager(this));
mBinding.recycleViewRoom.setAdapter(mSearchRoomResultAdapter = new SearchRoomResultAdapter());
mBinding.editQuery.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
keyWord = mBinding.editQuery.getText().toString();
MvpPre.saveSearchHistory(keyWord);
if (StringUtils.isEmpty(keyWord)) {
mBinding.ivClose.setImageLevel(1);
mBinding.ivClose.performClick();
} else {
mSearchUserResultAdapter.setKeyWord(keyWord);
mSearchRecordAdapter.setKeyWord(keyWord);
mBinding.ivClose.setImageLevel(2);
mBinding.llHistory.setVisibility(View.GONE);
MvpPre.getSearchHistory();
MvpPre.fuzzyQuery(keyWord);
}
}
});
MvpPre.getSearchHistory();
//快捷搜索列表点击
mSearchRecordAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
MvpPre.saveSearchHistory(mSearchRecordAdapter.getItem(position).t);
MvpPre.search(mSearchRecordAdapter.getItem(position).t);
}
});
//搜索历史点击
mSearchHistoryAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
mBinding.editQuery.setText(mSearchHistoryAdapter.getItem(position));
try {
mBinding.editQuery.setSelection(mSearchHistoryAdapter.getItem(position).length());
} catch (Exception e) {
e.printStackTrace();
}
}
});
//关注或取消关注
mSearchUserResultAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
UserResultResp item = mSearchUserResultAdapter.getItem(position);
MvpPre.followUser(item.getUser_id(), item.getFollow().equals("0") ? 1 : 2, position);
}
});
//用户列表点击事件
mSearchUserResultAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
UserResultResp item = mSearchUserResultAdapter.getItem(position);
if (item != null) {
// ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", item.getUser_id()).navigation();
}
}
});
//房间列表点击时事件
mSearchRoomResultAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
RoomResultResp.RoomResultInfo item = mSearchRoomResultAdapter.getItem(position);
if (item != null) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","搜索界面").withString("roomId", item.getRoom_id()).navigation();
}
}
});
mBinding.ivDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (commonDialog == null) {
commonDialog = new CommonDialog(SearchActivity.this);
commonDialog.setmOnClickListener(SearchActivity.this);
}
commonDialog.show();
}
});
mBinding.ivClose.setOnClickListener(v -> {
if (!StringUtils.isEmpty(keyWord)) {
mBinding.editQuery.setText("");
}
mBinding.recycleViewRecord.setVisibility(View.GONE);
mBinding.llHistory.setVisibility(View.VISIBLE);
mBinding.rlResult.setVisibility(View.GONE);
});
mBinding.tvRoomCount.setOnClickListener(v -> {
mSearchRoomResultAdapter.setNewData(roomResultInfoList);
mBinding.rlRoom.setVisibility(View.GONE);
mBinding.rlUser.setVisibility(View.GONE);
mBinding.recycleViewUser.setVisibility(View.GONE);
});
mBinding.tvCancel.setOnClickListener(v -> finish());
mBinding.editQuery.requestFocus();
}
@Override
protected int getLayoutId() {
return R.layout.activity_search;
}
/**
* 搜索历史
*
* @param data
*/
@Override
public void setSearchHistory(List<String> data) {
mSearchHistoryAdapter.setNewData(data);
}
/**
* 搜索的结果
*
* @param data
*/
@Override
public void setSearch(SearchResp data) {
mBinding.recycleViewRecord.setVisibility(View.GONE);
mBinding.llHistory.setVisibility(View.GONE);
mBinding.rlResult.setVisibility(View.VISIBLE);
RoomResultResp room_result = data.getRoom_result();
List<UserResultResp> user_result = data.getUser_result();
if (room_result.getCount() == 0 && (user_result == null || user_result.size() == 0)) {
mBinding.rlNull.setVisibility(View.VISIBLE);
mBinding.nestedscrollview.setVisibility(View.GONE);
} else {
mBinding.rlNull.setVisibility(View.GONE);
mBinding.nestedscrollview.setVisibility(View.VISIBLE);
if (room_result.getCount() == 0) {
mBinding.recycleViewRoom.setVisibility(View.GONE);
mBinding.rlRoom.setVisibility(View.GONE);
} else {
roomResultInfoList = room_result.getList();
mBinding.recycleViewRoom.setVisibility(View.VISIBLE);
mBinding.rlRoom.setVisibility(View.VISIBLE);
if (room_result.getList().size() > 2) {
mSearchRoomResultAdapter.setNewData(room_result.getList().subList(0, 2));
} else {
mSearchRoomResultAdapter.setNewData(room_result.getList());
}
mBinding.tvRoomCount.setText("全部 " + room_result.getCount());
}
if (user_result != null && user_result.size() != 0) {
mBinding.rlUser.setVisibility(View.VISIBLE);
mBinding.recycleViewUser.setVisibility(View.VISIBLE);
mSearchUserResultAdapter.setNewData(user_result);
} else {
mBinding.rlUser.setVisibility(View.GONE);
mBinding.recycleViewUser.setVisibility(View.GONE);
}
}
}
/**
* 模糊快捷查询
*
* @param data
*/
@Override
public void setFuzzyQuery(List<RecordSection> data) {
mBinding.recycleViewRecord.setVisibility(View.VISIBLE);
mBinding.llHistory.setVisibility(View.GONE);
mBinding.rlResult.setVisibility(View.GONE);
mSearchRecordAdapter.setNewData(data);
}
/**
* 关注成功
*
* @param type
* @param postion
*/
@Override
public void followUserSuccess(int type, int postion) {
UserResultResp item = mSearchUserResultAdapter.getItem(postion);
item.setFollow(type == 1 ? "1" : "0");
mSearchUserResultAdapter.notifyItemChanged(postion, item);
// type 1关注 2取消关注
// EventBus.getDefault().post(new FamilyTrendFollowEvent(null, 1, item.getUser_id()));
}
@Override
public void onLeftClick() {
}
@Override
public void onRightClick() {
MvpPre.deleteSearchHistory();
MvpPre.getSearchHistory();
}
@Override
protected void onDestroy() {
super.onDestroy();
// AppLogUtil.reportAppLog(AppLogEvent.A020302);
}
}

View File

@@ -0,0 +1,21 @@
package com.example.modulevoice.activity.ui.main;
import static androidx.lifecycle.Transformations.map;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class PageViewModel extends ViewModel {
private MutableLiveData<Integer> mIndex = new MutableLiveData<>();
private LiveData<String> mText = map(mIndex, input -> "Hello world from section: " + input);
public void setIndex(int index) {
mIndex.setValue(index);
}
public LiveData<String> getText() {
return mText;
}
}

View File

@@ -0,0 +1,64 @@
package com.example.modulevoice.activity.ui.main;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.example.modulevoice.databinding.FragmentRankingListBinding;
/**
* A placeholder fragment containing a simple view.
*/
public class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
private PageViewModel pageViewModel;
private FragmentRankingListBinding binding;
public static PlaceholderFragment newInstance(int index) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle bundle = new Bundle();
bundle.putInt(ARG_SECTION_NUMBER, index);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pageViewModel = new ViewModelProvider(this).get(PageViewModel.class);
int index = 1;
if (getArguments() != null) {
index = getArguments().getInt(ARG_SECTION_NUMBER);
}
pageViewModel.setIndex(index);
}
@Override
public View onCreateView(
@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentRankingListBinding.inflate(inflater, container, false);
View root = binding.getRoot();
return root;
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}

View File

@@ -0,0 +1,46 @@
package com.example.modulevoice.activity.ui.main;
import android.content.Context;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
/**
* A [FragmentPagerAdapter] that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{com.qxcm.moduleutil.R.string.room_rank, com.qxcm.moduleutil.R.string.wealth_rank,
com.qxcm.moduleutil.R.string.charm_rank, com.qxcm.moduleutil.R.string.guild_rank, com.qxcm.moduleutil.R.string.true_love_rank};
private final Context mContext;
public SectionsPagerAdapter(Context context, FragmentManager fm) {
super(fm);
mContext = context;
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment.
return PlaceholderFragment.newInstance(position + 1);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mContext.getResources().getString(TAB_TITLES[position]);
}
@Override
public int getCount() {
// Show 2 total pages.
return 5;
}
}

View File

@@ -0,0 +1,61 @@
package com.example.modulevoice.adapter;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modulevoice.R;
import com.qxcm.moduleutil.bean.TopRoom;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.zhpan.bannerview.BaseBannerAdapter;
import com.zhpan.bannerview.BaseViewHolder;
import java.util.List;
public class CarouselBannerAdapter extends BaseBannerAdapter<TopRoom> {
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener listener) {
this.onItemClickListener = listener;
}
@Override
protected void bindData(BaseViewHolder<TopRoom> holder, TopRoom data, int position, int pageSize) {
ImageUtils.loadHeadCC(data.getCover_picture(), holder.itemView.findViewById(R.id.iv_follow_bg));
TextView textView= holder.itemView.findViewById(R.id.tv_num);
TextView textView2= holder.itemView.findViewById(R.id.tv_room_name);
textView.setText(data.getUser_count()+"");
textView2.setText(data.getRoom_name());
ImageView iv = holder.itemView.findViewById(R.id.iv_play);
// if (item.getOn_line().equals("1")){
ImageUtils.loadRes(com.qxcm.moduleutil.R.drawable.voice_play, iv);
// }
List<TopRoom.UserList> user_list = data.getUser_list();
if (user_list!= null && user_list.size() > 0) {
RecyclerView recyclerView = holder.itemView.findViewById(R.id.rv_tags);
recyclerView.setLayoutManager(new LinearLayoutManager(holder.itemView.getContext(), LinearLayoutManager.HORIZONTAL, false));
CarouselImgAdapter adapter = new CarouselImgAdapter();
adapter.setNewData(user_list);
recyclerView.setAdapter(adapter);
}
// 设置点击事件
holder.itemView.setOnClickListener(v -> {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(holder.itemView, data, position);
}
});
}
public interface OnItemClickListener {
void onItemClick(View view, TopRoom data, int position);
}
@Override
public int getLayoutId(int viewType) {
return R.layout.index_item_carousel;
}
}

View File

@@ -0,0 +1,18 @@
package com.example.modulevoice.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
import com.qxcm.moduleutil.bean.TopRoom;
import com.qxcm.moduleutil.utils.ImageUtils;
public class CarouselImgAdapter extends BaseQuickAdapter<TopRoom.UserList, BaseViewHolder> {
public CarouselImgAdapter() {
super(R.layout.index_item_image);
}
@Override
protected void convert(BaseViewHolder helper, TopRoom.UserList item) {
ImageUtils.loadHeadCC(item.getHead_picture(), helper.getView(R.id.riv_user_head));
}
}

View File

@@ -0,0 +1,68 @@
package com.example.modulevoice.adapter;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
import com.qxcm.moduleutil.bean.RoomModel;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.logger.Logger;
import java.util.List;
public class HotAdapter extends BaseMultiItemQuickAdapter<RoomModel, BaseViewHolder> {
public HotAdapter(List<RoomModel> data) {
super(data);
// addItemType(1, R.layout.index_rv_item_room_hot1);
addItemType(1, R.layout.index_rv_item_room_hot0);
}
@Override
protected void convert(BaseViewHolder helper, RoomModel item) {
ImageUtils.loadHeadCC(item.getRoomPicture(), helper.getView(R.id.iv_follow_bg));
if (item.getLabel_id().equals("23")){
helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.diang_c);
}else if (item.getLabel_id().equals("108")){
helper.setImageResource(R.id.iv_type, R.mipmap.jiaoyou);
}else if (item.getLabel_id().equals("101")){
helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.youxi);
}else if (item.getLabel_id().equals("120")){//女神
helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.nvshen);
}else if (item.getLabel_id().equals("121")){//男神
helper.setImageResource(R.id.iv_type, com.qxcm.moduleutil.R.mipmap.nans);
}
helper.setText(R.id.tv_name, item.getRoom_name());
ImageView iv = helper.getView(R.id.iv_play);
ImageUtils.loadRes(com.qxcm.moduleutil.R.drawable.voice_play, iv);
helper.setText(R.id.tv_num, item.getPopularity());
helper.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getId()).navigation();
}
});
}
@Override
public void onViewRecycled(@NonNull BaseViewHolder holder) {
Logger.e("onViewRecycled", "onViewRecycled");
// ImageView imageView = holder.getView(R.id.riv);
// if (imageView != null) {
// imageView.setImageDrawable(null);
// Glide.with(imageView.getContext()).clear(imageView);
// }
super.onViewRecycled(holder);
}
}

View File

@@ -0,0 +1,20 @@
package com.example.modulevoice.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
/**
* 历史记录
*/
public class SearchHistoryAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
public SearchHistoryAdapter() {
super(R.layout.index_item_history);
}
@Override
protected void convert(BaseViewHolder helper, String item) {
helper.setText(R.id.tv_text, item);
}
}

View File

@@ -0,0 +1,40 @@
package com.example.modulevoice.adapter;
import android.graphics.Color;
import com.chad.library.adapter.base.BaseSectionQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
import com.qxcm.moduleutil.bean.RecordSection;
import com.qxcm.moduleutil.utils.KeyWordUtil;
/**
* 模糊搜索结果
*/
public class SearchRecordAdapter extends BaseSectionQuickAdapter<RecordSection, BaseViewHolder> {
private String keyWord = "";
public SearchRecordAdapter() {
super(R.layout.index_item_record, R.layout.index_item_tecord_head, null);
}
@Override
protected void convert(BaseViewHolder helper, RecordSection item) {
helper.setText(R.id.tv_text, KeyWordUtil.matcherSearchTitle(Color.parseColor("#FFBC00"), item.t, keyWord));
helper.addOnClickListener(R.id.tv_text);
}
@Override
protected void convertHead(BaseViewHolder helper, RecordSection item) {
helper.setText(R.id.tv_head, item.header);
}
public void setKeyWord(String keyWord) {
this.keyWord = keyWord;
}
}

View File

@@ -0,0 +1,41 @@
package com.example.modulevoice.adapter;
import android.text.TextUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
import com.qxcm.moduleutil.bean.RoomResultResp;
import com.qxcm.moduleutil.utils.ImageUtils;
/**
* 搜索房间结果
*/
public class SearchRoomResultAdapter extends BaseQuickAdapter<RoomResultResp.RoomResultInfo, BaseViewHolder> {
public SearchRoomResultAdapter() {
super(R.layout.index_item_search_room_result);
}
@Override
protected void convert(BaseViewHolder helper, RoomResultResp.RoomResultInfo item) {
helper.setText(R.id.tv_anchor, item.getNickname());
helper.setText(R.id.tv_popularity, item.getPopularity());
helper.setText(R.id.tv_room_name, item.getRoom_name());
helper.setText(R.id.tv_room_id,String.format("ID:%s",item.getRoom_id()));
if (TextUtils.isEmpty(item.getLabel_icon())) {
helper.setGone(R.id.iv_room_labe, false);
} else {
helper.setGone(R.id.iv_room_labe, true);
ImageUtils.loadImageView(item.getLabel_icon(), helper.getView(R.id.iv_room_labe));
}
ImageUtils.loadHeadCC(item.getCover_picture(), helper.getView(R.id.riv_room_cover));
if (item.getLocked() == 1) {
helper.setVisible(R.id.riv_room_lock, true);
} else {
helper.setVisible(R.id.riv_room_lock, false);
}
}
}

View File

@@ -0,0 +1,66 @@
package com.example.modulevoice.adapter;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevoice.R;
import com.qxcm.moduleutil.bean.UserResultResp;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.KeyWordUtil;
import com.qxcm.moduleutil.widget.BeautifulNameView;
/**
* 搜索用户的结果
*/
public class SearchUserResultAdapter extends BaseQuickAdapter<UserResultResp, BaseViewHolder> {
private String keyWord = "";
public SearchUserResultAdapter() {
super(R.layout.index_item_search_user_result);
}
@Override
protected void convert(BaseViewHolder helper, UserResultResp item) {
helper.setText(R.id.tv_nick_name, KeyWordUtil.matcherSearchTitle(Color.parseColor("#FFBC00"), item.getNickname(), keyWord));
TextView textViewOnLine = helper.getView(R.id.tv_online);
textViewOnLine.setText(item.getOnline_text());
if (item.getOnline_text().equals("在线")) {
Drawable drawable = mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.index_icon_online);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
textViewOnLine.setCompoundDrawables(drawable, null, null, null);
} else {
Drawable drawable = mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.index_icon_offline);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
textViewOnLine.setCompoundDrawables(drawable, null, null, null);
}
((BeautifulNameView) helper.getView(R.id.bnv_user_id)).setText(String.format(mContext.getResources().getString(R.string.common_id_formatter), item.getUser_code()));
((BeautifulNameView) helper.getView(R.id.bnv_user_id)).setTextColor(!TextUtils.isEmpty(item.getId_color()) ? Color.parseColor(item.getId_color()) : mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_FFCCCCCC));
((BeautifulNameView) helper.getView(R.id.bnv_user_id)).setPlay(!TextUtils.isEmpty(item.getId_color()));
((BeautifulNameView) helper.getView(R.id.bnv_user_id)).setImgVisible("1".equals(item.getGood_number()));
helper.setText(R.id.tv_separation, item.getFans_count());
if ("0".equals(item.getFollow())) {
helper.setText(R.id.tv_follow, "关注")
.setBackgroundRes(R.id.tv_follow, com.qxcm.moduleutil.R.drawable.common_sr_btn_bg);
((TextView)helper.getView(R.id.tv_follow)).setTextColor(Color.parseColor("#ffffff"));
} else {
helper.setText(R.id.tv_follow, "已关注")
.setBackgroundRes(R.id.tv_follow, com.qxcm.moduleutil.R.drawable.common_zr_btn_bg_unfollow);
((TextView)helper.getView(R.id.tv_follow)).setTextColor(Color.parseColor("#FFBC00"));
}
ImageUtils.loadHeadCC(item.getHead_picture(), helper.getView(R.id.riv_user_head));
helper.addOnClickListener(R.id.tv_follow);
}
public void setKeyWord(String keyWord) {
this.keyWord = keyWord;
}
}

View File

@@ -0,0 +1,31 @@
package com.example.modulevoice.contacts;
import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.HomeBean;
import com.qxcm.moduleutil.bean.RoomModel;
import java.util.List;
public final class HotListContacts {
public interface View extends IView<Activity> {
void roomList(List<RoomModel> data);
void finishRefreshLoadMore();
void getMoreRoomList(List<HomeBean> data);
}
public interface IHotListPre extends IPresenter {
void getRoomList(String type);
void getMoreRoomList(String userId);
void getRoomListTow();
}
}

View File

@@ -0,0 +1,41 @@
package com.example.modulevoice.contacts;
import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.RecordSection;
import com.qxcm.moduleutil.bean.SearchResp;
import java.util.List;
public final class SearchContacts {
public interface View extends IView<Activity> {
void setSearchHistory(List<String> data);
void setSearch(SearchResp data);
void setFuzzyQuery(List<RecordSection> data);
void followUserSuccess(int type, int postion);
}
public interface ISearchPre extends IPresenter {
void getSearchHistory();
void saveSearchHistory(String keyWord);
void deleteSearchHistory();
void search(String keyWord);
void fuzzyQuery(String keyWord);
void followUser(String userId, int type, int postion);
}
}

View File

@@ -0,0 +1,34 @@
package com.example.modulevoice.contacts;
import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.RoomTypeModel;
import com.qxcm.moduleutil.bean.TopRoom;
import java.util.List;
public final class VoiceCategoryContacts {
public interface View extends IView<Activity> {
void setCategories(List<RoomTypeModel> list);
// void setBanners(List<BannerModel> bannerModels);
void setRoomId(String roomId);
void setTopRoom(List<TopRoom> topRooms);
}
public interface IIndexCategoryPre extends IPresenter {
void getCategories();
void getMediaRoom(String type);
void getCarousels();
}
}

View File

@@ -0,0 +1,25 @@
package com.example.modulevoice.contacts;
import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
public final class VoiceContacts {
public interface View extends IView<Activity> {
// void setBanners(List<BannerResp> list);
void hideRecommend(boolean hideRecommend,boolean hideGame);
// void myInfoSuccess(MyInfoResp data);
}
public interface IIndexPre extends IPresenter {
void getBanners();
void getMyInfo();
void getNameAuthResult(int type);
}
}

View File

@@ -0,0 +1,146 @@
package com.example.modulevoice.fragment;
import android.os.Bundle;
import android.speech.tts.Voice;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.modulevoice.R;
import com.example.modulevoice.adapter.HotAdapter;
import com.example.modulevoice.contacts.HotListContacts;
import com.example.modulevoice.databinding.FragmentHotListBinding;
import com.example.modulevoice.presenter.HotListPresenter;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.HomeBean;
import com.qxcm.moduleutil.bean.RoomModel;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
public class HotListFragment extends BaseMvpFragment<HotListPresenter, FragmentHotListBinding> implements HotListContacts.View {
private String type;
private HotAdapter mAdapter;
private String tag;
public static HotListFragment newInstance(String type,String tag) {
Bundle args = new Bundle();
args.putString("type", type);
args.putString("tag", tag);
HotListFragment fragment = new HotListFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
type = arguments.getString("type");
tag = arguments.getString("tag");
}
@Override
protected HotListPresenter bindPresenter() {
return new HotListPresenter(this, getActivity());
}
@Override
protected void initData() {
if (Integer.parseInt(type)<0){
MvpPre.getRoomListTow();
}else {
MvpPre.getRoomList(type);
}
}
@Override
protected void initView() {
if(tag.equals(VoiceCategoryFragment.TYPE_HOT)){
mBinding.tvHot.setVisibility(View.VISIBLE);
}else {
mBinding.tvHot.setVisibility(View.GONE);
}
mAdapter = new HotAdapter(null);
// mAdapter.openLoadAnimation(BaseQuickAdapter.SCALEIN);
mBinding.recycleView.setAdapter(mAdapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 2);
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch (position) {
case 0:
case 1:
case 2:
return 1;
default:
return 1;
}
}
});
mBinding.recycleView.setLayoutManager(gridLayoutManager);
mBinding.smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
// EventBus.getDefault().post(new BannerRefreshEvent());
if (Integer.parseInt(type)<0){
MvpPre.getRoomListTow();
}else {
MvpPre.getRoomList(type);
}
}
});
mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
RoomModel item = mAdapter.getItem(position);
if (item != null) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form","首页热门列表").withString("roomId", item.getId()).navigation();
}
}
});
}
@Override
protected int getLayoutId() {
return R.layout.fragment_hot_list;
}
@Override
public void roomList(List<RoomModel> data) {
// switch (data.size()) {
// case 0:
// break;
// case 1:
// data.get(0).setItemViewType(1);
// break;
// case 2:
// data.get(0).setItemViewType(1);
// data.get(1).setItemViewType(1);
// break;
// default:
// data.get(0).setItemViewType(1);
// data.get(1).setItemViewType(1);
// data.get(2).setItemViewType(1);
// break;
// }
//
mAdapter.setNewData(data);
}
@Override
public void finishRefreshLoadMore() {
mBinding.smartRefreshLayout.finishRefresh();
}
@Override
public void getMoreRoomList(List<HomeBean> data) {
}
}

View File

@@ -0,0 +1,246 @@
package com.example.modulevoice.fragment;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.modulevoice.R;
import com.example.modulevoice.adapter.CarouselBannerAdapter;
import com.example.modulevoice.contacts.VoiceCategoryContacts;
import com.example.modulevoice.databinding.FragmentVoiceCategoryBinding;
import com.example.modulevoice.presenter.VoiceCategoryPresenter;
import com.hjq.toast.ToastUtils;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.RoomTypeModel;
import com.qxcm.moduleutil.bean.TopRoom;
import com.sunfusheng.marqueeview.MarqueeView;
import com.zhpan.bannerview.constants.PageStyle;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
/**
*声播
*/
public class VoiceCategoryFragment extends BaseMvpFragment<VoiceCategoryPresenter, FragmentVoiceCategoryBinding> implements VoiceCategoryContacts.View {
public static final String TYPE_ME = "-1";
public static final String TYPE_RECOMMEND = "-2";
public static final String TYPE_HOT = "-3";
public static final String TYPE_ORDER = "-4";
public static final String TYPE_INDEX = "index";
private List<TopRoom> roomList;
CarouselBannerAdapter carouselBannerAdapter ;
public static VoiceCategoryFragment newInstance() {
return new VoiceCategoryFragment();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// EventBus.getDefault().register(this);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onDestroyView() {
EventBus.getDefault().unregister(this);
super.onDestroyView();
}
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void bannerRefresh(BannerRefreshEvent event) {
//// MvpPre.getBanners();
// MvpPre.getCarousels();//顶部推荐
// }
@Override
protected VoiceCategoryPresenter bindPresenter() {
return new VoiceCategoryPresenter(this, getActivity());
}
@Override
protected void initData() {
// MvpPre.getBanners();
MvpPre.getCarousels();//顶部推荐
MvpPre.getCategories();
}
@Override
protected void initView() {
// mBinding.banner.loadImage(new XBanner.XBannerAdapter() {
// @Override
// public void loadBanner(XBanner banner, Object model, View view, int position) {
// BannerModel bannerModel = (BannerModel) model;
// ImageUtils.loadCenterCrop(bannerModel.getContent(), (ImageView) view);
// }
// });
// mBinding.banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
// @Override
// public void onItemClick(XBanner banner, Object model, View view, int position) {
// if (ProxyChecker.isProxySet(context)) {
// ToastUtils.show("使用代理禁止访问");
// return;
// }
// /**
// * 1房间2文章3链接 其他详情图
// *
// * type=1时该值表示房间idtype=2时表示文章id
// */
// BannerModel bannerModel = (BannerModel) model;
// if ("6".equals(bannerModel.getType())) {
// return;
// }
// if (bannerModel.getType().equals("1")) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("form", "首页横幅").withString("roomId", bannerModel.getItem_id()).navigation();
// } else if (bannerModel.getType().equals("2")) {
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", URLConstants.ARTICLE + bannerModel.getItem_id()).withString("title", bannerModel.getTitle()).navigation();
// } else if (bannerModel.getType().equals("3")) {
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", bannerModel.getLink_url()).withString("title", bannerModel.getTitle()).navigation();
// } else if (bannerModel.getType().equals("10")) {
// ARouter.getInstance().build(ARouteConstants.ME_SHOP).withString("from", "首页横幅").navigation();
// } else {
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", URLConstants.HOME_BANNER + bannerModel.getAd_id()).withString("title", bannerModel.getTitle()).navigation();
// }
// try {
// //A0204点击banner
// AppLogUtil.reportAppLog(AppLogEvent.A0204, new JSONObject().put("banner_name",
// bannerModel.getTitle()).put("banner_url", bannerModel.getLink_url()).put("banner_id", bannerModel.getItem_id()));
// } catch (JSONException e) {
// e.printStackTrace();
// }
// }
// });
// layoutManager = new LinearLayoutManager(
// getActivity(), LinearLayoutManager.HORIZONTAL, false);
carouselBannerAdapter = new CarouselBannerAdapter();
mBinding.bannerViewPager
.setPageMargin(15)
.setScrollDuration(800)
.setRevealWidth(300, 300)
.setPageStyle(PageStyle.MULTI_PAGE_SCALE, 0.8f)
.setAdapter(carouselBannerAdapter)
.create();
mBinding.bannerViewPager.setIndicatorVisibility(View.GONE);
mBinding.constraintLayout.setVisibility(View.GONE);
carouselBannerAdapter.setOnItemClickListener((view, data, position) -> {
// 处理点击逻辑,例如跳转页面
ToastUtils.show("点击了第 " + position + " 个 item");
// 示例:跳转到房间详情页
if (data != null) {
// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM)
// .withString("form", "首页热门列表")
// .withString("roomId", data.getId())
// .navigation();
}
});
List<String> info = new ArrayList<>();
info.add("1. 大家好,我是孙福生。");
info.add("2. 欢迎大家关注我哦!");
info.add("3. GitHub帐号sfsheng0322");
info.add("4. 新浪微博:孙福生微博");
info.add("5. 个人博客sunfusheng.com");
info.add("6. 微信公众号:孙福生");
mBinding.marqueeView.startWithList(info);
mBinding.marqueeView.setOnItemClickListener(new MarqueeView.OnItemClickListener() {
@Override
public void onItemClick(int position, TextView textView) {
ToastUtils.show("点击了第 " + position + " 个 item");
}
});
mBinding.tvWg.setOnClickListener(v -> {
ToastUtils.show("点击了第 " + mBinding.marqueeView.getPosition() + " 个 item");
});
}
//
@Override
protected int getLayoutId() {
return R.layout.fragment_voice_category;
}
@Override
public void setCategories(List<RoomTypeModel> list) {
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), list));
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
mBinding.slidingTabLayout.setCurrentTab(0);
}
// @Override
// public void setBanners(List<BannerModel> list) {
// mBinding.banner.setBannerData(R.layout.index_image_banner, list);
// }
@Override
public void setRoomId(String roomId) {
}
@Override
public void setTopRoom(List<TopRoom> topRooms) {
// if (topRooms == null || topRooms.isEmpty() || topRooms.size() < 1) {
// mBinding.constraintLayout.setVisibility(View.GONE);
// return;
// }else {
mBinding.constraintLayout.setVisibility(View.VISIBLE);
// }
roomList= topRooms;
mBinding.bannerViewPager.create(topRooms); // 刷新数据并启动自动播放
}
@Override
public void onDestroy() {
super.onDestroy();
}
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
private List<RoomTypeModel> list;
public MyFragmentPagerAdapter(FragmentManager fm, List<RoomTypeModel> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int position) {
RoomTypeModel model = list.get(position);
return HotListFragment.newInstance(model.getId(), TYPE_INDEX);
}
@Override
public int getCount() {
return list.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
RoomTypeModel model = list.get(position);
return model.getName();
}
}
}

View File

@@ -0,0 +1,156 @@
package com.example.modulevoice.fragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import androidx.fragment.app.Fragment;
import com.example.modulevoice.R;
import com.example.modulevoice.activity.RankingListActivity;
import com.example.modulevoice.activity.SearchActivity;
import com.example.modulevoice.contacts.VoiceContacts;
import com.example.modulevoice.databinding.FragmentVoiceBinding;
import com.example.modulevoice.presenter.VoicePresenter;
import com.qxcm.moduleutil.adapter.MyFragmentPagerAdapter;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.dialog.FirstChargeDialog;
import com.qxcm.moduleutil.dialog.HeavenGiftDialog;
import com.qxcm.moduleutil.dialog.InviteDialog;
import com.qxcm.moduleutil.dialog.YouthModelDialog;
import java.util.ArrayList;
import java.util.List;
public class VoiceFragment extends BaseMvpFragment<VoicePresenter, FragmentVoiceBinding> implements VoiceContacts.View {
// private MyInfoResp mMyInfoResp;
public static VoiceFragment newInstance () {
return new VoiceFragment();
}
@Override
protected void initData () {
MvpPre.getConfig();
MvpPre.getMyInfo();
}
@Override
protected void initView () {
mBinding.llSearch.setOnClickListener(v -> {
// ARouter.getInstance().build(ARouteConstants.INDEX_SEARCH).navigation();
});
mBinding.ivRoom.setOnClickListener(v -> {
//我的房间
// if (mMyInfoResp != null) {
// ARouter.getInstance().build(ARouteConstants.MY_ROOM_LIST).withString("from", "我的界面").withString("roomId", mMyInfoResp.getRoom_id())
// .withInt("auth_status", mMyInfoResp.getAuth_status()).withString("roomId", mMyInfoResp.getRoom_id()).navigation();
// }
});
// mBinding.ivRoom2.setOnClickListener(v -> {
//// ARouter.getInstance().build(ARouteConstants.INDEX_RANKING_LIST).navigation();
// });
mBinding.ivRoom3.setOnClickListener(v -> {
Intent intent = new Intent(getContext(), SearchActivity.class);
startActivity(intent);
});
mBinding.ivRankingList.setOnClickListener(v -> {
startActivity(new Intent(getContext(), RankingListActivity.class));
});
YouthModelDialog youthModelDialog=new YouthModelDialog(getContext(),null);
youthModelDialog.show();
youthModelDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
//青少年关闭后,弹首充
dialog.dismiss();
}
});
InviteDialog inviteDialog=new InviteDialog(getContext());
inviteDialog.show();
inviteDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
//邀请弹窗关闭后,弹首充
dialog.dismiss();
}
});
HeavenGiftDialog heavenGiftDialog=new HeavenGiftDialog(getContext());
heavenGiftDialog.show();
heavenGiftDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
//首充弹窗关闭后,弹首充
dialog.dismiss();
}
});
FirstChargeDialog firstChargeDialog=new FirstChargeDialog(getContext());
firstChargeDialog.show();
firstChargeDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
//首充弹窗关闭后,弹首充
dialog.dismiss();
}
});
}
@Override
protected void initListener () {
super.initListener();
}
@Override
protected int getLayoutId () {
return R.layout.fragment_voice;
}
@Override
protected VoicePresenter bindPresenter () {
return new VoicePresenter(this, getContext());
}
// @Override
// public void setBanners (List < BannerResp > list) {
//
// }
@Override
public void hideRecommend ( boolean hideRecommend, boolean hideGame){
// if (hideRecommend && hideGame) {
List<Fragment> fragments = new ArrayList<>();
fragments.add(VoiceCategoryFragment.newInstance());
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(fragments, getChildFragmentManager()));
// } else if (!hideRecommend && !hideGame) {
// List<Fragment> fragments = new ArrayList<>();
// fragments.add(IndexCategoryFragment.newInstance());
// mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(fragments, getChildFragmentManager()));
// } else if (!hideRecommend) {
// List<Fragment> fragments = new ArrayList<>();
// fragments.add(IndexCategoryFragment.newInstance());
// mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(fragments, getChildFragmentManager()));
// } else {
// List<Fragment> fragments = new ArrayList<>();
// fragments.add(IndexCategoryFragment.newInstance());
// mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(fragments, getChildFragmentManager()));
// }
}
// @Override
// public void myInfoSuccess (MyInfoResp data){
// this.mMyInfoResp = data;
// }
}

View File

@@ -0,0 +1,193 @@
package com.example.modulevoice.presenter;
import android.content.Context;
import com.example.modulevoice.contacts.HotListContacts;
import com.google.gson.reflect.TypeToken;
import com.qxcm.moduleutil.bean.RoomModel;
import com.qxcm.moduleutil.presenter.BasePresenter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class HotListPresenter extends BasePresenter<HotListContacts.View> implements HotListContacts.IHotListPre {
public HotListPresenter(HotListContacts.View view, Context context) {
super(view, context);
}
@Override
public void getRoomList(String type) {
// Type listType = new TypeToken<List<RoomModel>>() {}.getType();
// List<RoomModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getRoomModel(), listType);
// if (restoredRoomModels != null && restoredRoomModels.size() > 0) {
// MvpRef.get().roomList(restoredRoomModels);
// }
// ApiClient.getInstance().getHotRoomList(type,new BaseObserver<List<RoomModel>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<RoomModel> roomModels) {
//
//// MvpRef.get().roomList(roomModels);
// String newHomeBeanJson = GsonUtils.getGSON().toJson(roomModels);
// // 从本地缓存中读取现有的数据
// String existingHomeBeanJson = SpUtils.getRoomModel();
// // 比较新获取的数据和缓存中的数据是否一致
// if (!newHomeBeanJson.equals(existingHomeBeanJson)) {
// // 如果不一致,保存新数据到本地缓存
// SpUtils.setRoomModel(newHomeBeanJson);
// // 并调用方法处理新数据
// MvpRef.get().roomList(roomModels);
// }else {
// MvpRef.get().finishRefreshLoadMore();
// }
//
// }
//
//
// @Override
// public void onComplete() {
// MvpRef.get().finishRefreshLoadMore();
// }
// });
List<RoomModel> roomModels = new ArrayList<RoomModel>();
for (int i = 0; i < 5; i++) {
RoomModel roomModel = new RoomModel();
roomModel.setRoom_id("1");
roomModel.setRoom_code("1");
roomModel.setUser_id("1");
roomModel.setRoom_name("房间名称"+i);
roomModel.setLabel_id("23");
roomModel.setType_id("1");
roomModel.setPopularity("1");
roomModel.setLabel_name("1");
roomModel.setOwner_picture("1");
roomModel.setOwner_sex("1");
roomModel.setHolder("1");
roomModel.setHolder_picture("1");
roomModel.setHolder_sex("1");
roomModel.setOwner_nickname("名称"+i);
roomModel.setHolder_nickname("h名称"+i);
roomModel.setIs_owner(1);
roomModel.setLocked(1);
roomModels.add(roomModel);
}
MvpRef.get().roomList(roomModels);
}
@Override
public void getMoreRoomList(String userId) {
// Type listType = new TypeToken<List<HomeBean>>() {}.getType();
// List<HomeBean> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBean(), listType);
// if (restoredRoomModels != null && restoredRoomModels.size() > 0) {
// MvpRef.get().getMoreRoomList(restoredRoomModels);
// }
// ApiClient.getInstance().homepageBend(userId, new BaseObserver<List<HomeBean>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<HomeBean> roomModels) {
//// MvpRef.get().roomList(roomModels);
//
//// SpUtils.setHomeBean(GsonUtils.getGSON().toJson(roomModels));
//// MvpRef.get().getMoreRoomList(roomModels);
//
// String newHomeBeanJson = GsonUtils.getGSON().toJson(roomModels);
// // 从本地缓存中读取现有的数据
// String existingHomeBeanJson = SpUtils.getHomeBean();
// // 比较新获取的数据和缓存中的数据是否一致
// if (!newHomeBeanJson.equals(existingHomeBeanJson)) {
// // 如果不一致,保存新数据到本地缓存
// SpUtils.setHomeBean(newHomeBeanJson);
// // 并调用方法处理新数据
// MvpRef.get().getMoreRoomList(roomModels);
// }else {
// MvpRef.get().finishRefreshLoadMore();
// }
// }
//
// @Override
// public void onComplete() {
// MvpRef.get().finishRefreshLoadMore();
// }
// });
}
// TODO: 2025/4/23 推荐
@Override
public void getRoomListTow() {
// Type listType = new TypeToken<List<RoomModel>>() {}.getType();
// List<RoomModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getRoomModel(), listType);
// if (restoredRoomModels != null && restoredRoomModels.size() > 0) {
// MvpRef.get().roomList(restoredRoomModels);
// }
// ApiClient.getInstance().getNewRoomList(new BaseObserver<List<RoomModel>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<RoomModel> roomModels) {
//
//// MvpRef.get().roomList(roomModels);
// String newHomeBeanJson = GsonUtils.getGSON().toJson(roomModels);
// // 从本地缓存中读取现有的数据
// String existingHomeBeanJson = SpUtils.getRoomModel();
// // 比较新获取的数据和缓存中的数据是否一致
// if (!newHomeBeanJson.equals(existingHomeBeanJson)) {
// // 如果不一致,保存新数据到本地缓存
// SpUtils.setRoomModel(newHomeBeanJson);
// // 并调用方法处理新数据
// MvpRef.get().roomList(roomModels);
// }else {
// MvpRef.get().finishRefreshLoadMore();
// }
//
// }
//
//
// @Override
// public void onComplete() {
// MvpRef.get().finishRefreshLoadMore();
// }
// });
List<RoomModel> roomModels = new ArrayList<RoomModel>();
for (int i = 0; i < 5; i++) {
RoomModel roomModel = new RoomModel();
roomModel.setRoom_id("1");
roomModel.setRoom_code("1");
roomModel.setUser_id("1");
roomModel.setRoom_name("房间名称"+i);
roomModel.setLabel_id("23");
roomModel.setType_id("1");
roomModel.setPopularity("1");
roomModel.setLabel_name("1");
roomModel.setOwner_picture("1");
roomModel.setOwner_sex("1");
roomModel.setHolder("1");
roomModel.setHolder_picture("1");
roomModel.setHolder_sex("1");
roomModel.setOwner_nickname("名称"+i);
roomModel.setHolder_nickname("h名称"+i);
roomModel.setIs_owner(1);
roomModel.setLocked(1);
roomModels.add(roomModel);
}
MvpRef.get().roomList(roomModels);
}
}

View File

@@ -0,0 +1,128 @@
package com.example.modulevoice.presenter;
import android.content.Context;
import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.StringUtils;
import com.example.modulevoice.contacts.SearchContacts;
import com.qxcm.moduleutil.presenter.BasePresenter;
import com.qxcm.moduleutil.utils.SpUtil;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class SearchPresenter extends BasePresenter<SearchContacts.View> implements SearchContacts.ISearchPre {
private List<String> mHistory = new ArrayList<>();
public SearchPresenter(SearchContacts.View view, Context context) {
super(view, context);
}
@Override
public void getSearchHistory() {
String data = SpUtil.getSearchHistory();
if (!StringUtils.isEmpty(data)) {
mHistory = JSON.parseArray(data, String.class);
} else {
mHistory.clear();
}
MvpRef.get().setSearchHistory(mHistory);
}
@Override
public void saveSearchHistory(String keyWord) {
mHistory.remove(keyWord);
mHistory.add(0, keyWord);
SpUtil.saveSearchHistory(JSON.toJSONString(mHistory));
}
@Override
public void deleteSearchHistory() {
SpUtil.saveSearchHistory("");
}
@Override
public void search(String keyWord) {
// AppLogUtil.reportAppLog(AppLogEvent.A020301, "send_value", keyWord);
// MvpRef.get().showLoadings();
// ApiClient.getInstance().getSearch(keyWord, new BaseObserver<SearchResp>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(SearchResp searchResp) {
// MvpRef.get().setSearch(searchResp);
// }
//
// @Override
// public void onComplete() {
// MvpRef.get().disLoadings();
// }
// });
}
@Override
public void fuzzyQuery(String keyWord) {
// ApiClient.getInstance().getSearch(keyWord, new BaseObserver<SearchResp>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(SearchResp searchResp) {
// List<RecordSection> data = new ArrayList<>();
// RoomResultResp room_result = searchResp.getRoom_result();
// List<RoomResultResp.RoomResultInfo> list = room_result.getList();
// if (list != null && list.size() != 0) {
// data.add(new RecordSection(true, "相关房间"));
// for (RoomResultResp.RoomResultInfo item : list) {
// data.add(new RecordSection(item.getRoom_name()));
// }
// }
// List<UserResultResp> user_result = searchResp.getUser_result();
// if (user_result != null && user_result.size() != 0) {
// data.add(new RecordSection(true, "相关用户"));
// for (UserResultResp item : user_result) {
// data.add(new RecordSection(item.getNickname()));
// }
// }
// MvpRef.get().setFuzzyQuery(data);
// }
//
// @Override
// public void onComplete() {
//
// }
// });
MvpRef.get().setFuzzyQuery(null);
}
@Override
public void followUser(String userId, int type, int postion) {
// MvpRef.get().showLoadings();
// ApiClient.getInstance().followUser(userId, type, new BaseObserver<String>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(String s) {
// MvpRef.get().followUserSuccess(type, postion);
// }
//
// @Override
// public void onComplete() {
// MvpRef.get().disLoadings();
// }
// });
}
}

View File

@@ -0,0 +1,152 @@
package com.example.modulevoice.presenter;
import android.content.Context;
import android.speech.tts.Voice;
import com.example.modulevoice.contacts.VoiceCategoryContacts;
import com.qxcm.moduleutil.bean.RoomTypeModel;
import com.qxcm.moduleutil.bean.TopRoom;
import com.qxcm.moduleutil.presenter.BasePresenter;
import java.util.ArrayList;
import java.util.List;
public class VoiceCategoryPresenter extends BasePresenter<VoiceCategoryContacts.View> implements VoiceCategoryContacts.IIndexCategoryPre {
public VoiceCategoryPresenter(VoiceCategoryContacts.View view, Context context) {
super(view, context);
}
@Override
public void getCategories() {
// Type listType = new TypeToken<List<RoomTypeModel>>() {}.getType();
// List<RoomTypeModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getRoomTypeModel(), listType);
// if (restoredRoomModels!= null && restoredRoomModels.size() > 0) {
// MvpRef.get().setCategories(restoredRoomModels);
// }
// ApiClient.getInstance().getRoomCategories(new BaseObserver<List<RoomTypeModel>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<RoomTypeModel> list) {
// SpUtils.setRoomTypeModel(GsonUtils.getGSON().toJson(list));
// MvpRef.get().setCategories(list);
// }
//
// @Override
// public void onComplete() {
//// MvpRef.get().disLoadings();
// }
// });
List<RoomTypeModel> list = new ArrayList<RoomTypeModel>();
for (int i = 0; i < 5; i++) {
RoomTypeModel roomTypeModel = new RoomTypeModel();
roomTypeModel.setId(i+"");
roomTypeModel.setName("分类"+i);
roomTypeModel.setSort(i+"");
roomTypeModel.setType("1");
list.add(roomTypeModel);
}
MvpRef.get().setCategories(list);
}
@Override
public void getMediaRoom(String label_id) {
// ApiClient.getInstance().getMediaRoom(label_id,new BaseObserver<String>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(String roomId) {
// MvpRef.get().setRoomId(roomId);
// }
//
// @Override
// public void onComplete() {
//// MvpRef.get().disLoadings();
// }
// });
}
public void getBanners() {
// Type listType = new TypeToken<List<BannerModel>>() {}.getType();
// List<BannerModel> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getHomeBanner(), listType);
// MvpRef.get().setBanners(restoredRoomModels);
// ApiClient.getInstance().getBanners(new BaseObserver<List<BannerModel>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<BannerModel> bannerModels) {
// SpUtils.setHomeBanner(GsonUtils.getGSON().toJson(bannerModels));
// MvpRef.get().setBanners(bannerModels);
// }
//
// @Override
// public void onComplete() {
//
// }
// });
}
@Override
public void getCarousels() {
// Type listType = new TypeToken<List<TopRoom>>() {}.getType();
// List<TopRoom> restoredRoomModels = GsonUtils.getGSON().fromJson(SpUtils.getTopRoom(), listType);
// if (restoredRoomModels!= null && restoredRoomModels.size() > 0) {
// MvpRef.get().setTopRoom(restoredRoomModels);
// }
// ApiClient.getInstance().getTopRooms(new BaseObserver<List<TopRoom>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<TopRoom> topRooms) {
// SpUtils.setTopRoom(GsonUtils.getGSON().toJson(topRooms));
//// List<TopRoom> topRooms1 = new ArrayList<TopRoom>();
//// for (int i = 0; i < 5; i++) {
//// TopRoom topRoom = topRooms.get(0);
//// topRooms1.add(topRoom);
//// }
////
//
// MvpRef.get().setTopRoom(topRooms);
//
// }
//
// @Override
// public void onComplete() {
//
// }
// });
List<TopRoom> topRooms = new ArrayList<TopRoom>();
for (int i = 0; i < 5; i++) {
TopRoom topRoom = new TopRoom();
topRoom.setRoom_name("名:"+i);
topRoom.setCover_picture("");
topRoom.setUser_count("123");
topRoom.setUser_list(new ArrayList<TopRoom.UserList>());
TopRoom.UserList userList = new TopRoom.UserList();
userList.setHead_picture("");
topRoom.getUser_list().add(userList);
topRoom.setOn_line("123");
topRoom.setChatrooms("123");
topRoom.setPopularity("123");
topRoom.setRoom_id("123");
topRoom.setLabel_id("123");
topRoom.setVoice("123");
topRoom.setUser_id("123");
topRooms.add(topRoom);
}
MvpRef.get().setTopRoom(topRooms);
}
}

View File

@@ -0,0 +1,130 @@
package com.example.modulevoice.presenter;
import android.content.Context;
import com.example.modulevoice.contacts.VoiceContacts;
import com.qxcm.moduleutil.presenter.BasePresenter;
import java.util.List;
public class VoicePresenter extends BasePresenter<VoiceContacts.View> implements VoiceContacts.IIndexPre {
public VoicePresenter(VoiceContacts.View view, Context context) {
super(view, context);
}
@Override
public void getBanners() {
// NewApi.getInstance().getBannerList(new BaseObserver<List<BannerResp>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
//
// @Override
// public void onNext(List<BannerResp> bannerResp) {
// MvpRef.get().setBanners(bannerResp);
// }
//
// @Override
// public void onComplete() {
//
// }
// });
}
@Override
public void getMyInfo() {
// ApiClient.getInstance().getMyInfo(new com.qpyy.libcommon.http.BaseObserver<MyInfoResp>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(MyInfoResp myInfoResp) {
// MvpRef.get().myInfoSuccess(myInfoResp);
// }
//
// @Override
// public void onComplete() {
//
// }
// });
}
public void getConfig() {
// api.appUpdate(new com.qpyy.libcommon.http.BaseObserver<AppUpdateModel>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(AppUpdateModel appUpdateModel) {
// String channelId = "default";
// try {
// channelId = MetaDataUtils.getMetaDataInApp("TD_CHANNEL_ID");
// } catch (Exception e) {
// e.printStackTrace();
// }
// MvpRef.get().hideRecommend((appUpdateModel != null && appUpdateModel.getChannels() != null
// && appUpdateModel.getChannels().contains(channelId))
// || (appUpdateModel != null && !appUpdateModel.isShowRecommend())
// , (appUpdateModel != null && appUpdateModel.getChannels() != null
// && appUpdateModel.getChannels().contains(channelId))
// || (appUpdateModel != null && !appUpdateModel.isShowGame()));
// }
//
// @Override
// public void onComplete() {
//
// }
// });
MvpRef.get().hideRecommend(false, false);
}
@Override
public void getNameAuthResult(int type) {
// NewApi.getInstance().getNameAuthResult(new com.qpyy.libcommon.api.BaseObserver<NameAuthResult>(false) {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(NameAuthResult result) {
// if (result.getApp_status() == 2) {
// ARouter.getInstance().build(ARouteConstants.AUTH_RESULT_PAGE).withString("failStr", result.getReason()).withInt("examineType", 1).withInt("returnResult", 3).navigation();
// } else if (result.getApp_status() == 0) {
//// ToastUtils.show("审核中");
// ARouter.getInstance().build(ARouteConstants.AUTH_RESULT_PAGE).withString("failStr", result.getReason()).withInt("examineType", 1).withInt("returnResult", 1).navigation();
// } else if (result.getApp_status() == 1) {
//// ToastUtils.show("已认证");
// ARouter.getInstance().build(ARouteConstants.AUTH_RESULT_PAGE).withString("failStr", result.getReason()).withInt("examineType", 1).withInt("returnResult", 2).navigation();
// } else if (result.getApp_status() == 3) {
// go2NameAuth(type);
// }
// }
//
// @Override
// public void onErrorCode(int code) {
// super.onErrorCode(code);
// if (code == ErrorCode.AUTH_NOT_EXIT) {
// go2NameAuth(type);
// }
// }
//
// @Override
// public void onComplete() {
//
// }
// });
}
private void go2NameAuth(int type) {
// if (type == 0) {
// ARouter.getInstance().build(ARouteConstants.ME_NAME_AUTH).withString("from","我的界面").navigation();
// }
}
}

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View File

@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="@color/color_F9FAFA"
android:endColor="@color/color_DFFFFE"
android:angle="180"/>
<corners android:radius="@dimen/dp_180"/>
</shape>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_white"/>
<corners android:radius="@dimen/dp_14"/>
</shape>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@mipmap/index_level_search_o"
android:maxLevel="1" />
<item
android:drawable="@mipmap/index_icon_close"
android:maxLevel="2" />
</level-list>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="@dimen/dp_295" android:height="@dimen/dp_32">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="@dimen/dp_31" />
<stroke android:width="2dp" android:color="@color/color_FF333333" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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"
tools:context=".activity.RankingListActivity">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<com.qxcm.moduleutil.widget.CustomTopBar
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- app:tabBackground="@mipmap/real_img"-->
<!-- app:tabInlineLabel="true"-->
<!-- app:tabContentStart="@dimen/dp_23"-->
<!-- app:tabGravity="center"-->
<!-- app:tabIconTint="@color/color_FF333333"-->
<!-- app:tabIconTintMode="add"-->
<!-- app:tabIndicatorAnimationDuration="@integer/material_motion_duration_long_1"-->
<!-- app:tabIndicator="@color/color_FF333333"-->
<!-- app:tabIndicatorAnimationMode="elastic"-->
<!-- app:tabIndicatorColor="@color/color_FF333333"-->
<!-- app:tabIndicatorFullWidth="true"-->
<!-- app:tabIndicatorGravity="center"-->
<!-- app:tabIndicatorHeight="@dimen/dp_23"-->
<!-- app:tabMaxWidth="@dimen/dp_23"-->
<!-- app:tabMinWidth="@dimen/dp_23"-->
<!-- app:tabMode="auto"-->
<!-- app:tabPadding="@dimen/dp_23"-->
<!-- app:tabRippleColor="@color/color_FF333333"-->
<!-- app:tabSelectedTextAppearance="@dimen/dp_23"-->
<!-- app:tabSelectedTextColor="@color/color_FF333333"-->
<!-- app:tabTextAppearance="@dimen/dp_23"-->
<!-- app:tabTextColor="@color/color_FF333333"-->
<!-- app:tabUnboundedRipple="true"-->
<!-- />-->
<com.qxcm.moduleutil.widget.ScrollViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tabs"
app:layout_constraintBottom_toBottomOf="parent"/>
</LinearLayout>
</layout>

View File

@@ -0,0 +1,248 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_90"
tools:ignore="MissingConstraints">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_44"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_13"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="@dimen/dp_0"
android:layout_height="@dimen/dp_32"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginBottom="@dimen/dp_6"
android:layout_weight="1"
android:background="@drawable/shape_search_in"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginLeft="@dimen/dp_11"
android:layout_marginRight="@dimen/dp_7"
android:src="@drawable/index_level_search" />
<EditText
android:id="@+id/edit_query"
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/transparent"
android:hint="输入相关的主播名、房间名"
android:maxLength="10"
android:singleLine="true"
android:textColor="#333333"
android:textColorHint="@color/color_FF999999"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="@dimen/dp_20"
android:text="取消"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14"
/>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 搜索历使 -->
<LinearLayout
android:id="@+id/ll_history"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginRight="@dimen/dp_16"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="历史记录"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
android:textStyle="normal"
/>
<ImageView
android:id="@+id/iv_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:visibility="gone"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view_history"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10" />
</LinearLayout>
<!-- 正在搜索 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view_record"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<!-- 搜索结果 -->
<RelativeLayout
android:id="@+id/rl_result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedscrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_room"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
android:background="#F4F4F4"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_20">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="相关房间"
android:textColor="#ff9c9c9c"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tv_room_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:drawablePadding="@dimen/dp_5"
android:text="全部 7"
android:textColor="#ffa6a6a6"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view_room"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFF"
android:padding="@dimen/dp_17" />
<RelativeLayout
android:id="@+id/rl_user"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_42"
android:background="@color/color_F9FAFA">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/dp_10"
android:text="相关用户"
android:textColor="#ff9c9c9c"
android:textSize="@dimen/sp_12" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFF"
android:padding="@dimen/dp_17" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<RelativeLayout
android:id="@+id/rl_null"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_110"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_15"
android:text="什么也没有~"
android:textColor="#ffbdbdbc"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</layout>

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srlEnableLoadMore="false"
app:srlEnableRefresh="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_hot"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:text="平台推荐"
android:textColor="#333333"
android:paddingStart="@dimen/dp_6"
android:textSize="16sp"
android:textStyle="bold"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/dp_6"
android:paddingRight="@dimen/dp_6"
android:paddingBottom="@dimen/dp_50" />
</LinearLayout>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</layout>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_transparent"
android:clipChildren="false">
<ImageView
android:id="@+id/iv_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:contentDescription="@null"
android:scaleType="fitXY"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_35"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_20"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintDimensionRatio="340:25"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_day"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:background="@drawable/bg_r100_yellow"
android:layout_weight="1"
android:gravity="center"
android:text="日榜"
android:textColor="@color/black"
android:textSize="@dimen/sp_13" />
<TextView
android:id="@+id/tv_week"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/bg_r80_hui"
android:gravity="center"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:text="周榜"
android:textColor="@color/black"
android:textSize="@dimen/sp_13" />
<TextView
android:id="@+id/tv_month"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_20"
android:background="@drawable/bg_r80_hui"
android:gravity="center"
android:text="月榜"
android:textColor="@color/black"
android:textSize="@dimen/sp_13" />
</LinearLayout>
<include
android:id="@+id/include_top_bar"
layout="@layout/ranking_list"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_70"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_45"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/voice_title"
android:textColor="@color/color_black"
android:textSize="@dimen/sp_25"
android:textStyle="normal"
android:layout_marginLeft="@dimen/dp_15"/>
<LinearLayout
android:id="@+id/ll_search"
android:layout_width="@dimen/dp_0"
android:layout_height="38dp"
android:layout_marginLeft="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/shape_search_in"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="gone">
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"
android:layout_marginLeft="@dimen/dp_16"
android:src="@drawable/index_level_search" />
<TextView
android:id="@+id/edit_query"
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="请输入ID/房间名称"
android:maxLength="10"
android:paddingLeft="@dimen/dp_12"
android:paddingRight="@dimen/dp_12"
android:textColor="#999999"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<ImageView
android:id="@+id/iv_room3"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/index_level_search_o"
android:layout_toStartOf="@+id/iv_ranking_list"
android:layout_centerInParent="true"
android:layout_marginEnd="@dimen/dp_11"/>
<ImageView
android:id="@+id/iv_ranking_list"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:layout_toStartOf="@+id/iv_room"
android:layout_marginEnd="@dimen/dp_11"
android:layout_centerInParent="true"
android:scaleType="fitCenter"
android:src="@mipmap/ic_home_rank" />
<ImageView
android:id="@+id/iv_room"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/ic_paidui_home"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:layout_marginEnd="@dimen/dp_11"/>
</RelativeLayout>
<com.qxcm.moduleutil.widget.ScrollViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:background="@color/color_transparent" />
</LinearLayout>
</layout>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_transparent"
app:elevation="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraint_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingTop="@dimen/dp_10"
android:paddingRight="16dp"
app:layout_scrollFlags="scroll|enterAlways">
<!-- <com.stx.xhb.xbanner.XBanner-->
<!-- android:id="@+id/banner"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="0dp"-->
<!-- app:AutoPlayTime="3000"-->
<!-- app:isAutoPlay="true"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
<!-- app:layout_constraintDimensionRatio="340:96"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent"-->
<!-- app:pointsVisibility="false"-->
<!-- android:visibility="gone"/>-->
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/banner_view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:bvp_indicator_visibility="gone"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_31"
app:layout_constraintTop_toBottomOf="@+id/banner_view_pager"
android:background="@drawable/bg_r25_f3333"
android:orientation="horizontal"
android:layout_marginTop="@dimen/dp_12">
<ImageView
android:id="@+id/tv_hot"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:layout_centerInParent="true"
android:layout_marginStart="@dimen/dp_15"
android:layout_alignParentStart="true"
android:src="@mipmap/pp"
/>
<com.sunfusheng.marqueeview.MarqueeView
android:id="@+id/marqueeView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_toEndOf="@+id/tv_hot"
android:layout_toStartOf="@+id/tv_wg"
app:mvAnimDuration="1000"
app:mvInterval="3000"
app:mvTextColor="@color/color_FF333333"
app:mvTextSize="@dimen/sp_14"
app:mvSingleLine="true"/>
<ImageView
android:id="@+id/tv_wg"
android:layout_width="@dimen/dp_85"
android:layout_height="@dimen/dp_30"
android:layout_alignParentEnd="true"
android:layout_marginStart="@dimen/dp_8"
android:src="@mipmap/wg"
android:scaleType="fitXY"
/>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.example.moduletablayout.CustomSlidingTabLayout
android:id="@+id/sliding_tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginRight="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
app:tl_indicator_corner_radius="@dimen/dp_3"
app:tl_indicator_drawable="@drawable/index_bg_indicator"
app:tl_indicator_height="@dimen/dp_6"
app:tl_indicator_margin_bottom="@dimen/dp_3"
app:tl_showCateIndicator="false"
app:tl_indicator_width="@dimen/dp_28"
app:tl_tab_width="@dimen/dp_50"
app:tl_textBold="SELECT"
app:tl_textSelectColor="@color/color_2B2823"
app:tl_textSelectedSize="@dimen/sp_14"
app:tl_textUnselectColor="@color/color_FF999999"
app:tl_textsize="@dimen/sp_12" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_14"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_6"
>
<RelativeLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_71"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_follow_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@mipmap/default_avatar"
app:riv_corner_radius="@dimen/dp_11" />
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_r11_with"
android:scaleType="fitCenter"
app:riv_corner_radius="@dimen/dp_11" />
</RelativeLayout>
<ImageView
android:id="@+id/iv_play"
android:layout_width="@dimen/dp_17"
android:layout_height="@dimen/dp_11"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:src="@drawable/phonetic"
app:layout_constraintTop_toTopOf="@id/ll"
app:layout_constraintStart_toStartOf="@id/ll" />
<LinearLayout
android:layout_width="@dimen/dp_92"
android:layout_height="@dimen/dp_21"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@+id/ll"
app:layout_constraintBottom_toBottomOf="@+id/ll"
app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/group"
android:layout_marginStart="@dimen/dp_8"
android:gravity="center"
android:layout_marginEnd="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_4"
>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_20"
android:id="@+id/rv_tags"
android:layout_gravity="center"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_play"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:listitem="@layout/index_item_image"/>
<TextView
android:id="@+id/tv_num"
android:layout_width="@dimen/dp_32"
android:layout_height="@dimen/dp_18"
android:text="200人"
android:textColor="@color/color_FFFFF0F0"
android:textSize="@dimen/sp_12"
android:gravity="center"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/rv_tags"
app:layout_constraintEnd_toEndOf="parent"/>
</LinearLayout>
<TextView
android:id="@+id/tv_room_name"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll"
android:gravity="center"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_12"
tools:text="标题" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_marginBottom="@dimen/dp_10"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_text"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_28"
android:layout_marginRight="@dimen/dp_10"
android:background="@drawable/index_bg_tag"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_4"
android:paddingRight="@dimen/dp_15"
android:paddingBottom="@dimen/dp_4"
android:textColor="@color/color_FF666666"
android:textSize="@dimen/sp_12"
tools:text="45865"></TextView>
</RelativeLayout>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/riv_user_head"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_13"
android:layout_centerHorizontal="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:riv_corner_radius="@dimen/dp_6"
android:scaleType="fitXY"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="44dp"
android:gravity="center_vertical"
android:background="#FFF"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_10"
android:src="@mipmap/index_icon_search"></ImageView>
<TextView
android:id="@+id/tv_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_marginRight="@dimen/dp_20"
android:text="马恩岛"
android:textColor="#6D7278"
android:textSize="@dimen/sp_14" />
</LinearLayout>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="@dimen/dp_90"
android:layout_marginBottom="@dimen/dp_5"
android:background="@drawable/index_bg_search_item"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_87">
<RelativeLayout
android:id="@+id/rl_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:background="@drawable/index_bg_search_avatar"
android:padding="@dimen/dp_5">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv_room_cover"
android:layout_width="@dimen/dp_56"
android:layout_height="@dimen/dp_56"
android:scaleType="center"
app:riv_border_color="#E3E3E3"
app:riv_border_width="@dimen/dp_1"
app:gav_border_color="#E3E3E3"
app:gav_border_width="@dimen/dp_1"
app:riv_corner_radius="@dimen/dp_360"
tools:src="@color/color_FF88CF" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv_room_lock"
android:layout_width="@dimen/dp_56"
android:layout_height="@dimen/dp_56"
android:scaleType="fitXY"
android:src="@mipmap/index_img_room_mask"
app:riv_border_color="#E3E3E3"
app:riv_border_width="@dimen/dp_1"
app:gav_border_color="#E3E3E3"
app:gav_border_width="@dimen/dp_1"
app:riv_corner_radius="@dimen/dp_360" />
</RelativeLayout>
<TextView
android:id="@+id/tv_room_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_14"
android:layout_toRightOf="@+id/rl_avatar"
android:singleLine="true"
android:textColor="@color/color_FF1C1C1C"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
tools:text="房间名" />
<ImageView
android:id="@+id/iv_room_labe"
android:layout_width="@dimen/dp_37"
android:layout_height="@dimen/dp_20"
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_17"
android:layout_marginBottom="@dimen/dp_15"
android:layout_toRightOf="@+id/rl_avatar"
android:src="@mipmap/ic_user_new"/>
<TextView
android:id="@+id/tv_room_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_room_name"
android:layout_marginLeft="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_24"
android:layout_toRightOf="@+id/rl_avatar"
android:drawablePadding="@dimen/dp_5"
android:singleLine="true"
android:textColor="@color/color_797979"
android:textSize="@dimen/sp_12"
android:visibility="gone"
tools:text="19234" />
<TextView
android:id="@+id/tv_anchor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_8"
android:layout_toLeftOf="@+id/tv_popularity"
android:drawableLeft="@mipmap/index_icon_user"
android:drawablePadding="@dimen/dp_5"
android:ellipsize="end"
android:paddingRight="5dp"
android:singleLine="true"
android:textColor="#ffffffff"
android:textSize="@dimen/sp_11"
android:visibility="gone"
tools:text="主播名"></TextView>
<TextView
android:id="@+id/tv_popularity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="@dimen/dp_17"
android:layout_marginBottom="@dimen/dp_15"
android:drawableLeft="@mipmap/index_icon_fire"
android:drawablePadding="@dimen/dp_5"
android:textColor="@color/color_FF1C1C1C"
android:textSize="@dimen/sp_11"
tools:text="23213" />
</RelativeLayout>
</LinearLayout>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="@dimen/dp_73"
android:layout_marginBottom="@dimen/dp_4"
android:background="@drawable/index_bg_search_item">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/index_bg_search_avatar"
android:padding="@dimen/dp_5">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv_user_head"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:background="@drawable/index_bg_search_avatar"
app:riv_border_color="#E3E3E3"
app:riv_border_width="@dimen/dp_1"
app:gav_border_color="#E3E3E3"
app:gav_border_width="@dimen/dp_1"
app:riv_corner_radius="@dimen/dp_360"
tools:src="@color/color_FF88CF" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_6"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_nick_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:textColor="#ff6d7278"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
tools:text="爱沙尼亚" />
<TextView
android:id="@+id/tv_follow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_20"
android:background="@drawable/common_sr_btn_bg"
android:gravity="center"
android:paddingLeft="@dimen/dp_14"
android:paddingTop="@dimen/dp_2"
android:paddingRight="@dimen/dp_14"
android:paddingBottom="@dimen/dp_2"
android:text="关注"
android:textColor="#ffffffff"
android:textSize="@dimen/sp_12"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginRight="@dimen/dp_16"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_online"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:drawableLeft="@mipmap/index_icon_online"
android:drawablePadding="@dimen/dp_5"
android:singleLine="true"
android:textColor="@color/color_797979"
android:textSize="@dimen/sp_12"
tools:text="在线" />
<com.qxcm.moduleutil.widget.BeautifulNameView
android:id="@+id/bnv_user_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:singleLine="true"
android:textColor="@color/color_797979"
android:textSize="@dimen/sp_12"
tools:text="19234"/>
<TextView
android:id="@+id/tv_separation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15"
android:drawableLeft="@mipmap/index_icon_member"
android:singleLine="true"
android:drawablePadding="@dimen/dp_3"
android:textColor="@color/color_797979"
android:textSize="@dimen/sp_12"
tools:text="19234" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_33"
xmlns:tools="http://schemas.android.com/tools"
android:background="#F4F4F4">
<TextView
android:id="@+id/tv_head"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/dp_10"
tools:text="相关房间"
android:textColor="#ff9c9c9c"
android:textSize="@dimen/sp_12" />
</RelativeLayout>

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/rl_root"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_150"
android:layout_marginLeft="@dimen/dp_1"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginRight="@dimen/dp_15">
<RelativeLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_follow_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@mipmap/default_avatar"
app:riv_corner_radius="@dimen/dp_11" />
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_r11_with"
android:scaleType="fitCenter"
app:riv_corner_radius="@dimen/dp_11"
/>
</RelativeLayout>
<ImageView
android:id="@+id/iv_type"
android:layout_width="@dimen/dp_66"
android:layout_height="@dimen/dp_23"
android:src="@mipmap/jiaoyou"
app:layout_constraintEnd_toEndOf="@+id/ll"
app:layout_constraintTop_toTopOf="@+id/ll" />
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_34"
android:text="烟花易冷"
android:textColor="@color/color_FFFFF0F0"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent" />
<ImageView
android:id="@+id/iv_play"
android:layout_width="@dimen/dp_28"
android:layout_height="@dimen/dp_18"
android:src="@drawable/phonetic"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/tv_name"
android:layout_marginBottom="@dimen/dp_10"
/>
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_10"
android:text="烟花易冷"
android:textColor="@color/color_FFFFF0F0"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/tv_name"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/view_num_bg"
android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_22"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_10"
android:background="@drawable/bg_r15_4d000000"
android:gravity="center|left"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_10"
android:src="@mipmap/f_h" />
<TextView
android:id="@+id/tv_num"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="@dimen/dp_6"
android:text="99"
android:textColor="@color/color_FFFFF0F0"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_110"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/common_img_empty" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_15"
android:text="什么也没有~"
android:textColor="#ffbdbdbc"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,987 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:ignore="ResourceName">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingStart="@dimen/dp_12"
android:paddingEnd="@dimen/dp_12"
tools:background="@color/color_FF9BB1FF">
<View
android:id="@+id/view_top2"
android:layout_width="0dp"
android:layout_height="@dimen/dp_96"
android:layout_marginTop="@dimen/dp_25"
app:layout_constraintEnd_toStartOf="@+id/view_top1"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_top1" />
<View
android:id="@+id/view_top1"
android:layout_width="0dp"
android:layout_height="@dimen/dp_106"
android:layout_marginTop="@dimen/dp_15"
app:layout_constraintEnd_toStartOf="@+id/view_top3"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@id/view_top2"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_top3"
android:layout_width="0dp"
android:layout_height="@dimen/dp_96"
android:layout_marginTop="@dimen/dp_25"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@id/view_top1"
app:layout_constraintTop_toTopOf="@id/view_top1" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv_2"
android:layout_width="@dimen/dp_58"
android:layout_height="@dimen/dp_58"
android:src="@color/white"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top2"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toTopOf="@id/view_top2"
app:layout_constraintVertical_bias="0.7"
app:riv_oval="true" />
<FrameLayout
android:id="@+id/fl_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toTopOf="@id/view_top2"
tools:ignore="MissingConstraints">
<ImageView
android:layout_width="@dimen/dp_110"
android:layout_height="@dimen/dp_160"
android:paddingStart="@dimen/dp_20"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:src="@mipmap/guanb2" />
<RelativeLayout
android:id="@+id/r_2_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
>
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/im_user2"
android:layout_width="@dimen/dp_44"
android:layout_height="@dimen/dp_44"
android:src="@color/white"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_12"
app:riv_oval="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_5"
android:background="@mipmap/huangg2" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/r_2_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:visibility="gone">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_second_cp1_head"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="5dp"
android:layout_marginTop="11dp"
android:layout_marginBottom="10dp"
android:rotation="-20"
android:src="@color/white" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_second_cp2_head"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="0dp"
android:layout_marginTop="11dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="10dp"
android:layout_toEndOf="@+id/iv_second_cp1_head"
android:rotation="20"
android:src="@color/white" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="70dp"
android:src="@mipmap/cp_second"
android:visibility="visible" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_gravity="center_horizontal|top"
android:layout_marginTop="@dimen/dp_63"
android:gravity="center"
android:text="TOP 2"
android:textColor="#4586DD"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_username2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_60"
android:ellipsize="end"
android:gravity="center"
android:maxLength="3"
android:text=""
android:textColor="#ff333333"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_id2"
android:layout_width="wrap_content"
android:layout_height="18dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_42"
android:text=""
android:textColor="#ff666666"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_xing2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_25"
android:background="@mipmap/bangdan4"
android:gravity="center"
android:paddingStart="@dimen/dp_15"
android:textColor="@color/black"
android:textSize="@dimen/sp_10"
tools:text="9070" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_22"
app:layout_constraintBottom_toBottomOf="@id/view_top1"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toTopOf="@id/view_top1"
tools:ignore="MissingConstraints">
<ImageView
android:layout_width="@dimen/dp_110"
android:layout_height="@dimen/dp_160"
android:scaleType="centerCrop"
android:layout_gravity="center"
android:src="@mipmap/guanb1" />
<RelativeLayout
android:id="@+id/r_1_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
android:gravity="center"
>
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/im_user1"
android:layout_width="@dimen/dp_44"
android:layout_height="@dimen/dp_44"
android:src="@color/white"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginTop="@dimen/dp_12"
app:riv_oval="true" />
<ImageView
android:id="@+id/im1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|top|center"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_5"
android:src="@mipmap/huangg1" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/r_1_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:visibility="gone">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_one_cp1_head"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="5dp"
android:layout_marginTop="11dp"
android:layout_marginBottom="10dp"
android:rotation="-20"
android:src="@color/white" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_one_cp2_head"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="7dp"
android:layout_marginTop="11dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="10dp"
android:layout_toEndOf="@+id/iv_one_cp1_head"
android:rotation="20"
android:src="@color/white" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="70dp"
android:src="@mipmap/cp_one"
android:visibility="visible" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_gravity="center_horizontal|top"
android:layout_marginTop="@dimen/dp_62"
android:gravity="center"
android:text="TOP 1"
android:textColor="#D74D2C"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_username1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_60"
android:ellipsize="end"
android:gravity="center"
android:maxLength="3"
android:text=""
android:textColor="#ff333333"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_id1"
android:layout_width="wrap_content"
android:layout_height="18dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_42"
android:text=""
android:textColor="#ff666666"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_xing1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_25"
android:background="@mipmap/bangdan4"
android:gravity="center"
android:paddingStart="@dimen/dp_15"
android:textColor="@color/black"
android:textSize="@dimen/sp_10"
tools:text="9070" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toTopOf="@id/view_top3"
tools:ignore="MissingConstraints">
<ImageView
android:layout_width="@dimen/dp_110"
android:layout_height="@dimen/dp_160"
android:layout_gravity="center"
android:paddingEnd="@dimen/dp_20"
android:scaleType="centerCrop"
android:src="@mipmap/guanb3" />
<RelativeLayout
android:id="@+id/r_3_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
android:gravity="center"
>
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/im_user3"
android:layout_width="@dimen/dp_44"
android:layout_height="@dimen/dp_44"
android:src="@color/white"
android:layout_marginStart="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_12"
app:riv_oval="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/huangg3"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_5"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/r_3_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_7"
android:gravity="center"
android:visibility="gone">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_three_cp1_head"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="5dp"
android:layout_marginTop="11dp"
android:layout_marginBottom="10dp"
android:rotation="-20"
android:src="@color/white" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_three_cp2_head"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_marginStart="0dp"
android:layout_marginTop="11dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="10dp"
android:layout_toEndOf="@+id/iv_three_cp1_head"
android:rotation="20"
android:src="@color/white" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="70dp"
android:src="@mipmap/cp_three"
android:visibility="visible" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="23dp"
android:layout_gravity="center_horizontal|top"
android:layout_marginTop="@dimen/dp_63"
android:gravity="center"
android:text="TOP 3"
android:textColor="#E3B464"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_username3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_60"
android:ellipsize="end"
android:gravity="center"
android:maxLength="3"
android:text=""
android:textColor="#ff333333"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_id3"
android:layout_width="wrap_content"
android:layout_height="18dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_42"
android:text=""
android:textColor="#ff666666"
android:textSize="10sp" />
<TextView
android:id="@+id/tv_xing3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="@dimen/dp_25"
android:background="@mipmap/bangdan4"
android:gravity="center"
android:paddingStart="@dimen/dp_15"
android:textColor="@color/black"
android:textSize="@dimen/sp_10"
tools:text="9070" />
</FrameLayout>
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@mipmap/huangg2"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top2"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toTopOf="@id/view_top2" />
<ImageView
android:id="@+id/iv_bg_two"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_110"
android:paddingStart="@dimen/dp_20"
android:scaleType="center"
android:src="@mipmap/guanb2"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/iv_bg_one"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/iv_bg_one"
app:layout_constraintTop_toBottomOf="@id/view_top2"
app:layout_constraintTop_toTopOf="parent" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv_1"
android:layout_width="@dimen/dp_67"
android:layout_height="@dimen/dp_67"
android:src="@color/white"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top1"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintHorizontal_bias="0.487"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toTopOf="@id/view_top1"
app:layout_constraintVertical_bias="0.6"
app:riv_oval="true" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@mipmap/huangg1"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top1"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toTopOf="@id/view_top1" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv_3"
android:layout_width="@dimen/dp_58"
android:layout_height="@dimen/dp_58"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top3"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toTopOf="@id/view_top3"
app:layout_constraintVertical_bias="0.7"
app:riv_oval="true" />
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@mipmap/huangg3"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top3"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toTopOf="@id/view_top3" />
<ImageView
android:id="@+id/iv_bg_one"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_70"
android:scaleType="center"
android:src="@mipmap/guanb1"
android:visibility="gone"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@+id/iv_bg_two"
app:layout_constraintRight_toLeftOf="@id/iv_bg_three"
app:layout_constraintTop_toBottomOf="@id/view_top1"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_bg_three"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_12"
android:paddingEnd="@dimen/dp_20"
android:scaleType="center"
android:src="@mipmap/guanb3"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/iv_bg_one"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/iv_bg_one"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_top3" />
<TextView
android:id="@+id/tv_name2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:ellipsize="end"
android:maxWidth="@dimen/dp_90"
android:maxLength="10"
android:singleLine="true"
android:textColor="@color/color_white"
android:textSize="@dimen/sp_15"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toBottomOf="@id/view_top2"
tools:text="我是一个温柔的大树" />
<com.qxcm.moduleutil.widget.BeautifulNameView
android:id="@+id/beautiful_view_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toBottomOf="@id/tv_name2" />
<TextView
android:id="@+id/tv_name1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_15"
android:maxWidth="@dimen/dp_90"
android:maxLength="10"
android:singleLine="true"
android:textColor="@color/color_white"
android:textSize="@dimen/sp_15"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toBottomOf="@id/view_top1"
tools:text="我是一个温柔的大树" />
<com.qxcm.moduleutil.widget.BeautifulNameView
android:id="@+id/beautiful_view_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toBottomOf="@id/tv_name1" />
<TextView
android:id="@+id/tv_name3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:maxWidth="@dimen/dp_90"
android:maxLength="10"
android:singleLine="true"
android:textColor="@color/color_white"
android:textSize="@dimen/sp_15"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toBottomOf="@id/view_top3"
tools:text="我是一个温柔的大树" />
<com.qxcm.moduleutil.widget.BeautifulNameView
android:id="@+id/beautiful_view_third"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toBottomOf="@id/tv_name3" />
<TextView
android:id="@+id/tv_charm2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:background="@mipmap/common_bg_rank_wealth_sr"
android:gravity="center"
android:paddingLeft="@dimen/dp_28"
android:paddingRight="@dimen/dp_5"
android:paddingBottom="@dimen/dp_2"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_8"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/view_top2"
app:layout_constraintBottom_toTopOf="@+id/tv_name2"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintStart_toStartOf="@id/view_top2"
tools:text="677777" />
<TextView
android:id="@+id/tv_charm1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_33"
android:background="@mipmap/common_bg_rank_wealth_sr"
android:gravity="center"
android:paddingLeft="@dimen/dp_28"
android:paddingRight="@dimen/dp_5"
android:paddingBottom="@dimen/dp_2"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_8"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top1"
app:layout_constraintBottom_toTopOf="@+id/tv_name1"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintStart_toStartOf="@id/view_top1"
tools:text="6777" />
<TextView
android:id="@+id/tv_charm3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_34"
android:background="@mipmap/common_bg_rank_wealth_sr"
android:gravity="center"
android:paddingLeft="@dimen/dp_28"
android:paddingRight="@dimen/dp_5"
android:paddingBottom="@dimen/dp_2"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_8"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/view_top3"
app:layout_constraintBottom_toTopOf="@+id/tv_name3"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintStart_toStartOf="@id/view_top3"
tools:text="6777" />
<LinearLayout
android:id="@+id/ll_vip2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top2"
app:layout_constraintStart_toStartOf="@id/view_top2"
app:layout_constraintTop_toBottomOf="@id/beautiful_view_second">
<ImageView
android:id="@+id/iv_vip2"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:scaleType="fitCenter" />
<ImageView
android:id="@+id/iv_level2"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_24"
android:scaleType="fitCenter" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_vip1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top1"
app:layout_constraintStart_toStartOf="@id/view_top1"
app:layout_constraintTop_toBottomOf="@id/beautiful_view_first">
<ImageView
android:id="@+id/iv_vip1"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:scaleType="fitCenter" />
<ImageView
android:id="@+id/iv_level1"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_24"
android:scaleType="fitCenter" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_vip3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="@id/view_top3"
app:layout_constraintStart_toStartOf="@id/view_top3"
app:layout_constraintTop_toBottomOf="@id/beautiful_view_third">
<ImageView
android:id="@+id/iv_vip3"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:scaleType="fitCenter" />
<ImageView
android:id="@+id/iv_level3"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_24"
android:scaleType="fitCenter" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/common_bg_top_r15_white"
android:paddingTop="@dimen/dp_12"
android:paddingBottom="@dimen/dp_68"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_2"
app:layout_constraintVertical_bias="1.0" />
<com.lihang.ShadowLayout
android:id="@+id/sl_my"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:hl_cornerRadius_leftTop="@dimen/dp_15"
app:hl_cornerRadius_rightTop="@dimen/dp_15"
app:hl_shadowColor="#618F6FFF"
app:hl_shadowHidden="true"
app:hl_shadowHiddenBottom="false"
app:hl_shadowHiddenLeft="false"
app:hl_shadowHiddenRight="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_56"
android:background="@mipmap/bangdan"
android:paddingLeft="@dimen/dp_20"
android:paddingRight="@dimen/dp_20">
<RelativeLayout
android:id="@+id/rl_my"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints"
android:visibility="gone">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/riv"
android:layout_width="@dimen/dp_37"
android:layout_height="@dimen/dp_37"
android:src="@color/color_FF88CF"
app:gav_border_color="@color/color_FF5872FF"
app:gav_border_width="@dimen/dp_1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_border_color="@color/color_FF5872FF"
app:riv_border_width="@dimen/dp_1"
app:riv_oval="true" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14"
android:layout_toEndOf="@id/riv"
android:layout_toRightOf="@+id/riv"
app:layout_constraintStart_toEndOf="@id/riv"
app:layout_constraintTop_toTopOf="@id/riv"
tools:text="Alan Bates" />
<TextView
android:id="@+id/tv_charm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:background="@mipmap/bangdan2"
android:gravity="center"
android:paddingLeft="@dimen/dp_25"
android:paddingRight="@dimen/dp_5"
android:paddingBottom="@dimen/dp_2"
android:textColor="@color/black"
android:textSize="@dimen/sp_10"
android:layout_toRightOf="@id/riv"
android:layout_alignBottom="@id/riv"
tools:text="9070" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_my_cp"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints">
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_my_cp1_head"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@color/white" />
<com.qxcm.moduleutil.widget.GifAvatarOvalView
android:id="@+id/iv_my_cp2_head"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_toEndOf="@+id/iv_my_cp1_head"
android:src="@color/white" />
<ImageView
android:id="@+id/v_my_cp1_head"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/cp_pt"
android:visibility="visible" />
<TextView
android:id="@+id/tv_my_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_5"
android:gravity="center"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_13"
android:layout_toEndOf="@id/v_my_cp1_head"
android:layout_toRightOf="@+id/v_my_cp1_head"
app:layout_constraintStart_toEndOf="@id/v_my_cp1_head"
app:layout_constraintTop_toTopOf="@id/v_my_cp1_head"
tools:text="Alan Bates" />
<TextView
android:id="@+id/tv_my_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_12"
android:gravity="center"
android:layout_toEndOf="@id/tv_my_name"
android:layout_toRightOf="@+id/tv_my_name"
app:layout_constraintStart_toEndOf="@id/tv_my_name"
app:layout_constraintTop_toTopOf="@id/tv_my_name"
tools:text="ID:" />
<TextView
android:id="@+id/tv_my_charm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_5"
android:gravity="center"
android:textColor="@color/black"
android:textSize="@dimen/sp_13"
android:layout_toEndOf="@id/v_my_cp1_head"
android:layout_toRightOf="@+id/v_my_cp1_head"
android:layout_below="@id/tv_my_name"
tools:text="9070"
android:visibility="gone"/>
<TextView
android:id="@+id/tv_my_charm_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_FF333333"
android:gravity="center"
android:textSize="@dimen/sp_12"
android:layout_toEndOf="@id/tv_my_charm"
android:layout_toRightOf="@+id/tv_my_charm"
app:layout_constraintStart_toEndOf="@id/tv_my_charm"
app:layout_constraintTop_toTopOf="@id/tv_my_charm"
android:layout_below="@+id/tv_my_id"
tools:text="ID:"
android:visibility="gone"/>
</RelativeLayout>
<TextView
android:id="@+id/tv_rank_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_FFA8A8A8"
android:textSize="@dimen/sp_11"
android:layout_marginTop="@dimen/dp_20"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="距上榜差 1232" />
<TextView
android:id="@+id/tv_rank_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_3"
android:text=""
android:textColor="@color/color_FF666666"
android:textSize="@dimen/sp_12"
android:layout_marginTop="@dimen/dp_10"
app:layout_constraintBottom_toTopOf="@id/tv_rank_no"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,3 @@
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
</resources>

View File

@@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.QxLive" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>

View File

@@ -0,0 +1,3 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="common_id_formatter" translatable="false" tools:ignore="ResourceName">ID: %s</string>
</resources>

View File

@@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.QxLive" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View File

@@ -0,0 +1,17 @@
package com.example.modulevoice;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}