feat(界面): 完善搜索好友界面

1.完善搜索好友界面
2.完善个人中心界面
This commit is contained in:
糕小菜 2024-10-07 22:46:24 +08:00
parent 89601df784
commit d9376b96df
45 changed files with 1504 additions and 78 deletions

1
.gitignore vendored
View File

@ -13,3 +13,4 @@
.externalNativeBuild
.cxx
local.properties
/app/build

View File

@ -2,19 +2,7 @@
<project version="4">
<component name="GitCommitMessageStorage">
<option name="messageStorage">
<MessageStorage>
<option name="commitTemplate">
<CommitTemplate>
<option name="body" value="" />
<option name="changes" value="" />
<option name="closes" value="" />
<option name="scope" value="" />
<option name="skipCi" value="" />
<option name="subject" value="" />
<option name="type" value="feat" />
</CommitTemplate>
</option>
</MessageStorage>
<MessageStorage />
</option>
</component>
</project>

View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@ -20,6 +20,24 @@
android:theme="@style/Theme.KChatAndroid"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name=".view.activity.SetRemarkActivity"
android:exported="false" />
<activity
android:name=".view.activity.DataSettingActivity"
android:exported="false" />
<activity
android:name=".view.activity.ApplyFriendsDetailActivity"
android:exported="false" />
<activity
android:name=".view.activity.SearchFriendsActivity"
android:exported="false" />
<activity
android:name=".view.activity.MainActivity2"
android:exported="false" />
<activity
android:name=".view.activity.AddFriendsActivity"
android:exported="false" />
<activity
android:name=".view.activity.TestActivity"
android:exported="false" />

View File

@ -0,0 +1,16 @@
package com.kaixed.kchat.entity.search
/**
* @Author: kaixed
* @Date: 2024/9/22 22:59
* @Description: TODO
*/
data class SearchFriends(
val code: String,
val msg: String,
val data: Data
)
data class Data(
val userLists: List<User>
)

View File

@ -0,0 +1,14 @@
package com.kaixed.kchat.entity.search
/**
* @Author: kaixed
* @Date: 2024/9/22 22:58
* @Description: TODO
*/
data class User(
val username: String,
val nickname: String,
val signature: String,
val avatarUrl: String,
val status: String?
)

View File

@ -1,11 +1,5 @@
package com.kaixed.kchat.network;
import com.tencent.mmkv.MMKV;
import org.json.JSONObject;
import okhttp3.Callback;
/**
* @Author: kaixed
* @Date: 2024/5/20 22:25
@ -13,9 +7,9 @@ import okhttp3.Callback;
*/
public class NetworkInterface {
public static final String URL = "192.168.31.18:8080";
public static final String SERVER_URL = "http://" + URL;
public static final String WEBSOCKET_SERVER_URL = "ws://" + URL;
public static final String URL = "app.kaixed.com/kchat";
public static final String SERVER_URL = "https://" + URL;
public static final String WEBSOCKET_SERVER_URL = "wss://" + URL;
public static final String WEBSOCKET = "/websocket/single/";
public static final String USER_INFO = "/users/info/";
public static final String USER_LOGIN = "/users/login";

View File

@ -1,9 +0,0 @@
package com.kaixed.kchat.repository;
/**
* @Author: kaixed
* @Date: 2024/6/1 20:53
* @Description: TODO
*/
public class AddUserRepository {
}

View File

@ -35,7 +35,6 @@ public class LoginRepository {
new NetworkRequest().postAsync(SERVER_URL + USER_LOGIN, requestBody, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("haha", e.toString());
loginResult.postValue(null);
}

View File

@ -0,0 +1,49 @@
package com.kaixed.kchat.repository;
import static com.kaixed.kchat.network.NetworkInterface.SERVER_URL;
import static com.kaixed.kchat.network.NetworkInterface.USER_LIST;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.google.gson.Gson;
import com.kaixed.kchat.entity.search.SearchFriends;
import com.kaixed.kchat.entity.user.UserList;
import com.kaixed.kchat.network.NetworkRequest;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* @Author: kaixed
* @Date: 2024/6/1 20:53
* @Description: TODO
*/
public class SearchFriendsRepository {
public MutableLiveData<SearchFriends> searchFriends(String username) {
MutableLiveData<SearchFriends> listMutableLiveData = new MutableLiveData<>();
new NetworkRequest().getAsync(SERVER_URL + USER_LIST + username, new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
if (response.isSuccessful() && response.body() != null) {
String responseBody = response.body().string();
SearchFriends searchFriends = new Gson().fromJson(responseBody, SearchFriends.class);
listMutableLiveData.postValue(searchFriends);
} else {
listMutableLiveData.postValue(null);
}
}
});
return listMutableLiveData;
}
}

View File

