1、个人信息完善
2、集成聊天功能 3、完成登录
This commit is contained in:
@@ -23,8 +23,8 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
dataBinding {
|
||||
enable = true
|
||||
|
||||
@@ -7,6 +7,15 @@
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/BaseAppTheme">
|
||||
<activity
|
||||
android:name=".activity.RealName1Activity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activity.RevenueActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activity.DailyTasksActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activity.UserHomepageActivity"
|
||||
android:exported="false" />
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.example.modulevocal.activity;
|
||||
|
||||
|
||||
import android.graphics.Color;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.example.modulevocal.R;
|
||||
import com.example.modulevocal.adapter.TaskBoxAdapter;
|
||||
import com.example.modulevocal.adapter.TaskDataAdapter;
|
||||
import com.example.modulevocal.conacts.DailyTasksConacts;
|
||||
import com.example.modulevocal.databinding.ActivityDailyTasksBinding;
|
||||
import com.example.modulevocal.presenter.DailyTasksPresenter;
|
||||
import com.qxcm.moduleutil.activity.BaseMvpActivity;
|
||||
import com.qxcm.moduleutil.bean.GiftBoxBean;
|
||||
import com.qxcm.moduleutil.bean.TaskDataBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/5/27
|
||||
*@description: 每日任务
|
||||
*/
|
||||
public class DailyTasksActivity extends BaseMvpActivity<DailyTasksPresenter, ActivityDailyTasksBinding> implements DailyTasksConacts.View {
|
||||
|
||||
private TaskBoxAdapter mTaskBoxAdapter;
|
||||
private TaskDataAdapter mTaskDataAdapter;
|
||||
|
||||
@Override
|
||||
protected DailyTasksPresenter bindPresenter() {
|
||||
return new DailyTasksPresenter(this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
MvpPre.tasksLihen();
|
||||
MvpPre.tasksData();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
mBinding.topBar.setTitle("每日任务");
|
||||
mBinding.topBar.setRightTxtVisible(true);
|
||||
mBinding.topBar.setRightText("礼盒记录");
|
||||
mBinding.topBar.setRightColor(Color.parseColor("#FF8ACC"));
|
||||
|
||||
mTaskBoxAdapter = new TaskBoxAdapter();
|
||||
mBinding.rvTask.setLayoutManager(new GridLayoutManager(this,2,GridLayoutManager.VERTICAL,false));
|
||||
mBinding.rvTask.setAdapter(mTaskBoxAdapter);
|
||||
|
||||
mTaskDataAdapter=new TaskDataAdapter();
|
||||
mBinding.rvTaskToday.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
|
||||
mBinding.rvTaskToday.setAdapter(mTaskDataAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_daily_tasks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGiftBox(GiftBoxBean giftBoxBean) {
|
||||
mBinding.tvTitle.setText("今日累计获得金币:"+giftBoxBean.getNewDataJinbi());
|
||||
mTaskBoxAdapter.setNewData(giftBoxBean.getGiftList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tasksDataList(List<TaskDataBean> taskDataBeans) {
|
||||
mTaskDataAdapter.setNewData(taskDataBeans);
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,9 @@ public class MyMoneyActivity extends BaseMvpActivity<MyMoneyPresenter, ActivityM
|
||||
mBinding.tvCz.setOnClickListener(this::onClick);
|
||||
mBinding.tvTx.setOnClickListener(this::onClick);
|
||||
mBinding.r3.setOnClickListener(this::onClick);
|
||||
mBinding.r1.setOnClickListener(this::onClick);
|
||||
mBinding.r2.setOnClickListener(this::onClick);
|
||||
|
||||
}
|
||||
|
||||
private void onClick(View view) {
|
||||
@@ -38,6 +41,14 @@ public class MyMoneyActivity extends BaseMvpActivity<MyMoneyPresenter, ActivityM
|
||||
startActivity(new Intent(this, WithdrawalActivity.class));
|
||||
}else if (view.getId()==R.id.r_3){
|
||||
startActivity(new Intent(this, CurrencyExchangeActivity.class));
|
||||
}else if (view.getId()==R.id.r_1){
|
||||
Intent intent=new Intent(this, RevenueActivity.class);
|
||||
intent.putExtra("type","1");
|
||||
startActivity(intent);
|
||||
}else if (view.getId()==R.id.r_2){
|
||||
Intent intent=new Intent(this, RevenueActivity.class);
|
||||
intent.putExtra("type","2");
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public class RealDetailActivity extends BaseAppCompatActivity<ActivityRealDeatil
|
||||
|
||||
private void onClick(View view) {
|
||||
if (view.getId()==R.id.ll_1||view.getId()==R.id.ll_2){
|
||||
startActivity(new Intent(this, RealNameActivity.class));
|
||||
startActivity(new Intent(this, RealName1Activity.class));
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
package com.example.modulevocal.activity;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.style.AbsoluteSizeSpan;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import com.blankj.utilcode.util.RegexUtils;
|
||||
import com.example.modulevocal.R;
|
||||
import com.example.modulevocal.conacts.RealNameConacts;
|
||||
import com.example.modulevocal.databinding.ActivityRealNameBinding;
|
||||
import com.example.modulevocal.presenter.RealNamePresenter;
|
||||
import com.qxcm.moduleutil.activity.BaseMvpActivity;
|
||||
import com.qxcm.moduleutil.bean.RealNameBean;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.api.WbCloudFaceContant;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.api.WbCloudFaceVerifySdk;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.api.listeners.WbCloudFaceVerifyLoginListener;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.api.listeners.WbCloudFaceVerifyResultListener;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.api.result.WbFaceError;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.api.result.WbFaceVerifyResult;
|
||||
import com.tencent.cloud.huiyansdkface.facelight.process.FaceVerifyStatus;
|
||||
|
||||
public class RealName1Activity extends BaseMvpActivity<RealNamePresenter, ActivityRealNameBinding> implements RealNameConacts.View{
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mBinding.topBar.setTitle("实名认证");
|
||||
String fullText = "您知悉并同意应用提供者\n· 收集、使用您本人的身份信息和人脸图像\n· 向合法数据持有者核实您的身份信息\n· 本操作数据仅用于身份核实,安全可靠";
|
||||
SpannableString spannable = new SpannableString(fullText);
|
||||
|
||||
int firstLineEnd = fullText.indexOf('\n');
|
||||
if (firstLineEnd > 0) {
|
||||
// 设置第一行字体大小和颜色
|
||||
spannable.setSpan(
|
||||
new AbsoluteSizeSpan(16, true), // 18sp,基于 TextView 的 sp 值调整
|
||||
0,
|
||||
firstLineEnd,
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
|
||||
spannable.setSpan(
|
||||
new ForegroundColorSpan(Color.BLACK),
|
||||
0,
|
||||
firstLineEnd,
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
}
|
||||
|
||||
mBinding.tvAgreeTerms.setText(spannable);
|
||||
mBinding.btnSubmit.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_real_name;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RealNamePresenter bindPresenter() {
|
||||
return new RealNamePresenter(this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void realNameSuccess(RealNameBean msg) {
|
||||
Bundle data = new Bundle();
|
||||
WbCloudFaceVerifySdk.InputData inputData = new WbCloudFaceVerifySdk.InputData(
|
||||
msg.getFaceId(),
|
||||
msg.getOrderNo(),
|
||||
msg.getAppid(),
|
||||
msg.getApiVersion(),
|
||||
msg.getNonce(),
|
||||
msg.getUserid(),
|
||||
msg.getSign(),
|
||||
FaceVerifyStatus.Mode.GRADE,
|
||||
msg.getLicence());
|
||||
data.putSerializable(WbCloudFaceContant.INPUT_DATA, inputData);
|
||||
//设置是否打开语音提示,默认关闭,此处设置为关闭
|
||||
data.putBoolean(WbCloudFaceContant. PLAY_VOICE, true);
|
||||
|
||||
//避免用户快速点击导致二次登录,二次拉起刷脸等操作引起问题
|
||||
WbCloudFaceVerifySdk.getInstance().
|
||||
initAdvSdk(RealName1Activity.this, data, new WbCloudFaceVerifyLoginListener() {
|
||||
@Override
|
||||
public void onLoginSuccess () {
|
||||
//登录成功,拉起 sdk 页面,由 FaceVerifyResultListener 返回刷脸结果
|
||||
WbCloudFaceVerifySdk.getInstance().startWbFaceVerifySdk(RealName1Activity.this, new WbCloudFaceVerifyResultListener() {
|
||||
@Override
|
||||
public void onFinish(WbFaceVerifyResult result) {
|
||||
if (result != null) {
|
||||
if (result.isSuccess()) {
|
||||
Log.d("@@@", "刷脸成功!");
|
||||
SpUtil.setRealName(true);
|
||||
MvpPre.realNameResult(result.getOrderNo());
|
||||
|
||||
} else {
|
||||
Log.d("@@@", "刷脸失败!");
|
||||
}
|
||||
}
|
||||
//刷脸结束后,及时释放资源
|
||||
WbCloudFaceVerifySdk.getInstance().release();
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public void onLoginFailed (WbFaceError error){
|
||||
Log.d("@@@", "刷脸失败!");
|
||||
//刷脸结束后,及时释放资源
|
||||
WbCloudFaceVerifySdk.getInstance().release();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendCodeSuccess() {
|
||||
finish();
|
||||
}
|
||||
|
||||
private void onClick(View view) {
|
||||
if (view.getId()== R.id.btnSubmit){
|
||||
if (mBinding.edName.getText().toString().isEmpty()){
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("请输入姓名");
|
||||
return;
|
||||
}
|
||||
if (mBinding.edPassword.getText().toString().isEmpty()){
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("请输入身份证号");
|
||||
return;
|
||||
}
|
||||
if (RegexUtils.isIDCard18Exact(mBinding.edPassword.getText().toString())) {
|
||||
if (mBinding.btnSubmit.getText().toString().equals("下一步")) {
|
||||
mBinding.stepNum1.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.num_11));
|
||||
mBinding.stepNum2.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.num_2));
|
||||
// mBinding.l1.setVisibility(View.GONE);
|
||||
// mBinding.l2.setVisibility(View.VISIBLE);
|
||||
// mBinding.btnSubmit.setText("立即认证");
|
||||
MvpPre.realName(mBinding.edName.getText().toString(),mBinding.edPassword.getText().toString());
|
||||
} else {
|
||||
SpUtil.setRealName(true);
|
||||
finish();
|
||||
}
|
||||
}else {
|
||||
com.blankj.utilcode.util.ToastUtils.showShort("请输入正确的身份证号");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
package com.example.modulevocal.activity;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.style.AbsoluteSizeSpan;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
|
||||
import com.example.modulevocal.R;
|
||||
import com.example.modulevocal.databinding.ActivityRealNameBinding;
|
||||
import com.qxcm.moduleutil.activity.BaseAppCompatActivity;
|
||||
import com.qxcm.moduleutil.utils.SpUtil;
|
||||
|
||||
public class RealNameActivity extends BaseAppCompatActivity<ActivityRealNameBinding> {
|
||||
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.topBar.setTitle("实名认证");
|
||||
String fullText = "您知悉并同意应用提供者\n· 收集、使用您本人的身份信息和人脸图像\n· 向合法数据持有者核实您的身份信息\n· 本操作数据仅用于身份核实,安全可靠";
|
||||
SpannableString spannable = new SpannableString(fullText);
|
||||
|
||||
int firstLineEnd = fullText.indexOf('\n');
|
||||
if (firstLineEnd > 0) {
|
||||
// 设置第一行字体大小和颜色
|
||||
spannable.setSpan(
|
||||
new AbsoluteSizeSpan(16, true), // 18sp,基于 TextView 的 sp 值调整
|
||||
0,
|
||||
firstLineEnd,
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
|
||||
spannable.setSpan(
|
||||
new ForegroundColorSpan(Color.BLACK),
|
||||
0,
|
||||
firstLineEnd,
|
||||
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
}
|
||||
|
||||
mBinding.tvAgreeTerms.setText(spannable);
|
||||
mBinding.btnSubmit.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
private void onClick(View view) {
|
||||
if (view.getId()==R.id.btnSubmit){
|
||||
if (mBinding.btnSubmit.getText().toString().equals("下一步")){
|
||||
mBinding.stepNum1.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.num_11));
|
||||
mBinding.stepNum2.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.num_2));
|
||||
mBinding.l1.setVisibility(View.GONE);
|
||||
mBinding.l2.setVisibility(View.VISIBLE);
|
||||
mBinding.btnSubmit.setText("立即认证");
|
||||
}else {
|
||||
SpUtil.setRealName(true);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_real_name;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.example.modulevocal.activity;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowInsetsCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
|
||||
import com.example.modulevocal.R;
|
||||
import com.example.modulevocal.conacts.RevenueConacts;
|
||||
import com.example.modulevocal.databinding.ActivityRevenueBinding;
|
||||
import com.example.modulevocal.fragment.RevenueFragment;
|
||||
import com.example.modulevocal.fragment.mybag.MyBagFragment;
|
||||
import com.example.modulevocal.fragment.mybag.MyBagListFragment;
|
||||
import com.example.modulevocal.presenter.RevenuePresenter;
|
||||
import com.qxcm.moduleutil.activity.BaseMvpActivity;
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.bean.MyBagBean;
|
||||
import com.qxcm.moduleutil.bean.RevenueBean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/5/27
|
||||
*@description: 金币收支、钻石收支,根据传递的type不同,显示不同的数据,type=1:金币收支,type=2:钻石收支
|
||||
*/
|
||||
public class RevenueActivity extends BaseMvpActivity<RevenuePresenter, ActivityRevenueBinding> implements RevenueConacts.View{
|
||||
private List<MyBagBean> list;
|
||||
private int type;
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
type= Integer.parseInt(Objects.requireNonNull(getIntent().getStringExtra("type")));
|
||||
list=new ArrayList<>();
|
||||
if (type==1) {
|
||||
mBinding.topBar.setTitle("金币收支");
|
||||
list.add(new MyBagBean("金币收入", "1"));
|
||||
list.add(new MyBagBean("金币支出", "2"));
|
||||
}else {
|
||||
mBinding.topBar.setTitle("钻石收支");
|
||||
list.add(new MyBagBean("钻石收入", "1"));
|
||||
list.add(new MyBagBean("钻石支出", "2"));
|
||||
}
|
||||
|
||||
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), list));
|
||||
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
|
||||
mBinding.slidingTabLayout.setCurrentTab(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_revenue;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RevenuePresenter bindPresenter() {
|
||||
return new RevenuePresenter(this, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveRevenueData(List<RevenueBean> bean) {
|
||||
|
||||
}
|
||||
|
||||
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
|
||||
|
||||
private List<MyBagBean> list;
|
||||
|
||||
|
||||
public MyFragmentPagerAdapter(FragmentManager fm, List<MyBagBean> list) {
|
||||
super(fm);
|
||||
this.list = list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
MyBagBean model = list.get(position);
|
||||
if ("1".equals(model.getMyBagType())){
|
||||
return RevenueFragment.newInstance(model.getMyBagType(), "1");
|
||||
}else {
|
||||
return RevenueFragment.newInstance(model.getMyBagType(), "2");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return list.size();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
MyBagBean model = list.get(position);
|
||||
return model.getMyBagTitle();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBindin
|
||||
realNameDialog.show();
|
||||
realNameDialog.setOnDismissListener(dialog -> {
|
||||
dialog.dismiss();
|
||||
startActivity(new Intent(SettingActivity.this, RealNameActivity.class));
|
||||
startActivity(new Intent(SettingActivity.this, RealName1Activity.class));
|
||||
});
|
||||
}
|
||||
}else if (view.getId()==R.id.ll_qhch){
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.example.modulevocal.adapter;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.modulevocal.R;
|
||||
import com.qxcm.moduleutil.bean.RevenueBean;
|
||||
|
||||
public class RevenueAdapter extends BaseQuickAdapter<RevenueBean, BaseViewHolder> {
|
||||
public RevenueAdapter() {
|
||||
super(R.layout.item_revenue);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, RevenueBean item) {
|
||||
helper.setText(R.id.tv_name, item.getTitle());
|
||||
helper.setText(R.id.tv_time, item.getTime());
|
||||
helper.setText(R.id.tv_jb, item.getMoney());
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package com.example.modulevocal.adapter;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.modulevocal.R;
|
||||
import com.google.android.material.progressindicator.LinearProgressIndicator;
|
||||
import com.qxcm.moduleutil.bean.GiftBoxBean;
|
||||
import com.qxcm.moduleutil.utils.ImageUtils;
|
||||
|
||||
public class TaskBoxAdapter extends BaseQuickAdapter<GiftBoxBean.GiftBean, BaseViewHolder> {
|
||||
public TaskBoxAdapter() {
|
||||
super(R.layout.item_task_box);
|
||||
}
|
||||
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, GiftBoxBean.GiftBean item) {
|
||||
int position = helper.getLayoutPosition(); // 获取当前位置
|
||||
|
||||
View itemView = helper.itemView; // 获取整个 item 的根布局
|
||||
TextView giftName = helper.getView(R.id.tv_type_name);
|
||||
TextView giftTitle = helper.getView(R.id.tv_title);
|
||||
giftName.setText(item.getGiftName());
|
||||
giftTitle.setText(item.getGiftTitle());
|
||||
if (position == 0) {
|
||||
itemView.setBackgroundColor(mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_FCE4ED)); // 红色
|
||||
giftName.setTextColor(mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_E24171));
|
||||
setSpannableText(giftTitle, "最高可获得%d金币", Integer.parseInt(item.getGiftTitle()),com.qxcm.moduleutil.R.color.color_E24171);
|
||||
helper.setImageDrawable(R.id.task_box, mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.task_cj));
|
||||
|
||||
} else if (position == 1) {
|
||||
itemView.setBackgroundColor(mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_FDE8AE)); // 黄色
|
||||
giftName.setTextColor(mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_F35F07));
|
||||
setSpannableText(giftTitle, "最高可获得%d金币", Integer.parseInt(item.getGiftTitle()),com.qxcm.moduleutil.R.color.color_F35F07);
|
||||
helper.setImageDrawable(R.id.task_box, mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.task_gj));
|
||||
|
||||
} else {
|
||||
// 其他 item 恢复默认背景(可选)
|
||||
itemView.setBackground(null);
|
||||
}
|
||||
|
||||
helper.setText(R.id.tv_jb, "满"+item.getGetGiftTypeName()+"金币");
|
||||
LinearProgressIndicator progressIndicator= helper.getView(R.id.progress_indicator);
|
||||
progressIndicator.setProgress(Integer.parseInt(item.getGiftTypeNumber()));
|
||||
helper.setText(R.id.tv_jb_num, item.getGiftTypeNumber()+"%");
|
||||
if (position==0){
|
||||
progressIndicator.setIndicatorColor(mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_E24171));
|
||||
}else {
|
||||
progressIndicator.setIndicatorColor(mContext.getResources().getColor(com.qxcm.moduleutil.R.color.color_F35F07));
|
||||
|
||||
}
|
||||
|
||||
if (Integer.parseInt(item.getGiftTypeNumber())<100){
|
||||
helper.setImageDrawable(R.id.iv_unlock, mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.not_unlocked));
|
||||
helper.getView(R.id.iv_unlock).setSelected(false);
|
||||
}else {
|
||||
helper.setImageDrawable(R.id.iv_unlock, mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.unlocked));
|
||||
helper.getView(R.id.iv_unlock).setSelected(true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 设置带部分颜色的文本
|
||||
private void setSpannableText(TextView textView, String format, int number,int color) {
|
||||
String fullText = String.format(format, number);
|
||||
SpannableString spannableString = new SpannableString(fullText);
|
||||
|
||||
// 找到数字的位置
|
||||
String numberStr = String.valueOf(number);
|
||||
int startIndex = fullText.indexOf(numberStr);
|
||||
int endIndex = startIndex + numberStr.length();
|
||||
|
||||
if (startIndex >= 0) {
|
||||
// 设置数字为红色
|
||||
spannableString.setSpan(
|
||||
new ForegroundColorSpan(ContextCompat.getColor(mContext,color)), // 使用你定义的颜色
|
||||
startIndex,
|
||||
endIndex,
|
||||
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
|
||||
);
|
||||
}
|
||||
|
||||
textView.setText(spannableString);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.example.modulevocal.adapter;
|
||||
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.example.modulevocal.R;
|
||||
import com.qxcm.moduleutil.bean.GiftBoxBean;
|
||||
import com.qxcm.moduleutil.bean.TaskDataBean;
|
||||
|
||||
public class TaskDataAdapter extends BaseQuickAdapter<TaskDataBean, BaseViewHolder> {
|
||||
public TaskDataAdapter() {
|
||||
super(R.layout.item_task_data);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void convert(BaseViewHolder helper, TaskDataBean item) {
|
||||
TextView textView=helper.getView(R.id.task_type);
|
||||
if (item.getTaskType().equals("1")){
|
||||
textView.setBackground(mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.go_lock));
|
||||
}else if (item.getTaskType().equals("2")){
|
||||
textView.setBackground(mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.go_wc));
|
||||
} else if (item.getTaskType().equals("3")) {
|
||||
textView.setBackground(mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.go_sl));
|
||||
}else if (item.getTaskType().equals("4")) {
|
||||
textView.setBackground(mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.go_yq));
|
||||
}else if (item.getTaskType().equals("5")) {
|
||||
textView.setBackground(mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.go_cz));
|
||||
}else if (item.getTaskType().equals("6")) {
|
||||
textView.setBackground(mContext.getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.ylq));
|
||||
}
|
||||
|
||||
helper.setText(R.id.task_name, item.getTaskName())
|
||||
.setText(R.id.task_jb_number, item.getTaskReward());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.example.modulevocal.conacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.GiftBoxBean;
|
||||
import com.qxcm.moduleutil.bean.TaskDataBean;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class DailyTasksConacts {
|
||||
|
||||
public interface View extends IView<Activity> {
|
||||
void setGiftBox(GiftBoxBean giftBoxBean);
|
||||
|
||||
void tasksDataList(List<TaskDataBean> taskDataBeans);
|
||||
|
||||
}
|
||||
|
||||
public interface IMePre extends IPresenter {
|
||||
|
||||
void tasksLihen();
|
||||
|
||||
void tasksData();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.example.modulevocal.conacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.RealNameBean;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class RealNameConacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void realNameSuccess(RealNameBean msg);
|
||||
|
||||
void sendCodeSuccess();
|
||||
}
|
||||
|
||||
public interface IMePre extends IPresenter {
|
||||
void realName(String real_name, String card_number);
|
||||
|
||||
void realNameResult(String orderNo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.example.modulevocal.conacts;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.qxcm.moduleutil.activity.IPresenter;
|
||||
import com.qxcm.moduleutil.activity.IView;
|
||||
import com.qxcm.moduleutil.bean.RevenueBean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RevenueConacts {
|
||||
public interface View extends IView<Activity> {
|
||||
void saveRevenueData(List<RevenueBean> bean);
|
||||
}
|
||||
public interface IMePre extends IPresenter {
|
||||
|
||||
void getRevenueData();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.example.modulevocal.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.example.modulevocal.R;
|
||||
import com.example.modulevocal.adapter.RevenueAdapter;
|
||||
import com.example.modulevocal.conacts.RevenueConacts;
|
||||
import com.example.modulevocal.databinding.FragmentRevenueBinding;
|
||||
import com.example.modulevocal.fragment.mybag.MyBagFragment;
|
||||
import com.example.modulevocal.presenter.RevenuePresenter;
|
||||
import com.qxcm.moduleutil.base.BaseMvpFragment;
|
||||
import com.qxcm.moduleutil.bean.RevenueBean;
|
||||
import com.qxcm.moduleutil.dialog.DoubleDatePickerDialog;
|
||||
import com.qxcm.moduleutil.widget.DoubleTimePickerBottomSheet;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*@author qx
|
||||
*@data 2025/5/27
|
||||
*@description: 收支展示的页面,根据type展示收入和支出,根据revenueType展示钻石还是金币
|
||||
*/
|
||||
public class RevenueFragment extends BaseMvpFragment<RevenuePresenter, FragmentRevenueBinding> implements RevenueConacts.View{
|
||||
|
||||
private String type;
|
||||
private String revenueType;
|
||||
|
||||
private RevenueAdapter adapter;
|
||||
@Override
|
||||
protected RevenuePresenter bindPresenter() {
|
||||
return new RevenuePresenter(this,getActivity());
|
||||
}
|
||||
|
||||
public static RevenueFragment newInstance(String type, String revenueType) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString("type", type);
|
||||
args.putString("revenueType", revenueType);
|
||||
RevenueFragment fragment = new RevenueFragment();
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initArgs(Bundle arguments) {
|
||||
super.initArgs(arguments);
|
||||
type = arguments.getString("type");
|
||||
revenueType = arguments.getString("revenueType");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
mBinding.rl3.setOnClickListener(v -> {
|
||||
DoubleTimePickerBottomSheet dialog = new DoubleTimePickerBottomSheet();
|
||||
dialog.setOnTimeRangeSelectedListener((startDate, endDate) -> {
|
||||
// 处理选择的时间范围
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:mm", Locale.getDefault());
|
||||
Log.d("SelectedTime", "开始时间:" + sdf.format(startDate));
|
||||
mBinding.tv2.setText(sdf.format(startDate));
|
||||
Log.d("SelectedTime", "结束时间:" + sdf.format(endDate));
|
||||
mBinding.tv22.setText(sdf.format(endDate));
|
||||
MvpPre.getRevenueData();
|
||||
});
|
||||
dialog.show(getParentFragmentManager(), "DoubleTimePicker");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mBinding.revenueView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
adapter = new RevenueAdapter();
|
||||
mBinding.revenueView.setAdapter(adapter);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_revenue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveRevenueData(List<RevenueBean> bean) {
|
||||
adapter.setNewData(bean);
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import android.view.View;
|
||||
|
||||
import com.example.modulevocal.R;
|
||||
import com.example.modulevocal.activity.BlacklistActivity;
|
||||
import com.example.modulevocal.activity.DailyTasksActivity;
|
||||
import com.example.modulevocal.activity.EditUserInfoActivity;
|
||||
import com.example.modulevocal.activity.MyBagActivity;
|
||||
import com.example.modulevocal.activity.MyMoneyActivity;
|
||||
@@ -144,7 +145,7 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
mBinding.tvHome.setOnClickListener(this::onClick);
|
||||
mBinding.meDressUp.setOnClickListener(this::onClick);
|
||||
mBinding.tvMyWallet.setOnClickListener(this::onClick);
|
||||
|
||||
mBinding.meDaily.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
|
||||
@@ -240,8 +241,9 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
|
||||
}
|
||||
else if (id == R.id.tv_my_bb) {
|
||||
//我的背包
|
||||
// ARouter.getInstance().build(ARouteConstants.ME_KNAPSACK).withString("from", "我的界面").navigation();
|
||||
startActivity(new Intent(getContext(), MyBagActivity.class));
|
||||
} else if (id==R.id.me_daily) {//每日任务
|
||||
startActivity(new Intent(getContext(), DailyTasksActivity.class));
|
||||
}
|
||||
// else if (id == R.id.me_my_custom) {
|
||||
//
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.example.modulevocal.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.modulevocal.conacts.DailyTasksConacts;
|
||||
import com.qxcm.moduleutil.bean.GiftBoxBean;
|
||||
import com.qxcm.moduleutil.bean.TaskDataBean;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DailyTasksPresenter extends BasePresenter<DailyTasksConacts.View> implements DailyTasksConacts.IMePre{
|
||||
public DailyTasksPresenter(DailyTasksConacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
//获取礼盒列表
|
||||
@Override
|
||||
public void tasksLihen() {
|
||||
GiftBoxBean giftBoxBean = new GiftBoxBean();
|
||||
giftBoxBean.setNewDataJinbi("100");
|
||||
List<GiftBoxBean.GiftBean> giftList = new ArrayList<>();
|
||||
GiftBoxBean.GiftBean giftBean = new GiftBoxBean.GiftBean();
|
||||
giftBean.setGiftName("初级礼盒");
|
||||
giftBean.setGiftTitle("1000");
|
||||
giftBean.setGetGiftTypeName("200");
|
||||
giftBean.setGiftTypeNumber("50");
|
||||
giftList.add(giftBean);
|
||||
|
||||
GiftBoxBean.GiftBean giftBean2 = new GiftBoxBean.GiftBean();
|
||||
giftBean2.setGiftName("高级礼盒");
|
||||
giftBean2.setGiftTitle("61112");
|
||||
giftBean2.setGetGiftTypeName("500");
|
||||
giftBean2.setGiftTypeNumber("40");
|
||||
giftList.add(giftBean2);
|
||||
|
||||
giftBoxBean.setGiftList(giftList);
|
||||
|
||||
MvpRef.get().setGiftBox(giftBoxBean);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tasksData() {
|
||||
|
||||
List<TaskDataBean> taskDataBeans = new ArrayList<>();
|
||||
for (int i = 0; i < 6; i++){
|
||||
TaskDataBean taskDataBean = new TaskDataBean();
|
||||
taskDataBean.setTaskName("任务"+i);
|
||||
taskDataBean.setTaskNumber("1"+i);
|
||||
taskDataBean.setTaskReward("10"+10);
|
||||
taskDataBean.setTaskType(""+i+1);
|
||||
taskDataBean.setTaskPictureUrl("");
|
||||
taskDataBeans.add(taskDataBean);
|
||||
}
|
||||
MvpRef.get().tasksDataList(taskDataBeans);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.example.modulevocal.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.blankj.utilcode.util.ToastUtils;
|
||||
import com.example.modulevocal.conacts.RealNameConacts;
|
||||
import com.qxcm.moduleutil.base.CommonAppContext;
|
||||
import com.qxcm.moduleutil.bean.RealNameBean;
|
||||
import com.qxcm.moduleutil.http.ApiServer;
|
||||
import com.qxcm.moduleutil.http.BaseModel;
|
||||
import com.qxcm.moduleutil.http.BaseObserver;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class RealNamePresenter extends BasePresenter<RealNameConacts.View> implements RealNameConacts.IMePre{
|
||||
|
||||
public RealNamePresenter(RealNameConacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void realName(String real_name, String card_number) {
|
||||
api.realName(real_name, card_number, new BaseObserver<RealNameBean>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
addDisposable(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(RealNameBean realNameBean) {
|
||||
MvpRef.get().realNameSuccess(realNameBean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void realNameResult(String orderNo) {
|
||||
Retrofit retrofit = new Retrofit.Builder().baseUrl(CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl())
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build();
|
||||
|
||||
Call<BaseModel<String>> call=retrofit.create(ApiServer.class).getRealNameResult(orderNo);
|
||||
call.enqueue(new Callback<BaseModel<String>>() {
|
||||
@Override
|
||||
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
|
||||
if (response.code()==200){
|
||||
BaseModel<String> string=response.body();
|
||||
if (string!=null){
|
||||
int code=string.getCode();
|
||||
if (code==1){
|
||||
MvpRef.get().sendCodeSuccess();
|
||||
}else {
|
||||
ToastUtils.showShort(string.getMsg());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
|
||||
ToastUtils.showShort("上传失败");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.example.modulevocal.presenter;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.example.modulevocal.conacts.RevenueConacts;
|
||||
import com.qxcm.moduleutil.bean.RevenueBean;
|
||||
import com.qxcm.moduleutil.presenter.BasePresenter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class RevenuePresenter extends BasePresenter<RevenueConacts.View> implements RevenueConacts.IMePre {
|
||||
public RevenuePresenter(RevenueConacts.View view, Context context) {
|
||||
super(view, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getRevenueData() {
|
||||
List<RevenueBean> list = new ArrayList<>();
|
||||
for (int i = 0; i < 3; i++){
|
||||
RevenueBean revenueBean = new RevenueBean();
|
||||
revenueBean.setTitle("每日签到");
|
||||
revenueBean.setTime("2025-5-27 18:29:25");
|
||||
revenueBean.setMoney("+10"+i);
|
||||
list.add(revenueBean);
|
||||
}
|
||||
MvpRef.get().saveRevenueData(list);
|
||||
}
|
||||
}
|
||||
96
modulevocal/src/main/res/layout/activity_daily_tasks.xml
Normal file
96
modulevocal/src/main/res/layout/activity_daily_tasks.xml
Normal file
@@ -0,0 +1,96 @@
|
||||
<?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.DailyTasksActivity">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/color_F8E3C8">
|
||||
|
||||
<com.qxcm.moduleutil.widget.CustomTopBar
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rl_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_9"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:background="@mipmap/task_t"
|
||||
app:layout_constraintTop_toBottomOf="@id/top_bar">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginStart="@dimen/dp_25"
|
||||
android:layout_marginTop="@dimen/dp_23"
|
||||
android:textColor="@color/white"
|
||||
tools:text="今日累计获取金币:20" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_task"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_231"
|
||||
android:layout_below="@+id/tv_title"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:background="@drawable/bg_r16_fff"
|
||||
android:padding="@dimen/dp_16" />
|
||||
</RelativeLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@mipmap/task_gz"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/rl_top" />
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/rl_top">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:background="@drawable/bg_r16_fff"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:text="今日任务"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="@dimen/sp_16" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_task_today"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_16" />
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
@@ -140,13 +140,12 @@
|
||||
<TextView
|
||||
android:layout_width="@dimen/dp_56"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:text="@string/recharge_record"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginStart="14dp"
|
||||
android:text="@string/coin_to_diamond"
|
||||
android:textColor="@color/color_FF333333"
|
||||
/>
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
android:layout_gravity="right|center"
|
||||
android:layout_weight="1"
|
||||
android:gravity="right"
|
||||
tools:text="身份证" />
|
||||
android:text="身份证" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -114,7 +114,8 @@
|
||||
android:id="@+id/ll_1"
|
||||
style="@style/My_Info_Item_LL_Style"
|
||||
android:layout_marginTop="@dimen/dp_9"
|
||||
android:background="@drawable/bg_r15_white">
|
||||
android:background="@drawable/bg_r15_white"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/My_Info_Item_Title_Style"
|
||||
@@ -142,7 +143,8 @@
|
||||
android:id="@+id/ll_2"
|
||||
style="@style/My_Info_Item_LL_Style"
|
||||
android:layout_marginTop="@dimen/dp_9"
|
||||
android:background="@drawable/bg_r15_white">
|
||||
android:background="@drawable/bg_r15_white"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/My_Info_Item_Title_Style"
|
||||
|
||||
56
modulevocal/src/main/res/layout/activity_revenue.xml
Normal file
56
modulevocal/src/main/res/layout/activity_revenue.xml
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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.RevenueActivity">
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
||||
|
||||
<com.qxcm.moduleutil.widget.CustomTopBar
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
/>
|
||||
|
||||
<com.example.moduletablayout.CustomSlidingTabLayout
|
||||
android:id="@+id/sliding_tab_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@+id/top_bar"
|
||||
android:layout_marginLeft="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:layout_marginRight="@dimen/dp_16"
|
||||
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_indicator_width="@dimen/dp_28"
|
||||
app:tl_showCateIndicator="false"
|
||||
app:tl_tab_width="@dimen/dp_70"
|
||||
app:tl_textBold="SELECT"
|
||||
app:tl_textSelectColor="@color/color_2B2823"
|
||||
app:tl_textSelectedSize="@dimen/sp_16"
|
||||
app:tl_textUnselectColor="@color/color_FF999999"
|
||||
app:tl_textsize="@dimen/sp_14" />
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
app:layout_constraintTop_toBottomOf="@+id/sliding_tab_layout"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
||||
79
modulevocal/src/main/res/layout/fragment_revenue.xml
Normal file
79
modulevocal/src/main/res/layout/fragment_revenue.xml
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context=".fragment.RevenueFragment">
|
||||
|
||||
|
||||
<data>
|
||||
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<LinearLayout
|
||||
android:id="@+id/rl3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_38"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:background="@drawable/bg_r5_e9e9"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:text="开始日期"
|
||||
android:textColor="@color/color_FF999999"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="0.2"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
|
||||
android:paddingTop="@dimen/dp_3"
|
||||
android:src="@mipmap/data1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv22"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:text="结束日期"
|
||||
android:textColor="@color/color_FF999999"
|
||||
android:textSize="12sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="0.2"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:paddingTop="@dimen/dp_2"
|
||||
android:src="@mipmap/data2" />
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/revenue_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:background="@color/color_FFF5F5F5"
|
||||
android:orientation="vertical"
|
||||
tools:listitem="@layout/item_revenue" />
|
||||
</LinearLayout>
|
||||
|
||||
</layout>
|
||||
@@ -10,6 +10,7 @@
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
android:layout_marginTop="@dimen/dp_64">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
@@ -60,6 +61,7 @@
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/bg_r16_f6f6f6"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:layout_marginStart="@dimen/dp_14"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||
|
||||
64
modulevocal/src/main/res/layout/item_revenue.xml
Normal file
64
modulevocal/src/main/res/layout/item_revenue.xml
Normal file
@@ -0,0 +1,64 @@
|
||||
<?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="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_20"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:textColor="@color/color_FF333333"
|
||||
tools:text="每日签到"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/tv_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_17"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_name"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:textSize="@dimen/sp_12"
|
||||
android:textColor="@color/color_FF999999"
|
||||
tools:text="2025-5-27 16:43:09"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_jb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_24"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/im_ty"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:textColor="@color/color_ff2727"
|
||||
tools:text="+10"
|
||||
/>
|
||||
<ImageView
|
||||
android:id="@+id/im_ty"
|
||||
android:layout_width="@dimen/dp_16"
|
||||
android:layout_height="@dimen/dp_16"
|
||||
android:src="@mipmap/jinb"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
tools:ignore="ContentDescription"
|
||||
/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_time"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_12"
|
||||
android:background="#F1F2F3"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
100
modulevocal/src/main/res/layout/item_task_box.xml
Normal file
100
modulevocal/src/main/res/layout/item_task_box.xml
Normal file
@@ -0,0 +1,100 @@
|
||||
<?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"
|
||||
android:id="@+id/item"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:custom="http://schemas.android.com/tools">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_type_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_24"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:text="初级礼盒"
|
||||
android:textColor="@color/color_E24171"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:textSize="@dimen/sp_16"
|
||||
android:gravity="center"/>
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_type_name"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:text="最高可获得?金币"
|
||||
android:textColor="@color/color_FF999999"
|
||||
android:textSize="@dimen/sp_12"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/task_box"
|
||||
android:layout_width="@dimen/dp_59"
|
||||
android:layout_height="@dimen/dp_51"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_4"
|
||||
android:src="@mipmap/task_cj" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_jb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_18"
|
||||
app:layout_constraintTop_toBottomOf="@id/task_box"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:text="满?金币"
|
||||
android:textColor="@color/color_FF999999"
|
||||
android:textSize="@dimen/sp_12"
|
||||
/>
|
||||
|
||||
<!-- 使用 Material Design 进度条 -->
|
||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
|
||||
android:id="@+id/progress_indicator"
|
||||
android:layout_width="@dimen/dp_42"
|
||||
android:layout_height="@dimen/dp_12"
|
||||
android:max="100"
|
||||
android:progress="50"
|
||||
style="@style/RoundedProgressBar"
|
||||
app:indicatorColor="@color/color_E24171"
|
||||
app:trackColor="@color/color_FFB8CD"
|
||||
app:trackThickness="12dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_jb"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintWidth_percent="0.8"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"/>
|
||||
<TextView
|
||||
android:id="@+id/tv_jb_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_15"
|
||||
app:layout_constraintTop_toTopOf="@+id/progress_indicator"
|
||||
app:layout_constraintStart_toEndOf="@+id/progress_indicator"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/progress_indicator"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="50%"
|
||||
android:textColor="@color/color_E24171"
|
||||
android:textSize="@dimen/sp_10"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_unlock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_4"
|
||||
android:layout_marginStart="@dimen/dp_4"
|
||||
android:src="@mipmap/not_unlocked"
|
||||
app:layout_constraintTop_toBottomOf="@id/progress_indicator"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
63
modulevocal/src/main/res/layout/item_task_data.xml
Normal file
63
modulevocal/src/main/res/layout/item_task_data.xml
Normal file
@@ -0,0 +1,63 @@
|
||||
<?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="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"
|
||||
android:layout_marginTop="@dimen/dp_16"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/task_pic"
|
||||
android:layout_width="@dimen/dp_40"
|
||||
android:layout_height="@dimen/dp_40"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:src="@mipmap/task_lock" />
|
||||
<TextView
|
||||
android:id="@+id/task_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:layout_toEndOf="@id/task_pic"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="任务名称"
|
||||
android:textColor="@color/color_FF333333"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/task_jb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:layout_below="@id/task_name"
|
||||
android:layout_toEndOf="@id/task_pic"
|
||||
android:layout_marginStart="@dimen/dp_2"
|
||||
android:text="金币"
|
||||
android:textColor="@color/color_FF999999"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
<TextView
|
||||
android:id="@+id/task_jb_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_21"
|
||||
android:layout_below="@id/task_name"
|
||||
android:layout_toEndOf="@id/task_jb"
|
||||
android:text="+10"
|
||||
android:textColor="@color/color_ff2727"
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/task_type"
|
||||
android:layout_width="@dimen/dp_60"
|
||||
android:layout_height="@dimen/dp_30"
|
||||
android:background="@mipmap/go_lock"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -42,8 +42,8 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="@dimen/dp_22"
|
||||
android:layout_height="@dimen/dp_15"
|
||||
android:background="@mipmap/text_bj"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="3dp"
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
</resources>
|
||||
8
modulevocal/src/main/res/values/styles.xml
Normal file
8
modulevocal/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<style name="RoundedProgressBar" parent="Widget.Material3.LinearProgressIndicator">
|
||||
<item name="trackCornerRadius">50dp</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
Reference in New Issue
Block a user