version:4.2

fix:
update:优化联系人列表
This commit is contained in:
2022-10-12 11:52:01 +08:00
parent 1970a27246
commit dc0de4faf8
15 changed files with 256 additions and 49 deletions

View File

@@ -16,8 +16,8 @@ android {
applicationId "com.uiui.aios" applicationId "com.uiui.aios"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 29 targetSdkVersion 29
versionCode 32 versionCode 33
versionName "4.1" versionName "4.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -186,7 +186,7 @@ dependencies {
//高德地图定位 //高德地图定位
implementation 'com.amap.api:location:5.1.0' implementation 'com.amap.api:location:5.1.0'
//MMKV //MMKV
implementation 'com.tencent:mmkv-static:1.2.12' implementation 'com.tencent:mmkv-static:1.2.14'
implementation 'com.tencent.tpns:tpns:1.3.6.1-release' implementation 'com.tencent.tpns:tpns:1.3.6.1-release'
//状态栏透明 //状态栏透明
implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' implementation 'com.gitee.zackratos:UltimateBarX:0.8.0'

View File

@@ -1,5 +1,12 @@
package com.uiui.aios.activity.contact; package com.uiui.aios.activity.contact;
import android.content.res.Configuration;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.uiui.aios.R; import com.uiui.aios.R;
@@ -11,10 +18,25 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick;
public class ContactActivity extends BaseActivity implements ContactContact.ContactView { public class ContactActivity extends BaseActivity implements ContactContact.ContactView {
@BindView(R.id.rv_contact) @BindView(R.id.rv_contact)
RecyclerView rv_contact; RecyclerView rv_contact;
@BindView(R.id.tv_people)
TextView tv_people;
@BindView(R.id.iv_back)
ImageView iv_back;
@OnClick({R.id.iv_back})
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_back:
finish();
break;
default:
}
}
private ContactPresenter mContactPresenter; private ContactPresenter mContactPresenter;
private ContactAdapter mContactAdapter; private ContactAdapter mContactAdapter;
@@ -31,6 +53,11 @@ public class ContactActivity extends BaseActivity implements ContactContact.Cont
mContactPresenter.attachView(this); mContactPresenter.attachView(this);
mContactPresenter.setLifecycle(lifecycleSubject); mContactPresenter.setLifecycle(lifecycleSubject);
mContactAdapter = new ContactAdapter(); mContactAdapter = new ContactAdapter();
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
rv_contact.setLayoutManager(new GridLayoutManager(this, 3));
} else {
rv_contact.setLayoutManager(new GridLayoutManager(this, 2));
}
rv_contact.setAdapter(mContactAdapter); rv_contact.setAdapter(mContactAdapter);
} }
@@ -41,6 +68,10 @@ public class ContactActivity extends BaseActivity implements ContactContact.Cont
@Override @Override
public void setContact(List<Contact> contactList) { public void setContact(List<Contact> contactList) {
if (contactList != null) {
mContactAdapter.setContactList(contactList); mContactAdapter.setContactList(contactList);
tv_people.setText(contactList.size() + "");
}
} }
} }

View File