@ -2,6 +2,7 @@ package com.kaixed.kchat.service;
import static com.kaixed.kchat.network.NetworkInterface.WEBSOCKET;
import static com.kaixed.kchat.network.NetworkInterface.WEBSOCKET_SERVER_URL;
import static com.kaixed.kchat.utils.Constants.MMKV_COMMON_DATA;
import android.app.Service;
import android.content.Intent;
@ -19,6 +20,7 @@ import com.kaixed.kchat.database.ObjectBox;
import com.kaixed.kchat.database.UserManager;
import com.kaixed.kchat.database.entity.Messages;
import com.kaixed.kchat.network.OkhttpHelper;
import com.tencent.mmkv.MMKV;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
@ -115,7 +117,18 @@ public class WebSocketService extends Service {
public void sendMessage(String jsonObject) {
if (webSocket != null) {
Log.d("haha", jsonObject);
webSocket.send(jsonObject);
MMKV kv = MMKV.mmkvWithID(MMKV_COMMON_DATA);
}
}
public void sendMessage(String jsonObject,Long msgLocalId) {
if (webSocket != null) {
Log.d("haha", jsonObject);
webSocket.send(jsonObject);
MMKV kv = MMKV.mmkvWithID(MMKV_COMMON_DATA);
kv.putLong("msgLocalId",msgLocalId);
}
}
@ -148,11 +161,11 @@ public class WebSocketService extends Service {
public void onMessage(@NonNull WebSocket webSocket, @NonNull String text) {
if (HEARTBEAT_ACK.equals(text)) {
Log.d(TAG, "Received heartbeat ack from server");
// Log.d(TAG, "Received heartbeat ack from server");
return;
}
Log.d(TAG, "Received message: " + text);
// Log.d(TAG, "Received message: " + text);
Gson gson = new Gson();
Messages messages = gson.fromJson(text, Messages.class);
messages.setTakerId(messages.getSenderId());

View File

@ -0,0 +1,35 @@
package com.kaixed.kchat.view.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import com.kaixed.kchat.databinding.ActivityAddFriendsBinding
class AddFriendsActivity : AppCompatActivity() {
private lateinit var binding: ActivityAddFriendsBinding
private val mContext: Context by lazy { this }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityAddFriendsBinding.inflate(layoutInflater)
setContentView(binding.root)
initView()
}
private fun initView() {
binding.ivBack.setOnClickListener {
finish()
}
binding.cvSearch.setOnClickListener {
val intent = Intent(mContext, SearchFriendsActivity::class.java)
startActivity(intent)
}
}
}

View File

@ -9,17 +9,25 @@ import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.kaixed.kchat.R;
import com.kaixed.kchat.databinding.ActivityAddFriendBinding;
/**
* @author hui
*/
public class ApplyFriendActivity extends AppCompatActivity {
private ActivityAddFriendBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_apply_friend);
binding = ActivityAddFriendBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.ivBack.setOnClickListener(v -> {
finish();
});
}
}

View File

@ -0,0 +1,35 @@
package com.kaixed.kchat.view.activity
import android.content.Intent
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.kaixed.kchat.R
import com.kaixed.kchat.databinding.ActivityApplyFriendsDetailBinding
class ApplyFriendsDetailActivity : AppCompatActivity() {
private lateinit var binding: ActivityApplyFriendsDetailBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityApplyFriendsDetailBinding.inflate(layoutInflater)
setContentView(binding.root)
setOnClick()
}
private fun setOnClick() {
binding.ivBack.setOnClickListener { finish() }
binding.ivMore.setOnClickListener {
val intent = Intent(this, DataSettingActivity::class.java)
startActivity(intent)
}
binding.rlSetRemark.setOnClickListener {
val intent = Intent(this, SetRemarkActivity::class.java)
startActivity(intent)
}
}
}

View File

@ -510,24 +510,19 @@ public class ChatActivity extends AppCompatActivity implements OnItemClickListen
} catch (JSONException e) {
throw new RuntimeException(e);
}
webSocketService.sendMessage(jsonObject.toString());
webSocketService.sendMessage(jsonObject.toString(),id);
binding.etInput.setText("");
}
private void addData(Messages messages) {
Log.d(TAG, messagesList.toString());
messagesList.addFirst(messages);
chatAdapter.notifyItemInserted(0);
binding.recycleChatList.smoothScrollToPosition(0);
}
@NonNull
private List<Messages> queryData(long offset) {
return queryData(offset, LIMIT);
}
@NonNull
private List<Messages> queryData(long offset, long limit) {
Query<Messages> query = messagesBox
@ -537,10 +532,6 @@ public class ChatActivity extends AppCompatActivity implements OnItemClickListen
return query.find(offset, limit);
}
@NonNull
private List<Messages> queryDataById(long msgLocalId) {
return queryDataById(msgLocalId, LIMIT);
}
@NonNull
private List<Messages> queryDataById(long msgLocalId, long limit) {

View File

@ -0,0 +1,30 @@
package com.kaixed.kchat.view.activity
import android.content.Intent
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.kaixed.kchat.R
import com.kaixed.kchat.databinding.ActivityDataSettingBinding
class DataSettingActivity : AppCompatActivity() {
private lateinit var binding: ActivityDataSettingBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityDataSettingBinding.inflate(layoutInflater)
setContentView(binding.root)
setOnClick()
}
private fun setOnClick() {
binding.tvSetRemark.setOnClickListener {
val intent = Intent(this, SetRemarkActivity::class.java)
startActivity(intent)
}
binding.ivBack.setOnClickListener { finish() }
}
}

View File

