初始化代码
1
modulevoice/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/build
|
||||
53
modulevoice/build.gradle
Normal 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
@@ -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
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
21
modulevoice/src/main/AndroidManifest.xml
Normal 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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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时,该值表示房间id;type=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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
// }
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
// }
|
||||
}
|
||||
}
|
||||
170
modulevoice/src/main/res/drawable/ic_launcher_background.xml
Normal 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>
|
||||
30
modulevoice/src/main/res/drawable/ic_launcher_foreground.xml
Normal 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>
|
||||
11
modulevoice/src/main/res/drawable/index_bg_search_avatar.xml
Normal 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>
|
||||
@@ -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>
|
||||
11
modulevoice/src/main/res/drawable/index_level_search.xml
Normal 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>
|
||||
10
modulevoice/src/main/res/drawable/shape_search_in.xml
Normal 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>
|
||||
59
modulevoice/src/main/res/layout/activity_ranking_list.xml
Normal 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>
|
||||
248
modulevoice/src/main/res/layout/activity_search.xml
Normal 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>
|
||||
38
modulevoice/src/main/res/layout/fragment_hot_list.xml
Normal 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>
|
||||
93
modulevoice/src/main/res/layout/fragment_ranking_list.xml
Normal 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>
|
||||
105
modulevoice/src/main/res/layout/fragment_voice.xml
Normal 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>
|
||||
126
modulevoice/src/main/res/layout/fragment_voice_category.xml
Normal 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>
|
||||
94
modulevoice/src/main/res/layout/index_item_carousel.xml
Normal 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>
|
||||
22
modulevoice/src/main/res/layout/index_item_history.xml
Normal 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>
|
||||
19
modulevoice/src/main/res/layout/index_item_image.xml
Normal 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>
|
||||
27
modulevoice/src/main/res/layout/index_item_record.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
19
modulevoice/src/main/res/layout/index_item_tecord_head.xml
Normal 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>
|
||||
110
modulevoice/src/main/res/layout/index_rv_item_room_hot0.xml
Normal 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>
|
||||
30
modulevoice/src/main/res/layout/index_view_empty.xml
Normal 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>
|
||||
987
modulevoice/src/main/res/layout/ranking_list.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
BIN
modulevoice/src/main/res/mipmap-hdpi/ic_launcher.webp
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
modulevoice/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
modulevoice/src/main/res/mipmap-mdpi/ic_launcher.webp
Normal file
|
After Width: | Height: | Size: 982 B |
BIN
modulevoice/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
modulevoice/src/main/res/mipmap-xhdpi/ic_launcher.webp
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
modulevoice/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
modulevoice/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
modulevoice/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
modulevoice/src/main/res/mipmap-xxhdpi/jiaoyou.webp
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
modulevoice/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
modulevoice/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
modulevoice/src/main/res/mipmap-xxxhdpi/me_head_bg.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
3
modulevoice/src/main/res/values-en-rUs/strings.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
</resources>
|
||||
16
modulevoice/src/main/res/values-night/themes.xml
Normal 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>
|
||||
10
modulevoice/src/main/res/values/colors.xml
Normal 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>
|
||||
3
modulevoice/src/main/res/values/strings.xml
Normal 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>
|
||||
16
modulevoice/src/main/res/values/themes.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||