@@ -10,6 +10,7 @@ import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent; import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiui.aios.BuildConfig; import com.uiui.aios.BuildConfig;
import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.BaseResponse;
import com.uiui.aios.bean.EmergencyContact;
import com.uiui.aios.bean.NetDesktopIcon; import com.uiui.aios.bean.NetDesktopIcon;
import com.uiui.aios.bean.Contact; import com.uiui.aios.bean.Contact;
import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.network.NetInterfaceManager;
@@ -59,7 +60,7 @@ public class MainPresenter implements MainContact.Presenter {
NetInterfaceManager.getInstance().getSystemSettings(true, getLifecycle(), new NetInterfaceManager.SosNumberCallback() { NetInterfaceManager.getInstance().getSystemSettings(true, getLifecycle(), new NetInterfaceManager.SosNumberCallback() {
@Override @Override
public void setSosNumber(List<Contact> setting_sos) { public void setSosNumber(List<EmergencyContact> setting_sos) {
Intent intent = new Intent("setting_sos"); Intent intent = new Intent("setting_sos");
mContext.sendBroadcast(intent); mContext.sendBroadcast(intent);
} }

View File

@@ -8,9 +8,11 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.shehuan.niv.NiceImageView;
import com.uiui.aios.R; import com.uiui.aios.R;
import com.uiui.aios.bean.Contact; import com.uiui.aios.bean.Contact;
@@ -35,9 +37,23 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactH
@Override @Override
public void onBindViewHolder(@NonNull ContactHolder contactHolder, int position) { public void onBindViewHolder(@NonNull ContactHolder contactHolder, int position) {
Contact contact = mContactList.get(position); Contact contact = mContactList.get(position);
Glide.with(contactHolder.iv_head).load(contact.getAvatar()).into(contactHolder.iv_head); Glide.with(contactHolder.iv_head).load(contact.getAvatar()).error(R.drawable.default_head).into(contactHolder.iv_head);
contactHolder.tv_name.setText(contact.getName()); contactHolder.tv_name.setText(contact.getName());
contactHolder.tv_phone.setText(contact.getMobile()); contactHolder.tv_phone.setText(contact.getMobile());
int index = position % 3;
switch (index) {
case 0:
contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_rain));
break;
case 1:
contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_sun));
break;
case 2:
contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_sunny));
break;
default:
contactHolder.root.setBackground(mContext.getDrawable(R.drawable.background_weather_rain));
}
} }
@Override @Override
@@ -46,12 +62,14 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactH
} }
static class ContactHolder extends RecyclerView.ViewHolder { static class ContactHolder extends RecyclerView.ViewHolder {
ImageView iv_head; ConstraintLayout root;
NiceImageView iv_head;
TextView tv_name; TextView tv_name;
TextView tv_phone; TextView tv_phone;
public ContactHolder(@NonNull View itemView) { public ContactHolder(@NonNull View itemView) {
super(itemView); super(itemView);
root = itemView.findViewById(R.id.root);
iv_head = itemView.findViewById(R.id.iv_head); iv_head = itemView.findViewById(R.id.iv_head);
tv_name = itemView.findViewById(R.id.tv_name); tv_name = itemView.findViewById(R.id.tv_name);
tv_phone = itemView.findViewById(R.id.tv_phone); tv_phone = itemView.findViewById(R.id.tv_phone);

View File

@@ -0,0 +1,53 @@
package com.uiui.aios.bean;
import java.io.Serializable;
public class EmergencyContact implements Serializable {
private static final long serialVersionUID = 3368451934517980000L;
String avatar;
String name;
String mobile;
int is_urgent;
boolean show;
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public int getIs_urgent() {
return is_urgent;
}
public void setIs_urgent(int is_urgent) {
this.is_urgent = is_urgent;
}
public boolean isShow() {
return show;
}
public void setShow(boolean show) {
this.show = show;
}
}

View File

@@ -37,7 +37,7 @@ public class SystemSettings implements Serializable {
int qch_restore; int qch_restore;
int setting_browserInput; int setting_browserInput;
int dev_mode; int dev_mode;
List<Contact> setting_sos; List<EmergencyContact> setting_sos;
String setting_volume; String setting_volume;
String setting_luminance; String setting_luminance;
String setting_typeface; String setting_typeface;
@@ -262,11 +262,11 @@ public class SystemSettings implements Serializable {
this.setting_hotspot = setting_hotspot; this.setting_hotspot = setting_hotspot;
} }
public List<Contact> getSetting_sos() { public List<EmergencyContact> getSetting_sos() {
return setting_sos; return setting_sos;
} }
public void setSetting_sos(List<Contact> setting_sos) { public void setSetting_sos(List<EmergencyContact> setting_sos) {
this.setting_sos = setting_sos; this.setting_sos = setting_sos;
} }

View File

@@ -13,12 +13,6 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.BatteryManager; import android.os.BatteryManager;
import android.os.Bundle; import android.os.Bundle;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Handler; import android.os.Handler;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -28,6 +22,11 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener; import com.amap.api.location.AMapLocationListener;
import com.blankj.utilcode.util.NetworkUtils; import com.blankj.utilcode.util.NetworkUtils;
@@ -39,28 +38,28 @@ import com.qweather.sdk.bean.base.Unit;
import com.qweather.sdk.bean.weather.WeatherHourlyBean; import com.qweather.sdk.bean.weather.WeatherHourlyBean;
import com.qweather.sdk.bean.weather.WeatherNowBean; import com.qweather.sdk.bean.weather.WeatherNowBean;
import com.qweather.sdk.view.QWeather; import com.qweather.sdk.view.QWeather;
import com.shehuan.niv.NiceImageView;
import com.tencent.mmkv.MMKV; import com.tencent.mmkv.MMKV;
import com.uiui.aios.BuildConfig; import com.uiui.aios.BuildConfig;
import com.uiui.aios.R; import com.uiui.aios.R;
import com.uiui.aios.activity.code.HealthCodeActivity;
import com.uiui.aios.activity.EmergencyActivity; import com.uiui.aios.activity.EmergencyActivity;
import com.uiui.aios.activity.alarm.AlarmClockActivity; import com.uiui.aios.activity.alarm.AlarmClockActivity;
import com.uiui.aios.activity.code.HealthCodeActivity;
import com.uiui.aios.activity.contact.ContactActivity; import com.uiui.aios.activity.contact.ContactActivity;
import com.uiui.aios.activity.weather.WeatherActivity; import com.uiui.aios.activity.weather.WeatherActivity;
import com.uiui.aios.adapter.NotificationAdapter; import com.uiui.aios.adapter.NotificationAdapter;
import com.uiui.aios.adapter.SOSNnmberAdapter; import com.uiui.aios.adapter.SOSNnmberAdapter;
import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.bean.AlarmItem; import com.uiui.aios.bean.AlarmItem;
import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.BaseResponse;
import com.uiui.aios.bean.HealthCode;
import com.uiui.aios.bean.Contact; import com.uiui.aios.bean.Contact;
import com.uiui.aios.bean.EmergencyContact;
import com.uiui.aios.bean.HealthCode;
import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.SnInfo;
import com.uiui.aios.bean.UserAvatarInfo; import com.uiui.aios.bean.UserAvatarInfo;
import com.uiui.aios.dialog.SingleDialog; import com.uiui.aios.dialog.SingleDialog;
import com.uiui.aios.disklrucache.CacheHelper; import com.uiui.aios.disklrucache.CacheHelper;
import com.uiui.aios.manager.AmapManager; import com.uiui.aios.manager.AmapManager;
import com.uiui.aios.alarm.AlarmUtils;
import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.network.NetInterfaceManager;
import com.uiui.aios.network.URLAddress; import com.uiui.aios.network.URLAddress;
import com.uiui.aios.tpush.MessageReceiver; import com.uiui.aios.tpush.MessageReceiver;
@@ -136,7 +135,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
@BindView(R.id.iv_note_nodata) @BindView(R.id.iv_note_nodata)
ImageView iv_note_nodata; ImageView iv_note_nodata;
@BindView(R.id.iv_head) @BindView(R.id.iv_head)
NiceImageView iv_head; ImageView iv_head;
@BindView(R.id.tv_name) @BindView(R.id.tv_name)
TextView tv_name; TextView tv_name;
@@ -398,7 +397,20 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
cl_shared_space.setOnClickListener(new View.OnClickListener() { cl_shared_space.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
ToastUtil.show("此功能暂未上线"); SingleDialog dialog = new SingleDialog(mContext);
dialog.setTitle("温馨提示")
.setMessage("此功能暂未上线")
.setPositive("确定")
// .setNegtive("拒绝")
// .setSingle(true)
.setOnClickBottomListener(new SingleDialog.OnClickBottomListener() {
@Override
public void onPositiveClick() {
dialog.dismiss();
}
});
dialog.show();
} }
}); });
cl_health.setOnClickListener(new View.OnClickListener() { cl_health.setOnClickListener(new View.OnClickListener() {
@@ -425,7 +437,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
private void checkSosNumber() { private void checkSosNumber() {
NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() { NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() {
@Override @Override
public void setSosNumber(List<Contact> setting_sos) { public void setSosNumber(List<EmergencyContact> setting_sos) {
Intent intent = new Intent(mContext, EmergencyActivity.class); Intent intent = new Intent(mContext, EmergencyActivity.class);
// intent.putExtra("setting_sos", phone); // intent.putExtra("setting_sos", phone);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

View File

@@ -15,11 +15,12 @@ import com.uiui.aios.bean.ActivityBean;
import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.bean.ArticleInfo; import com.uiui.aios.bean.ArticleInfo;
import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.BaseResponse;
import com.uiui.aios.bean.Contact;
import com.uiui.aios.bean.DemandBean; import com.uiui.aios.bean.DemandBean;
import com.uiui.aios.bean.EmergencyContact;
import com.uiui.aios.bean.GoodsInfo; import com.uiui.aios.bean.GoodsInfo;
import com.uiui.aios.bean.HealthCode; import com.uiui.aios.bean.HealthCode;
import com.uiui.aios.bean.NetDesktopIcon; import com.uiui.aios.bean.NetDesktopIcon;
import com.uiui.aios.bean.Contact;
import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.SnInfo;
import com.uiui.aios.bean.SystemSettings; import com.uiui.aios.bean.SystemSettings;
import com.uiui.aios.bean.UserAvatarInfo; import com.uiui.aios.bean.UserAvatarInfo;
@@ -54,6 +55,7 @@ import java.lang.reflect.Type;
import java.util.List; import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.annotations.NonNull;
@@ -795,7 +797,7 @@ public class NetInterfaceManager {
} }
public interface SosNumberCallback { public interface SosNumberCallback {
void setSosNumber(List<Contact> setting_sos); void setSosNumber(List<EmergencyContact> setting_sos);
void setEmpty(); void setEmpty();
@@ -816,9 +818,9 @@ public class NetInterfaceManager {
getSystemSettings(lifecycle, callback); getSystemSettings(lifecycle, callback);
} else { } else {
Gson gson = new Gson(); Gson gson = new Gson();
Type type = new TypeToken<List<Contact>>() { Type type = new TypeToken<List<EmergencyContact>>() {
}.getType(); }.getType();
List<Contact> setting_sos = gson.fromJson(jsonString, type); List<EmergencyContact> setting_sos = gson.fromJson(jsonString, type);
if (setting_sos == null || setting_sos.size() == 0) { if (setting_sos == null || setting_sos.size() == 0) {
if (callback != null) callback.setEmpty(); if (callback != null) callback.setEmpty();
} else { } else {
@@ -860,12 +862,13 @@ public class NetInterfaceManager {
mMMKV.encode("is_health", systemSettings.getIs_health()); mMMKV.encode("is_health", systemSettings.getIs_health());
mMMKV.encode("is_shopping", systemSettings.getIs_shopping()); mMMKV.encode("is_shopping", systemSettings.getIs_shopping());
mMMKV.encode("is_info", systemSettings.getIs_info()); mMMKV.encode("is_info", systemSettings.getIs_info());
List<Contact> setting_sos = systemSettings.getSetting_sos(); List<EmergencyContact> setting_sos = systemSettings.getSetting_sos();
if (setting_sos == null || setting_sos.size() == 0) { if (setting_sos == null || setting_sos.size() == 0) {
mCacheHelper.put(URLAddress.GET_SETTINGS, ""); mCacheHelper.put(URLAddress.GET_SETTINGS, "");
if (callback != null) callback.setEmpty(); if (callback != null) callback.setEmpty();
} else { } else {
mCacheHelper.put(URLAddress.GET_SETTINGS, GsonUtils.toJsonString(setting_sos)); List<EmergencyContact> contactList = setting_sos.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList());
mCacheHelper.put(URLAddress.GET_SETTINGS, GsonUtils.toJsonString(contactList));
if (callback != null) callback.setSosNumber(setting_sos); if (callback != null) callback.setSosNumber(setting_sos);
} }
} else { } else {
@@ -883,9 +886,9 @@ public class NetInterfaceManager {
if (callback != null) callback.setEmpty(); if (callback != null) callback.setEmpty();
} else { } else {
Gson gson = new Gson(); Gson gson = new Gson();
Type type = new TypeToken<List<Contact>>() { Type type = new TypeToken<List<EmergencyContact>>() {
}.getType(); }.getType();
List<Contact> setting_sos = gson.fromJson(jsonString, type); List<EmergencyContact> setting_sos = gson.fromJson(jsonString, type);
if (setting_sos == null || setting_sos.size() == 0) { if (setting_sos == null || setting_sos.size() == 0) {
if (callback != null) callback.setEmpty(); if (callback != null) callback.setEmpty();
} else { } else {

View File

@@ -32,10 +32,22 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="通讯录" android:text="通讯录"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="24sp" android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_back" app:layout_constraintStart_toEndOf="@+id/iv_back"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_people"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_16"
android:text="0人"
android:textColor="@color/white"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View File

@@ -103,14 +103,13 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.shehuan.niv.NiceImageView <ImageView
android:id="@+id/iv_head" android:id="@+id/iv_head"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="100dp" android:layout_height="100dp"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/gallery_icon" android:src="@drawable/gallery_icon"
app:is_circle="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View File

@@ -2,22 +2,28 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout5" android:id="@+id/root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_200" android:layout_height="@dimen/dp_100"
android:layout_margin="@dimen/dp_4"
android:background="@drawable/background_weather_rain"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<ImageView <com.shehuan.niv.NiceImageView
android:id="@+id/iv_head" android:id="@+id/iv_head"
android:layout_width="@dimen/dp_64" android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_64" android:layout_height="@dimen/dp_40"
android:layout_marginStart="@dimen/dp_32" android:layout_marginStart="@dimen/dp_8"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_head"
app:is_circle="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -27,12 +33,12 @@
android:id="@+id/tv_name" android:id="@+id/tv_name"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_36" android:layout_marginStart="@dimen/dp_4"
android:maxLines="1" android:maxLines="1"
android:singleLine="true" android:singleLine="true"
android:text="姓名" android:text="姓名"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_20" android:textSize="@dimen/sp_15"
app:layout_constraintStart_toEndOf="@+id/iv_head" app:layout_constraintStart_toEndOf="@+id/iv_head"
app:layout_constraintTop_toTopOf="@+id/iv_head" /> app:layout_constraintTop_toTopOf="@+id/iv_head" />
@@ -40,12 +46,12 @@
android:id="@+id/tv_phone" android:id="@+id/tv_phone"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_36" android:layout_marginStart="@dimen/dp_4"
android:maxLines="1" android:maxLines="1"
android:singleLine="true" android:singleLine="true"
android:text="phone" android:text="phone"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_20" android:textSize="@dimen/sp_15"
app:layout_constraintBottom_toBottomOf="@+id/iv_head" app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintStart_toEndOf="@+id/iv_head" /> app:layout_constraintStart_toEndOf="@+id/iv_head" />

View File

@@ -32,10 +32,23 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:text="通讯录" android:text="通讯录"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="24sp" android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_back" app:layout_constraintStart_toEndOf="@+id/iv_back"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_people"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_16"
android:text="0人"
android:textColor="@color/white"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.615" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView

View File

@@ -110,14 +110,13 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.shehuan.niv.NiceImageView <ImageView
android:id="@+id/iv_head" android:id="@+id/iv_head"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="100dp" android:layout_height="100dp"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="fitCenter" android:scaleType="fitCenter"
android:src="@drawable/gallery_icon" android:src="@drawable/gallery_icon"
app:is_circle="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View File

@@ -0,0 +1,60 @@
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_100"
android:layout_margin="@dimen/dp_4"
android:background="@drawable/background_weather_rain"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.shehuan.niv.NiceImageView
android:id="@+id/iv_head"
android:layout_width="@dimen/dp_44"
android:layout_height="@dimen/dp_44"
android:layout_marginStart="@dimen/dp_4"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_head"
app:is_circle="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_4"
android:maxLines="1"
android:singleLine="true"
android:text="姓名"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toEndOf="@+id/iv_head"
app:layout_constraintTop_toTopOf="@+id/iv_head" />
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_4"
android:maxLines="1"
android:singleLine="true"
android:text="phone"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@+id/iv_head"
app:layout_constraintStart_toEndOf="@+id/iv_head" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,2 +1,2 @@
include ':app', ':niceimageview' include ':app', ':niceimageview'
rootProject.name='UIUI老人平板桌面' rootProject.name='老人OS系统'