@ -1,9 +1,12 @@
package com.kaixed.kchat.view.activity;
import static com.kaixed.kchat.utils.Constants.MMKV_COMMON_DATA;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@ -12,6 +15,7 @@ import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
@ -19,6 +23,7 @@ import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.kaixed.kchat.KChatApplication;
import com.kaixed.kchat.R;
import com.kaixed.kchat.database.ObjectBox;
import com.kaixed.kchat.database.entity.ChatLists;
@ -30,6 +35,7 @@ import com.kaixed.kchat.service.WebSocketService;
import com.kaixed.kchat.view.adapter.ChatListAdapter;
import com.kaixed.kchat.view.adapter.MyGridAdapter;
import com.kaixed.kchat.view.i.OnChatListItemClickListener;
import com.tencent.mmkv.MMKV;
import java.util.ArrayList;
import java.util.List;
@ -46,6 +52,7 @@ public class MainActivity extends AppCompatActivity implements OnChatListItemCli
private List<ChatLists> chatLists = new ArrayList<>();
private ChatListAdapter chatListAdapter;
private Box<ChatLists> chatListsBox;
private Box<Messages> messagesBox;
private String updateUsername;
private final List<HomeItem> items = new ArrayList<>();
private WebSocketService webSocketService;
@ -61,6 +68,7 @@ public class MainActivity extends AppCompatActivity implements OnChatListItemCli
setContentView(binding.getRoot());
chatListsBox = ObjectBox.get().boxFor(ChatLists.class);
messagesBox = ObjectBox.get().boxFor(Messages.class);
initView();
@ -77,17 +85,6 @@ public class MainActivity extends AppCompatActivity implements OnChatListItemCli
});
}
/**
* 将像素值转换为基于密度的独立像素dp
*
* @param px 需要转换的像素值
* @return 转换后的dp值四舍五入到最接近的整数
*/
public int pxToDp(int px) {
float density = getResources().getDisplayMetrics().density;
return Math.round(px / density);
}
private void flipImage(View v) {
ObjectAnimator flipAnimation;
@ -185,14 +182,13 @@ public class MainActivity extends AppCompatActivity implements OnChatListItemCli
}
private void updateChatLists() {
if (updateUsername == null) {
return;
MMKV kv = MMKV.mmkvWithID(MMKV_COMMON_DATA);
long msgLocalId = kv.getLong("msgLocalId", -1L);
if (msgLocalId != -1) {
Messages messages = messagesBox.get(msgLocalId);
processMessage(messages);
kv.remove("msgLocalId");
}
ChatLists existingChatList = chatListsBox
.query(ChatLists_.talkerId.equal(updateUsername))
.build()
.findFirst();
assert existingChatList != null;
}
@ -277,18 +273,17 @@ public class MainActivity extends AppCompatActivity implements OnChatListItemCli
binding.gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
binding.gridView.setOnItemClickListener((parent, view, position, id) -> {
HomeItem clickedItem = (HomeItem) parent.getItemAtPosition(position);
switch (position) {
case 0:
break;
case 2:
Intent intent = new Intent(MainActivity.this, AddFriendActivity.class);
Intent intent = new Intent(MainActivity.this, AddFriendsActivity.class);
startActivity(intent);
break;
default:
finish();
break;
}
Toast.makeText(MainActivity.this, "Clicked: " + clickedItem.getName(), Toast.LENGTH_SHORT).show();
});
}

View File

@ -0,0 +1,28 @@
package com.kaixed.kchat.view.activity
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.kaixed.kchat.R
import com.kaixed.kchat.databinding.ActivityMain2Binding
class MainActivity2 : AppCompatActivity() {
private lateinit var binding:ActivityMain2Binding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityMain2Binding.inflate(layoutInflater)
setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
binding.btn.setOnClickListener {
finish()
}
}
}

View File

@ -0,0 +1,86 @@
package com.kaixed.kchat.view.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.Observer
import com.kaixed.kchat.databinding.ActivitySearchFriendsBinding
import com.kaixed.kchat.entity.search.SearchFriends
import com.kaixed.kchat.entity.search.User
import com.kaixed.kchat.entity.user.UserList
import com.kaixed.kchat.viewmodel.SearchFriendsViewModel
class SearchFriendsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySearchFriendsBinding
private var isSearch = false
private val mContext: Context = this
private lateinit var userList: User
private val searchFriendsViewModel: SearchFriendsViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivitySearchFriendsBinding.inflate(layoutInflater)
setContentView(binding.root)
initView()
setOnClick()
}
private fun setOnClick() {
binding.clFriends.setOnClickListener {
val intent = Intent(mContext, ApplyFriendsDetailActivity::class.java)
intent.putExtra("username", userList.username)
startActivity(intent)
}
}
private fun initView() {
binding.clFriends.visibility = View.GONE
binding.tvTitle.visibility = View.GONE
binding.etSearch.requestFocus()
binding.etSearch.addTextChangedListener(afterTextChanged = {
it?.let {
binding.tvCancel.text = if (it.isEmpty()) "取消" else "搜索"
if (it.isEmpty()){
binding.clFriends.visibility = View.GONE
binding.tvTitle.visibility = View.GONE
}else{
binding.clFriends.visibility = View.VISIBLE
binding.tvTitle.visibility = View.VISIBLE
}
isSearch = it.isNotEmpty()
}
})
binding.etSearch.postDelayed({
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(binding.etSearch, InputMethodManager.SHOW_IMPLICIT)
}, 200)
binding.tvCancel.setOnClickListener {
if (isSearch) {
val username = binding.etSearch.text
searchFriendsViewModel.searchFriends(username.toString())?.observe(
this
) { value: SearchFriends ->
userList = value.data.userLists[0]
}
} else {
finish()
}
}
}
}

View File

@ -0,0 +1,25 @@
package com.kaixed.kchat.view.activity
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.kaixed.kchat.R
import com.kaixed.kchat.databinding.ActivitySetRemarkBinding
class SetRemarkActivity : AppCompatActivity() {
private lateinit var binding: ActivitySetRemarkBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivitySetRemarkBinding.inflate(layoutInflater)
setContentView(binding.root)
setOnClickListener()
}
private fun setOnClickListener() {
binding.ivBack.setOnClickListener { finish() }
}
}

View File

@ -110,7 +110,6 @@ public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
popupWindow.setBackgroundDrawable(new ColorDrawable());
popupView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int popupWidth = popupView.getMeasuredWidth();
int popupHeight = popupView.getMeasuredHeight();

View File

@ -0,0 +1,19 @@
package com.kaixed.kchat.viewmodel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.kaixed.kchat.entity.search.SearchFriends
import com.kaixed.kchat.repository.SearchFriendsRepository
/**
* @Author: kaixed
* @Date: 2024/9/22 23:04
* @Description: TODO
*/
class SearchFriendsViewModel : ViewModel() {
private var searchFriendsRepo: SearchFriendsRepository = SearchFriendsRepository()
fun searchFriends(username: String): MutableLiveData<SearchFriends>? {
return searchFriendsRepo.searchFriends(username)
}
}

View File

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

View File

@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M384,128a85.3,85.3 0,0 1,85.3 85.3v170.7a85.3,85.3 0,0 1,-85.3 85.3L213.3,469.3a85.3,85.3 0,0 1,-85.3 -85.3L128,213.3a85.3,85.3 0,0 1,85.3 -85.3h170.7zM384,192L213.3,192a21.3,21.3 0,0 0,-21 17.5L192,213.3v170.7a21.3,21.3 0,0 0,17.5 21L213.3,405.3h170.7a21.3,21.3 0,0 0,21 -17.5L405.3,384L405.3,213.3a21.3,21.3 0,0 0,-17.5 -21L384,192zM384,554.7a85.3,85.3 0,0 1,85.3 85.3v170.7a85.3,85.3 0,0 1,-85.3 85.3L213.3,896a85.3,85.3 0,0 1,-85.3 -85.3v-170.7a85.3,85.3 0,0 1,85.3 -85.3h170.7zM384,618.7L213.3,618.7a21.3,21.3 0,0 0,-21 17.5L192,640v170.7a21.3,21.3 0,0 0,17.5 21L213.3,832h170.7a21.3,21.3 0,0 0,21 -17.5L405.3,810.7v-170.7a21.3,21.3 0,0 0,-17.5 -21L384,618.7zM810.7,128a85.3,85.3 0,0 1,85.3 85.3v170.7a85.3,85.3 0,0 1,-85.3 85.3h-170.7a85.3,85.3 0,0 1,-85.3 -85.3L554.7,213.3a85.3,85.3 0,0 1,85.3 -85.3h170.7zM810.7,192h-170.7a21.3,21.3 0,0 0,-21 17.5L618.7,213.3v170.7a21.3,21.3 0,0 0,17.5 21L640,405.3h170.7a21.3,21.3 0,0 0,21 -17.5L832,384L832,213.3a21.3,21.3 0,0 0,-17.5 -21L810.7,192zM682.7,554.8a74.7,74.7 0,0 1,74.4 68.6l0.3,6.1v85.3a10.7,10.7 0,0 0,8.2 10.4l2.4,0.3h53.2a10.7,10.7 0,0 0,10.4 -8.2l0.3,-2.5v-128a32,32 0,0 1,63.7 -4.3l0.3,4.3v128a74.7,74.7 0,0 1,-68.5 74.5l-6.1,0.2L768,789.4a74.7,74.7 0,0 1,-74.4 -68.5l-0.3,-6.1v-85.3a10.7,10.7 0,0 0,-8.2 -10.4L682.7,618.8h-53.3a10.7,10.7 0,0 0,-10.4 8.2l-0.3,2.4v235a32,32 0,0 1,-63.7 4.4L554.7,864.4v-235a74.7,74.7 0,0 1,68.5 -74.4l6.1,-0.3L682.7,554.8z"
android:fillColor="#000000"/>
<path
android:pathData="M725.2,821.2a32,32 0,0 1,31.7 27.6l0.3,4.4v11.2a32,32 0,0 1,-63.7 4.4l-0.3,-4.4v-11.2a32,32 0,0 1,32 -32zM863.9,821.2a32,32 0,0 1,31.7 27.6l0.3,4.4v11.2a32,32 0,0 1,-63.7 4.4l-0.3,-4.4v-11.2a32,32 0,0 1,32 -32z"
android:fillColor="#000000"/>
<path
android:pathData="M256,256m21.3,0l42.7,0q21.3,0 21.3,21.3l0,42.7q0,21.3 -21.3,21.3l-42.7,0q-21.3,0 -21.3,-21.3l0,-42.7q0,-21.3 21.3,-21.3Z"
android:fillColor="#000000"/>
<path
android:pathData="M682.7,256m21.3,0l42.7,0q21.3,0 21.3,21.3l0,42.7q0,21.3 -21.3,21.3l-42.7,0q-21.3,0 -21.3,-21.3l0,-42.7q0,-21.3 21.3,-21.3Z"
android:fillColor="#000000"/>
<path
android:pathData="M256,682.7m21.3,0l42.7,0q21.3,0 21.3,21.3l0,42.7q0,21.3 -21.3,21.3l-42.7,0q-21.3,0 -21.3,-21.3l0,-42.7q0,-21.3 21.3,-21.3Z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M326.9,289.2l-223.3,96.9 -3.9,2a32,32 0,0 0,-11 43.6l123.7,209.6 23.1,242.3 0.7,4.3a32,32 0,0 0,38.1 23.9L512,858.8l237.6,52.9 4.3,0.6a32,32 0,0 0,34.5 -28.8l23,-242.3 123.7,-209.6 2,-3.9a32,32 0,0 0,-16.8 -41.7l-223.3,-96.9 -161.1,-182.4a32,32 0,0 0,-48 0L326.9,289.2zM512,176.3l141.8,160.6 3.3,3.3a32,32 0,0 0,7.9 4.9l196.5,85.2 -108.9,184.5 -2.1,4.2a32,32 0,0 0,-2.2 9l-20.4,213.2 -209.1,-46.5 -4.7,-0.7a32,32 0,0 0,-9.3 0.7L295.9,841.4l-20.3,-213.2 -0.8,-4.6a32,32 0,0 0,-3.5 -8.6l-108.9,-184.5L358.9,345.2a32,32 0,0 0,11.3 -8.2L512,176.3z"
android:fillColor="#000000"/>
<path
android:pathData="M516.5,336.3a32,32 0,0 1,41.7 2.4l3.2,3.5 51.8,67.6 77.5,27.3a32,32 0,0 1,20.7 36.6l-1.2,4.2a32,32 0,0 1,-36.7 20.7l-4.2,-1.2 -86.4,-30.4a32,32 0,0 1,-11.7 -7.3l-3.1,-3.5 -57.6,-75.3a32,32 0,0 1,5.9 -44.9z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M330.7,421a48,48 0,1 0,96 0,48 48,0 0,0 -96,0zM597.3,421a48,48 0,1 0,96 0,48 48,0 0,0 -96,0z"
android:fillColor="#000000"/>
<path
android:pathData="M512,128a384,384 0,1 1,-0 768A384,384 0,0 1,512 128zM512,192a320,320 0,1 0,0 640A320,320 0,0 0,512 192z"
android:fillColor="#000000"/>
<path
android:pathData="M512,661a128.3,128.3 0,0 1,-128 -121.3,6.4 6.4,0 0,1 6.4,-6.7h38.5c3.4,0 6.2,2.6 6.5,5.9a76.9,76.9 0,0 0,153.3 0,6.4 6.4,0 0,1 6.4,-5.9h38.5a6.4,6.4 0,0 1,6.4 6.7,128.3 128.3,0 0,1 -128,121.3z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M790.3,124.8a124.8,124.8 0,0 1,124.8 124.8v499.1a124.8,124.8 0,0 1,-124.8 124.8L208,873.5a124.8,124.8 0,0 1,-124.8 -124.8L83.2,249.6a124.8,124.8 0,0 1,124.8 -124.8h582.3zM790.3,187.2L208,187.2a62.4,62.4 0,0 0,-62.1 56.4L145.6,249.6v499.1a62.4,62.4 0,0 0,56.4 62.1L208,811.1h582.3a62.4,62.4 0,0 0,62.1 -56.4L852.7,748.7L852.7,249.6a62.4,62.4 0,0 0,-56.4 -62.1L790.3,187.2z"
android:fillColor="#000000"/>
<path
android:pathData="M353.6,249.6a104,104 0,1 1,0 208,104 104,0 0,1 0,-208zM353.6,307.8a45.8,45.8 0,1 0,0 91.5,45.8 45.8,0 0,0 0,-91.5z"
android:fillColor="#000000"/>
<path
android:pathData="M899.1,685.6l-44.1,44.1 -207.4,-207.4 -199,199a31.2,31.2 0,0 1,-40.9 2.8l-3.2,-2.8 -97,-97 -168.7,168.7 -44.1,-44.1 190.7,-190.7a31.2,31.2 0,0 1,41 -2.8l3.2,2.8 97,96.9 198.9,-198.9a31.2,31.2 0,0 1,40.9 -2.8l3.2,2.8 229.5,229.5z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M768,128a128,128 0,0 1,128 128v512a128,128 0,0 1,-128 128L256,896a128,128 0,0 1,-128 -128L128,256a128,128 0,0 1,128 -128h512zM768,192L256,192a64,64 0,0 0,-63.7 57.9L192,256v512a64,64 0,0 0,57.9 63.7L256,832h512a64,64 0,0 0,63.7 -57.9L832,768L832,256a64,64 0,0 0,-57.9 -63.7L768,192z"
android:fillColor="#000000"/>
<path
android:pathData="M330.7,394.7m-53.3,0a53.3,53.3 0,1 0,106.7 0,53.3 53.3,0 1,0 -106.7,0Z"
android:fillColor="#000000"/>
<path
android:pathData="M426.7,362.7m32,0l256,0q32,0 32,32l0,0q0,32 -32,32l-256,0q-32,0 -32,-32l0,0q0,-32 32,-32Z"
android:fillColor="#000000"/>
<path
android:pathData="M330.7,629.3m-53.3,0a53.3,53.3 0,1 0,106.7 0,53.3 53.3,0 1,0 -106.7,0Z"
android:fillColor="#000000"/>
<path
android:pathData="M426.7,597.3m32,0l256,0q32,0 32,32l0,0q0,32 -32,32l-256,0q-32,0 -32,-32l0,0q0,-32 32,-32Z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M627.6,117.3c-14.1,0 -27.7,5.2 -38.2,14.5l-4.3,4.3c-19.2,20.9 -45.1,32.3 -73.2,32.3a98.5,98.5 0,0 1,-73.3 -32.5,58 58,0 0,0 -61.5,-15.4 408.3,408.3 0,0 0,-133.5 78,58.3 58.3,0 0,0 -18.8,54.5l1.5,6a102.1,102.1 0,0 1,-9 81.3,99 99,0 0,1 -56.4,46l-8.2,2.3a58.2,58.2 0,0 0,-43.8 45.9A420.8,420.8 0,0 0,101.5 512c0,25.5 2.5,51.5 7.4,77.6 3.8,20.7 18.6,37.5 38.2,44.2l5.5,1.5c27.7,6.4 50.6,23.5 64.7,48.2 14.2,24.8 17.3,53.5 9,81.2 -6.5,21.8 0.2,45.3 17.1,60.4a409.3,409.3 0,0 0,133.7 78.2c20.1,6.9 41.7,2.4 57.1,-11.1l4.4,-4.3a98.4,98.4 0,0 1,73.3 -32.4c25.3,0 48.8,9.2 67.3,26.4l6,6a57.6,57.6 0,0 0,61.1 15.6,409.4 409.4,0 0,0 133.8,-78.1c17.1,-15.1 23.9,-38.7 17.4,-60.5a102,102 0,0 1,9 -81.4,99 99,0 0,1 56.5,-46l8.2,-2.3c22.3,-5.2 39.3,-23 43.7,-45.5a422.1,422.1 0,0 0,7.5 -77.9c0,-25.5 -2.5,-51.6 -7.4,-77.7a57.9,57.9 0,0 0,-38.3 -44.2l-5.5,-1.6a99.4,99.4 0,0 1,-64.7 -48.2,102 102,0 0,1 -11.2,-72.8l2.1,-8.4a57.9,57.9 0,0 0,-17.4 -60.8,408.1 408.1,0 0,0 -133.3,-77.8 57.3,57.3 0,0 0,-19.1 -3.3zM384.7,186.1l9.9,-3.8 -2.9,-3A162.4,162.4 0,0 0,512 232.4l9.8,-0.3a161.9,161.9 0,0 0,103.6 -45.7l3.9,-4.1 9.8,3.7c31.7,12.7 61,29.8 87.7,51.2l8.4,7 1.1,-3.8a166.5,166.5 0,0 0,14.7 131.6l5.1,8.4a163,163 0,0 0,91.1 67.9l5.5,1.5 -0.6,-3.7c4.2,22.2 6.3,44.4 6.3,65.9l-0.4,16.2a358.3,358.3 0,0 1,-3.1 33l-2.2,12.9 4.1,-1.1a163.1,163.1 0,0 0,-105.8 78.8l-4.7,8.7a165.4,165.4 0,0 0,-12.6 113.2l1.6,5.8 -8.5,7.2c-26.6,21.3 -55.9,38.4 -87.5,51.1l-9.9,3.7 3.1,3.2a162.6,162.6 0,0 0,-120.5 -53.2l-9.8,0.3a162.1,162.1 0,0 0,-103.7 45.7l-3.9,4 -9.9,-3.8a344,344 0,0 1,-87.5 -51.1l-8.5,-7.1 -0.9,3.7a166.1,166.1 0,0 0,-14.6 -131.4l-5.2,-8.4a163,163 0,0 0,-91.1 -67.8l-5.5,-1.5 0.6,3.8A357.3,357.3 0,0 1,165.5 512l0.4,-16.2c0.5,-10.9 1.6,-21.9 3.1,-33l2.1,-13 -3.8,1A163,163 0,0 0,273 372.1l4.6,-8.7a165.7,165.7 0,0 0,12.6 -113.2l-1.6,-5.8 -2.7,2.3a343.2,343.2 0,0 1,98.7 -60.6z"
android:fillColor="#000000"/>
<path
android:pathData="M512,352a160,160 0,1 0,0 320,160 160,0 0,0 0,-320zM512,416a96,96 0,1 1,0 192,96 96,0 0,1 0,-192z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="70dp"
android:height="70dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M661.8,149.3a85.3,85.3 0,0 1,85.3 85.3v106.4L832,341a85.3,85.3 0,0 1,85.3 85.3L917.3,746.7a128,128 0,0 1,-128 128h-554.7a128,128 0,0 1,-128 -128v-469.3a128,128 0,0 1,128 -128h427.1zM661.8,213.3L234.7,213.3a64,64 0,0 0,-63.7 57.9L170.7,277.3v469.3a64,64 0,0 0,57.9 63.7L234.7,810.7h554.7a64,64 0,0 0,63.7 -57.9L853.3,746.7L853.3,426.4a21.3,21.3 0,0 0,-17.5 -21l-3.8,-0.3h-148.9L683.1,234.7a21.3,21.3 0,0 0,-17.5 -21L661.8,213.3z"
android:fillColor="#000000"/>
<path
android:pathData="M170.7,277.3a64,64 0,0 0,57.9 63.7L234.7,341.3H682.7v64H234.7a128,128 0,0 1,-127.8 -120.5L106.7,277.3H170.7z"
android:fillColor="#000000"/>
<path
android:pathData="M650.7,490.7h106.7a32,32 0,1 1,0 64h-106.7a32,32 0,1 1,0 -64z"
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,90 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e5e5e5"
android:fitsSystemWindows="true"
tools:context=".view.activity.AddFriendsActivity">
<ImageView
android:id="@+id/iv_back"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_left_arrow"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加朋友"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/iv_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_back" />
<androidx.cardview.widget.CardView
android:id="@+id/cv_search"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_margin="15dp"
app:cardCornerRadius="8dp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal">
<ImageView
android:id="@+id/iv_search"
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_centerVertical="true"
android:src="@drawable/icon_search" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:layout_toEndOf="@id/iv_search"
android:text="账号/手机号" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/tv_uid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="我的微信号kaixed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cv_search" />
<ImageView
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginStart="8dp"
android:src="@drawable/icon_qrcode"
app:layout_constraintBottom_toBottomOf="@id/tv_uid"
app:layout_constraintStart_toEndOf="@id/tv_uid"
app:layout_constraintTop_toTopOf="@id/tv_uid" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,227 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".view.activity.ApplyFriendsDetailActivity">
<ImageView
android:id="@+id/iv_back"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_left_arrow"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_more"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginEnd="15dp"
android:src="@drawable/ic_more"
app:layout_constraintBottom_toBottomOf="@id/iv_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_back" />
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/ifv_avatar"
android:layout_width="55dp"
android:layout_height="55dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/avatar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_back"
app:round="8dp" />
<TextView
android:id="@+id/tv_contact_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="糕小菜菜"
android:textColor="@color/black"
android:textSize="17sp"
app:layout_constraintStart_toEndOf="@id/ifv_avatar"
app:layout_constraintTop_toTopOf="@id/ifv_avatar" />
<TextView
android:id="@+id/tv_contact_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="平安顺遂,喜乐无忧"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="@id/tv_contact_name"
app:layout_constraintTop_toBottomOf="@id/tv_contact_name" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="ifv_avatar,tv_contact_signature" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="15dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/barrier">
<View
android:layout_width="match_parent"
android:layout_height="0.7dp"
android:layout_marginStart="15dp"
android:background="#E5E5E5" />
<RelativeLayout
android:id="@+id/rl_setRemark"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp">
<TextView
android:id="@+id/tv_setRemark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="设置备注和标签"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.7dp"
android:layout_marginStart="15dp"
android:background="#E5E5E5" />
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="#E5E5E5" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:paddingVertical="15dp"
android:text="个性签名"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="15dp"
android:background="#E5E5E5"
app:layout_constraintBottom_toTopOf="@id/tv_origin"
app:layout_constraintTop_toBottomOf="@id/tv_signature" />
<TextView
android:id="@+id/tv_origin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:paddingVertical="15dp"
android:text="来源"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_signature" />
<TextView
android:id="@+id/tv_signature_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:ellipsize="end"
android:maxWidth="250dp"
android:maxLines="1"
android:text="平安顺遂,喜乐无忧。"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_signature"
app:layout_constraintStart_toEndOf="@id/tv_signature"
app:layout_constraintTop_toTopOf="@id/tv_signature" />
<TextView
android:id="@+id/tv_origin_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxWidth="250dp"
android:maxLines="1"
android:text="来自账号搜索"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_origin"
app:layout_constraintStart_toStartOf="@id/tv_signature_content"
app:layout_constraintTop_toTopOf="@id/tv_origin" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="#E5E5E5" />
<RelativeLayout
android:id="@+id/rl_send_message"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="添加到通讯录"
android:textColor="@color/normal"
android:textSize="16sp"
android:textStyle="bold" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.7dp"
android:background="#E5E5E5" />
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E5E5E5" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,83 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E5E5E5"
android:fitsSystemWindows="true"
tools:context=".view.activity.DataSettingActivity">
<ImageView
android:id="@+id/iv_back"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_left_arrow"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="资料设置"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/iv_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_back" />
<ImageView
android:id="@+id/iv_setting"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginEnd="15dp"
android:src="@drawable/ic_more"
app:layout_constraintBottom_toBottomOf="@id/iv_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_back" />
<TextView
android:id="@+id/tv_setRemark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@color/white"
android:paddingVertical="15dp"
android:paddingStart="15dp"
android:text="设置备注和标签"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_back" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right"
app:layout_constraintBottom_toBottomOf="@id/tv_setRemark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_setRemark" />
<TextView
android:id="@+id/tv_addToBlockList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@color/white"
android:paddingVertical="15dp"
android:paddingStart="15dp"
android:text="加入黑名单"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintTop_toBottomOf="@id/tv_setRemark" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -82,7 +82,7 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="5dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:horizontalSpacing="13dp"
android:numColumns="4"
android:overScrollMode="never"
android:padding="10dp"

View File

@ -0,0 +1,14 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.activity.MainActivity2">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -58,11 +58,20 @@
android:layout_height="50dp"
android:paddingStart="15dp">
<ImageView
android:id="@+id/iv_service"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_service" />
<TextView
android:id="@+id/tv_service"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_service"
android:text="服务"
android:textColor="@color/black"
android:textSize="16sp" />
@ -88,11 +97,19 @@
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_collection"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_collection" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_collection"
android:text="收藏"
android:textColor="@color/black"
android:textSize="16sp" />
@ -111,7 +128,7 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="25dp"
android:layout_marginStart="55dp"
android:background="#E5E5E5" />
@ -121,11 +138,19 @@
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_friend_circle"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_friend_circle" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_friend_circle"
android:text="朋友圈"
android:textColor="@color/black"
android:textSize="16sp" />
@ -144,7 +169,7 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="25dp"
android:layout_marginStart="55dp"
android:background="#E5E5E5" />
<RelativeLayout
@ -153,10 +178,19 @@
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_wallet"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_wallet" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_wallet"
android:text="卡包"
android:textColor="@color/black"
android:textSize="16sp" />
@ -173,7 +207,7 @@
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="25dp"
android:layout_marginStart="55dp"
android:background="#E5E5E5" />
<RelativeLayout
@ -182,10 +216,19 @@
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_emoji"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_emoji" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_emoji"
android:text="表情"
android:textColor="@color/black"
android:textSize="16sp" />
@ -210,10 +253,19 @@
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_setting"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_setting" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_setting"
android:text="设置"
android:textColor="@color/black"
android:textSize="16sp" />

View File

@ -0,0 +1,310 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e5e5e5"
android:fitsSystemWindows="true"
tools:context=".view.activity.ProfileActivity">
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/ifv_avatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="20dp"
android:layout_marginTop="35dp"
android:src="@drawable/avatar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:roundPercent="0.3" />
<TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="糕菜菜"
android:textColor="@color/black"
android:textSize="15sp"
app:layout_constraintStart_toEndOf="@id/ifv_avatar"
app:layout_constraintTop_toTopOf="@id/ifv_avatar" />
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="kid: kaixed"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/ifv_avatar"
app:layout_constraintStart_toStartOf="@id/tv_nickname"
app:layout_constraintTop_toBottomOf="@id/tv_nickname" />
<ImageView
android:id="@+id/iv_service"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/mine_icon_service"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ifv_avatar" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="我的服务"
android:gravity="center_vertical"
android:paddingStart="35dp"
app:layout_constraintBottom_toBottomOf="@id/iv_service"
app:layout_constraintTop_toTopOf="@id/iv_service" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="55dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/ifv_avatar">
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="#E5E5E5" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp">
<!-- <ImageView-->
<!-- android:id="@+id/iv_service"-->
<!-- android:layout_width="24dp"-->
<!-- android:layout_height="24dp"-->
<!-- android:layout_centerVertical="true"-->
<!-- android:src="@drawable/mine_icon_service" />-->
<!-- <TextView-->
<!-- android:id="@+id/tv_service"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_centerVertical="true"-->
<!-- android:layout_marginStart="15dp"-->
<!-- android:layout_toEndOf="@id/iv_service"-->
<!-- android:text="服务"-->
<!-- android:textColor="@color/black"-->
<!-- android:textSize="16sp" />-->
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="#E5E5E5" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_collection"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_collection" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_collection"
android:text="收藏"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="55dp"
android:background="#E5E5E5" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_friend_circle"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_friend_circle" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_friend_circle"
android:text="朋友圈"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="55dp"
android:background="#E5E5E5" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_wallet"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_wallet" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_wallet"
android:text="卡包"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="55dp"
android:background="#E5E5E5" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_emoji"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_emoji" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_emoji"
android:text="表情"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="#E5E5E5" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="15dp"
tools:ignore="RtlSymmetry">
<ImageView
android:id="@+id/iv_setting"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerVertical="true"
android:src="@drawable/mine_icon_setting" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_toEndOf="@id/iv_setting"
android:text="设置"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="15dp"
android:src="@drawable/icon_arrow_right" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E5E5E5" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,130 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ededed"
android:fitsSystemWindows="true"
tools:context=".view.activity.SearchActivity">
<androidx.cardview.widget.CardView
android:id="@+id/cv_search"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_margin="15dp"
app:cardCornerRadius="8dp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:layout_constraintEnd_toStartOf="@id/tv_cancel"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_search"
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:src="@drawable/icon_search" />
<EditText
android:id="@+id/et_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="5dp"
android:layout_toEndOf="@id/iv_search"
android:background="@null"
android:hint="账号/手机号"
android:textColor="@color/black"
android:textSize="15sp" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:text="取消"
android:textColor="#576B95"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@id/cv_search"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/cv_search"
app:layout_constraintTop_toTopOf="@id/cv_search" />
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@color/white"
android:paddingVertical="7dp"
android:paddingStart="15dp"
android:text="个人"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cv_search" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_friends"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:layout_constraintTop_toBottomOf="@id/tv_title">
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:background="#E5E5E5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.utils.widget.ImageFilterView
android:id="@+id/iv_avatar"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginVertical="10dp"
android:layout_marginStart="15dp"
android:src="@drawable/avatar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:roundPercent="0.3" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/name"
android:textColor="@color/black"
android:textSize="15sp"
app:layout_constraintBottom_toTopOf="@id/tv_signature"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar" />
<TextView
android:id="@+id/tv_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/signature"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintStart_toStartOf="@id/tv_name"
app:layout_constraintTop_toBottomOf="@id/tv_name" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,34 @@
<?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/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.activity.SetRemarkActivity">
<ImageView
android:id="@+id/iv_back"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_left_arrow"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:background="@drawable/bac_round_green"
android:paddingHorizontal="10dp"
android:paddingVertical="5dp"
android:text="保存"
android:textSize="12sp"
android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="@id/iv_back"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_back" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -7,8 +7,8 @@
<ImageView
android:id="@+id/iv_item"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_width="55dp"
android:layout_height="55dp"
android:background="@color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@ -22,14 +22,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
app:layout_constraintGuide_percent="0.25" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_line_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.65" />
app:layout_constraintGuide_percent="0.6" />
<ImageView
android:id="@+id/imageview"
@ -58,7 +58,7 @@
android:id="@+id/iv_more"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_margin="5dp"
android:layout_margin="7dp"
android:src="@drawable/more_indicator"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View File

@ -0,0 +1,15 @@
<?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="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="个人"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,3 +1,5 @@
<resources>
<string name="app_name">KChat-Android</string>
<string name="signature">平安顺遂,喜乐无忧</string>
<string name="name">kaixed</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.31.18</domain>
<domain includeSubdomains="true">100.66.152.184</domain>
</domain-config>
</network-security-config>