version:4.9

fix:
update:更新下单流程,增加备注,增加桌面图标
This commit is contained in:
2024-03-13 18:13:33 +08:00
parent 7cb6eecb3d
commit 5e9b850d6b
41 changed files with 945 additions and 124 deletions

View File

@@ -188,8 +188,8 @@
<activity
android:name=".activity.GoodsActivity"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustPan"
android:screenOrientation="userPortrait" />
android:screenOrientation="userPortrait"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activity.OrderActivity"
android:launchMode="singleTask"
@@ -206,7 +206,20 @@
android:name=".activity.ExpressActivity"
android:launchMode="singleTask"
android:screenOrientation="userPortrait" />
<activity
android:name=".activity.AddressActivity"
android:launchMode="singleTask"
android:screenOrientation="userPortrait" />
<!-- Intent received used to install shortcuts from other applications -->
<receiver
android:name=".receiver.InstallShortcutReceiver"
android:enabled="@bool/enable_install_shortcut_api"
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
<intent-filter>
<action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
</intent-filter>
</receiver>
<receiver
android:name=".receiver.BootReceiver"
@@ -226,6 +239,7 @@
<action android:name="zuoyeos.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name=".receiver.InstallResultReceiver"
android:enabled="true"

View File

@@ -0,0 +1,108 @@
package com.uiuios.aios.activity;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.AddressAdapter;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.bean.AddressInfo;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityAddressBinding;
import com.uiuios.aios.gson.GsonUtils;
import com.uiuios.aios.network.NetInterfaceManager;
import java.util.List;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class AddressActivity extends BaseDataBindingActivity {
private ActivityAddressBinding mBinding;
private AddressAdapter mAddressAdapter;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
/**
* 初始化视图
*/
@Override
public void initView() {
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_address);
mBinding.setListener(new Listener());
mAddressAdapter = new AddressAdapter();
mAddressAdapter.setClickListener(new AddressAdapter.ClickListener() {
@Override
public void onClickListener(AddressInfo addressInfo) {
if (addressInfo != null) {
Intent intent = new Intent();
intent.putExtra("AddressInfo", addressInfo);
setResult(Activity.RESULT_OK, intent);
finish();
}
}
});
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mBinding.recyclerView.setLayoutManager(linearLayoutManager);
mBinding.recyclerView.setAdapter(mAddressAdapter);
}
/**
* 初始化数据
*/
@Override
public void initData() {
NetInterfaceManager.getInstance().getAddressIndexObservable()
.subscribe(new Observer<BaseResponse<List<AddressInfo>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getAddressIndexObservable", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<List<AddressInfo>> listBaseResponse) {
Log.e("getAddressIndexObservable", "onNext: " + listBaseResponse);
if (listBaseResponse.code == 200) {
List<AddressInfo> addressInfos = listBaseResponse.data;
if (addressInfos != null && addressInfos.size() != 0) {
AddressInfo defaultAddressInfo = addressInfos.get(0);
mMMKV.encode(CommonConfig.MAP_DEFAULT_ADDRESS_ID_KEY, defaultAddressInfo.getId());
mMMKV.encode(CommonConfig.MAP_DEFAULT_ADDRESS_JSON_KEY, GsonUtils.toJSONString(defaultAddressInfo));
mAddressAdapter.setAddressInfoList(addressInfos);
} else {
mAddressAdapter.setAddressInfoList(null);
}
} else {
mAddressAdapter.setAddressInfoList(null);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getAddressIndexObservable", "onError: ");
}
@Override
public void onComplete() {
Log.e("getAddressIndexObservable", "onComplete: ");
}
});
}
public class Listener {
public void back(View view) {
finish();
}
}
}

View File

@@ -105,23 +105,23 @@ public class EmergencyActivity extends AppCompatActivity {
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("SOSRecordApi", "onSubscribe: ");
Log.e("SosRecordApi", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse baseResponse) {
Log.e("SOSRecordApi", "onNext: " + baseResponse);
Log.e("SosRecordApi", "onNext: " + baseResponse);
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("SOSRecordApi", "onError: " + e.getMessage());
Log.e("SosRecordApi", "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.e("SOSRecordApi", "onComplete: ");
Log.e("SosRecordApi", "onComplete: ");
}
});
needDial = true;

View File

@@ -1,31 +1,44 @@
package com.uiuios.aios.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.databinding.DataBindingUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.bean.AddressInfo;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.GoodsInfo;
import com.uiuios.aios.bean.OrderBean;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityOrderBinding;
import com.uiuios.aios.gson.GsonUtils;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.utils.ToastUtil;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.rxjava3.annotations.NonNull;
@@ -42,12 +55,47 @@ public class OrderActivity extends BaseDataBindingActivity {
private int mStock;
private int mNumer = 1;
private int mAddressId = 0;
private AddressInfo mAddressInfo;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
ActivityResultLauncher<Intent> launcher;
/**
* 初始化视图
*/
@Override
public void initView() {
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_order);
launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
//此处是跳转的result回调方法
Log.e(TAG, "onActivityResult");
if (result.getData() != null && result.getResultCode() == Activity.RESULT_OK) {
// 数据在此处理
AddressInfo addressInfo = (AddressInfo) result.getData().getSerializableExtra("AddressInfo");
Log.e("initView", "onActivityResult: addressInfo = " + addressInfo);
if (addressInfo != null) {
mAddressInfo = addressInfo;
mBinding.setAddressInfo(mAddressInfo);
mAddressId = addressInfo.getId();
Log.e(TAG, "onActivityResult: mAddressId = " + mAddressId);
mMMKV.encode(CommonConfig.MAP_DEFAULT_ADDRESS_ID_KEY, mAddressId);
mMMKV.encode(CommonConfig.MAP_DEFAULT_ADDRESS_JSON_KEY, GsonUtils.toJSONString(mAddressInfo));
} else {
Log.e("initView", "onActivityResult: addressInfo is null");
}
}
}
});
mBinding.clAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
launcher.launch(new Intent(OrderActivity.this, AddressActivity.class));
}
});
mBinding.ivReduce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -121,6 +169,20 @@ public class OrderActivity extends BaseDataBindingActivity {
if (intent == null) return;
GoodsInfo goodsInfo = (GoodsInfo) intent.getSerializableExtra("GoodsInfo");
if (goodsInfo == null) return;
mAddressId = mMMKV.decodeInt(CommonConfig.MAP_DEFAULT_ADDRESS_ID_KEY, -1);
Log.e(TAG, "initData: mAddressId = " + mAddressId);
String addressJson = mMMKV.decodeString(CommonConfig.MAP_DEFAULT_ADDRESS_JSON_KEY, "");
Gson gson = new Gson();
Type type = new TypeToken<AddressInfo>() {
}.getType();
mAddressInfo = gson.fromJson(addressJson, type);
if (mAddressInfo != null) {
mBinding.setAddressInfo(mAddressInfo);
String area = mAddressInfo.getArea();
List<String> areaList = new ArrayList<>(Arrays.asList(area.split(",")));
mBinding.tvAddress.setText(String.join(" ", areaList) + " " + mAddressInfo.getAddress());
}
mGoodsInfo = goodsInfo;
mBinding.setGoodsInfo(mGoodsInfo);
mBinding.tvPrice.setText("券后¥" + mGoodsInfo.getBuying_price());
@@ -141,7 +203,11 @@ public class OrderActivity extends BaseDataBindingActivity {
params.put("goods_id", NetInterfaceManager.convertToRequestBody(mGoodsInfo.getId()));
params.put("num", NetInterfaceManager.convertToRequestBody(mBinding.editText.getText().toString()));
params.put("sn", NetInterfaceManager.convertToRequestBody(RemoteManager.getInstance().getSerial()));
if (!TextUtils.isEmpty(mBinding.etRemark.getText())) {
params.put("remark", NetInterfaceManager.convertToRequestBody(mBinding.etRemark.getText().toString()));
}
params.put("desktop_app_package", NetInterfaceManager.convertToRequestBody(BuildConfig.APPLICATION_ID));
params.put("address_id", NetInterfaceManager.convertToRequestBody(mAddressId));
NetInterfaceManager.getInstance().getGoodsBuyObservable(params)
.compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<OrderBean>>() {

View File

@@ -8,6 +8,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutManager;
import android.content.res.Configuration;
import android.graphics.Color;
import android.os.Build;
@@ -161,6 +162,8 @@ public abstract class BaseMainActivity extends BaseActivity implements MainConta
// 隐藏导航栏
hideNavigationBar();
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
Log.e(TAG, "isRequestPinShortcutSupported: " + shortcutManager.isRequestPinShortcutSupported());
}
private View.OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener =

View File

@@ -0,0 +1,94 @@
package com.uiuios.aios.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.uiuios.aios.R;
import com.uiuios.aios.bean.AddressInfo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class AddressAdapter extends RecyclerView.Adapter<AddressAdapter.AddressHolder> {
private Context mContext;
List<AddressInfo> mAddressInfoList;
public void setAddressInfoList(List<AddressInfo> addressInfoList) {
mAddressInfoList = addressInfoList;
notifyDataSetChanged();
}
public interface ClickListener {
void onClickListener(AddressInfo addressInfo);
}
private ClickListener mClickListener;
public void setClickListener(ClickListener clickListener) {
mClickListener = clickListener;
}
@NonNull
@Override
public AddressHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = parent.getContext();
return new AddressAdapter.AddressHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_address, parent, false));
}
@Override
public void onBindViewHolder(@NonNull AddressHolder holder, int position) {
AddressInfo addressInfo = mAddressInfoList.get(position);
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mClickListener != null) {
mClickListener.onClickListener(addressInfo);
}
}
});
holder.tv_name.setText(addressInfo.getFullname());
holder.tv_phone.setText(addressInfo.getTel());
String area = addressInfo.getArea();
List<String> areaList = new ArrayList<>(Arrays.asList(area.split(",")));
holder.tv_address.setText(String.join(" ", areaList) + " " + addressInfo.getAddress());
int isDefault = addressInfo.getIs_default();
if (isDefault == 1) {
holder.tv_default.setVisibility(View.VISIBLE);
} else {
holder.tv_default.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return mAddressInfoList == null ? 0 : mAddressInfoList.size();
}
class AddressHolder extends RecyclerView.ViewHolder {
ConstraintLayout root;
ImageView iv_avatar;
TextView tv_name, tv_phone, tv_default, tv_address;
public AddressHolder(@NonNull View itemView) {
super(itemView);
root = itemView.findViewById(R.id.root);
iv_avatar = itemView.findViewById(R.id.iv_avatar);
tv_name = itemView.findViewById(R.id.tv_name);
tv_phone = itemView.findViewById(R.id.tv_phone);
tv_default = itemView.findViewById(R.id.tv_default);
tv_address = itemView.findViewById(R.id.tv_address);
}
}
}

View File

@@ -60,7 +60,11 @@ public class BaseApplication extends Application {
AppStatusManager.init(this);
NetInterfaceManager.init(this);
JGYUtils.init(this);
startService(new Intent(this, MainService.class));
try {
startService(new Intent(this, MainService.class));
} catch (Exception e) {
Log.e(TAG, "onCreate: " + e.getMessage());
}
}
private void aliyunPushInit() {

View File

@@ -0,0 +1,97 @@
package com.uiuios.aios.bean;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import java.io.Serializable;
public class AddressInfo implements Serializable {
private static final long serialVersionUID = -4450893534418777122L;
int id;
String fullname;//姓名
String tel;
String province_id;
String city_id;
String county_id;
String address;//详细地址
int is_default;// 1 默认 2 非默认
String area;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getProvince_id() {
return province_id;
}
public void setProvince_id(String province_id) {
this.province_id = province_id;
}
public String getCity_id() {
return city_id;
}
public void setCity_id(String city_id) {
this.city_id = city_id;
}
public String getCounty_id() {
return county_id;
}
public void setCounty_id(String county_id) {
this.county_id = county_id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getIs_default() {
return is_default;
}
public void setIs_default(int is_default) {
this.is_default = is_default;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
@Override
public String toString() {
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
}
}

View File

@@ -14,7 +14,7 @@ public class CommonConfig {
public static final String MAP_LOCATION_DESCRIBE_KEY = "map_locationDescribe_key";
public static final String MAP_ERROR_KEY = "map_error_key";
public static final String LOCK_SCREEN_PASSWORD ="aios_lockScreenPasswordKey";
public static final String LOCK_SCREEN_PASSWORD = "aios_lockScreenPasswordKey";
public static final String DEFAULT_PASSWORD = "6666";
/*是否激活接口请求缓存*/
@@ -37,4 +37,10 @@ public class CommonConfig {
/*手动选择位置 经纬度*/
public static final String MANUALLY_SELECT_LOCATION_TUDE = "map_manually_select_tude";
/*默认地址id*/
public static final String MAP_DEFAULT_ADDRESS_ID_KEY = "amap_default_address_id_key";
/*默认地址json*/
public static final String MAP_DEFAULT_ADDRESS_JSON_KEY = "amap_default_address_json_key";
}

View File

@@ -65,9 +65,17 @@ public class SecondPresenter implements SecondContact.Presenter {
@Override
public void onNext(@NonNull BaseResponse<GoodsList> listBaseResponse) {
Log.e("getGoods", "onNext: " + listBaseResponse);
GoodsList goodsList = listBaseResponse.data;
List<GoodsInfo> goodsInfos = goodsList.getData();
mView.setGoods(goodsInfos);
if (listBaseResponse.code == 200) {
GoodsList goodsList = listBaseResponse.data;
List<GoodsInfo> goodsInfos = goodsList.getData();
if (goodsInfos != null && goodsInfos.size() != 0) {
mView.setGoods(goodsInfos);
} else {
mView.setGoods(null);
}
} else {
mView.setGoods(null);
}
}
@Override
@@ -95,10 +103,18 @@ public class SecondPresenter implements SecondContact.Presenter {
@Override
public void onNext(@NonNull BaseResponse<ArticleList> listBaseResponse) {
Log.e("getArticle", "onNext: " + listBaseResponse);
ArticleList articleList = listBaseResponse.data;
List<ArticleInfo> articleInfoList = articleList.getData();
articleInfoList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight()));
mView.setArticle(articleInfoList);
if (listBaseResponse.code == 200) {
ArticleList articleList = listBaseResponse.data;
List<ArticleInfo> articleInfoList = articleList.getData();
if (articleInfoList != null && articleInfoList.size() != 0) {
articleInfoList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight()));
mView.setArticle(articleInfoList);
} else {
mView.setArticle(null);
}
} else {
mView.setArticle(null);
}
}
@Override

View File

@@ -15,6 +15,7 @@ import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.bean.ActivityBean;
import com.uiuios.aios.bean.AddressInfo;
import com.uiuios.aios.bean.AlarmClockId;
import com.uiuios.aios.bean.ArticleList;
import com.uiuios.aios.bean.BaseResponse;
@@ -28,7 +29,6 @@ import com.uiuios.aios.bean.HealthCode;
import com.uiuios.aios.bean.MapGeoBean;
import com.uiuios.aios.bean.NetDesktopIcon;
import com.uiuios.aios.bean.OrderBean;
import com.uiuios.aios.bean.OrderIndexBean;
import com.uiuios.aios.bean.OrderIndexData;
import com.uiuios.aios.bean.RegionInfo;
import com.uiuios.aios.bean.SnInfo;
@@ -43,40 +43,41 @@ import com.uiuios.aios.manager.ConnectManager;
import com.uiuios.aios.manager.ConnectMode;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.api.ActivityListApi;
import com.uiuios.aios.network.api.AlarmClockAddApi;
import com.uiuios.aios.network.api.AlarmClockApi;
import com.uiuios.aios.network.api.AlarmClockDeleteApi;
import com.uiuios.aios.network.api.AlarmClockEditApi;
import com.uiuios.aios.network.api.AlarmClockQueryApi;
import com.uiuios.aios.network.api.AddressIndexApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockAddApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockDeleteApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockEditApi;
import com.uiuios.aios.network.api.alarmclock.AlarmClockQueryApi;
import com.uiuios.aios.network.api.AppUsageRecordApi;
import com.uiuios.aios.network.api.ArticleCategorysListApi;
import com.uiuios.aios.network.api.ArticleListApi;
import com.uiuios.aios.network.api.CategorysApi;
import com.uiuios.aios.network.api.DemandListApi;
import com.uiuios.aios.network.api.GetAdminSnSettingApi;
import com.uiuios.aios.network.api.GetDesktopApi;
import com.uiuios.aios.network.api.desktop.GetDesktopApi;
import com.uiuios.aios.network.api.GetMailList;
import com.uiuios.aios.network.api.GetUserIDApi;
import com.uiuios.aios.network.api.GoodsBuyApi;
import com.uiuios.aios.network.api.pay.GoodsBuyApi;
import com.uiuios.aios.network.api.GoodsListApi;
import com.uiuios.aios.network.api.GoodsTypeApi;
import com.uiuios.aios.network.api.GoodsTypeListApi;
import com.uiuios.aios.network.api.HealthCodeApi;
import com.uiuios.aios.network.api.KnowledgeVideoListApi;
import com.uiuios.aios.network.api.LivenVideoListApi;
import com.uiuios.aios.network.api.liven.LivenVideoListApi;
import com.uiuios.aios.network.api.MailListAddApi;
import com.uiuios.aios.network.api.OrderPayApi;
import com.uiuios.aios.network.api.OrderPayCheckApi;
import com.uiuios.aios.network.api.pay.OrderPayApi;
import com.uiuios.aios.network.api.pay.OrderPayCheckApi;
import com.uiuios.aios.network.api.RegionListApi;
import com.uiuios.aios.network.api.RegionListCall;
import com.uiuios.aios.network.api.RunNewApp;
import com.uiuios.aios.network.api.SNInfoApi;
import com.uiuios.aios.network.api.SOSRecordApi;
import com.uiuios.aios.network.api.SendScreenshotApi;
import com.uiuios.aios.network.api.Setting;
import com.uiuios.aios.network.api.UpdateAlarmClockApi;
import com.uiuios.aios.network.api.app.RunNewApp;
import com.uiuios.aios.network.api.sn.SnInfoApi;
import com.uiuios.aios.network.api.sn.SosRecordApi;
import com.uiuios.aios.network.api.sn.SendScreenshotApi;
import com.uiuios.aios.network.api.sn.SettingApi;
import com.uiuios.aios.network.api.sn.UpdateAlarmClockApi;
import com.uiuios.aios.network.api.UpdateAppIconApi;
import com.uiuios.aios.network.api.UpdateDesktopApi;
import com.uiuios.aios.network.api.desktop.UpdateDesktopApi;
import com.uiuios.aios.network.api.UserInfoControl;
import com.uiuios.aios.network.api.amap.GeocodingApi;
import com.uiuios.aios.network.api.order.AllOrderApi;
@@ -257,8 +258,8 @@ public class NetInterfaceManager {
* @return
*/
public Observable<BaseResponse<SnInfo>> getsnInfoControl() {
return mRetrofit.create(SNInfoApi.class)
.getsninfo(RemoteManager.getInstance().getSerial())
return mRetrofit.create(SnInfoApi.class)
.getSninfo(RemoteManager.getInstance().getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
@@ -278,15 +279,15 @@ public class NetInterfaceManager {
}
public Observable<BaseResponse<SystemSettings>> getsettingControl() {
return mRetrofit.create(Setting.class)
return mRetrofit.create(SettingApi.class)
.getSetting(RemoteManager.getInstance().getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getSOSRecordObservable(String longitude, String latitude, String address) {
return mRetrofit.create(SOSRecordApi.class)
.sendSOSRecord(RemoteManager.getInstance().getSerial(), longitude, latitude, address)
return mRetrofit.create(SosRecordApi.class)
.sendSosRecord(RemoteManager.getInstance().getSerial(), longitude, latitude, address)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
@@ -494,6 +495,14 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<List<AddressInfo>>> getAddressIndexObservable() {
return mRetrofit.create(AddressIndexApi.class)
.getAddressList(RemoteManager.getInstance().getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public RegionListApi getRegionListApi() {
return mRetrofit.create(RegionListApi.class);
}

View File

@@ -4,55 +4,49 @@ public class UrlAddress {
public static final String ROOT_URL = "https://led.zuoyepad.com/android/";
public static final String AMAP_ROOT_URL = "https://api.map.baidu.com/";
/*设备信息接口*/
public static final String SNINFO = "sn/getSnInfo";
/**
* 旧接口
* SN
*/
/*获取用户头像和信息*/
public static final String GET_USER_AVATAR_INFO = "sn/getUserAvatarInfo";
/*应用使用记录*/
public static final String APP_USAGE_RECORD = "appUsageRecord";
/*正在运行的应用*/
public static final String RUN_NEW_APP = "app/runNewApp";
/*上传截图*/
/**
* 新接口
* SN
*/
/*爱心提醒通知成功接口*/
public static final String UPDATE_ALARM_CLOCK = "updateAlarmClock";
/*上传截屏图片*/
public static final String SEND_SCREENSHOT = "sn/uploadScreenshot";
/*获取系统设置*/
/*获取系统设置其它管控*/
public final static String GET_SETTINGS = "control/getSetting";
/*sos记录*/
public static final String SOS_RECORD = "sosRecord";
/*爱心提醒通知成功*/
public static final String UPDATE_ALARM_CLOCK = "updateAlarmClock";
/*更新桌面布局*/
public static final String UPDATE_DESKTOP_LAYOUT = "updateDesktopLayout";
/*获取桌面布局*/
public static final String GET_DESKTOP_LAYOUT = "getDesktopLayout";
/*获取商品分类列表*/
public static final String GOODS_TYPE_LIST = "goods-type-list";
/*获取抢购列表*/
public static final String GET_GOODS_LIST = "getGoodsList";
/*获取抢购详情*/
public static final String GET_GOODS_DETAILS = "getGoodsDetails";
/*商品下单*/
public static final String GOODS_BUY = "goods/buy";
/*商品调起支付*/
public static final String ORDER_PAY = "pay/order-pay";
/*商品支付查询(低频轮询)*/
public static final String ORDER_PAY_CHECK = "pay/order-pay-check";
/*养生资讯分类*/
public static final String ARTICLE_CATEGORYS = "article/categorys";
/*获取资讯列表*/
public static final String GET_ARTICLE_LIST = "getArticleList";
/*获取资讯详情*/
public static final String GET_ARTICLE_DETAILS = "getArticleDetails";
/*同城活动列表*/
public static final String GET_ACTIVITY_LIST = "activityList";
/*同城需求列表*/
public static final String GET_DEMAND_LIST = "demandList";
/*获取健康吗*/
/*获取健康码*/
public static final String GET_HEALTH_CODE = "getHealthCode";
/*获取设备信息*/
public static final String SNINFO = "sn/getSnInfo";
/*获取用户编号*/
public static final String GET_USER_ID = "getUserId";
/*获取商品分类列表*/
public static final String GOODS_TYPE_LIST = "goods-type-list";
/*获取负二屏开关*/
public static final String GET_ADMIN_SN_SETTING = "getAdminSnSetting";
/*更新app隐藏或者显示状态*/
public static final String APP_ICON_UPDATE = "Control/appIconUpdate";
/*获取联系人*/
public static final String GET_MAIL_LIST = "Control/getMailList";
/*添加联系人*/
@@ -64,8 +58,41 @@ public class UrlAddress {
/*编号查询联系人*/
public static final String MAIL_LIST_BY_ID = "MailList/mailListById";
/*获取闹钟*/
public static final String GET_ALARM_CLOCK = "getAlarmClock";
/**
* 应用统计
*/
/*应用使用记录*/
public static final String APP_USAGE_RECORD = "appUsageRecord";
/**
* 应用
*/
/*正在运行的应用*/
public static final String RUN_NEW_APP = "app/runNewApp";
/**
* 桌面布局
*/
/*更新桌面布局*/
public static final String UPDATE_DESKTOP_LAYOUT = "updateDesktopLayout";
/*获取桌面布局*/
public static final String GET_DESKTOP_LAYOUT = "getDesktopLayout";
/**
* 同城活动
*/
/*同城活动列表*/
public static final String GET_ACTIVITY_LIST = "activityList";
/**
* 服务需求
*/
/*同城需求列表*/
public static final String GET_DEMAND_LIST = "demandList";
/**
* 闹钟
*/
/*添加闹钟*/
public static final String ALARM_CLOCK_ADD = "AlarmClock/alarmClockAdd";
/*编辑闹钟*/
@@ -74,9 +101,32 @@ public class UrlAddress {
public static final String ALARM_CLOCK_BY_ID = "AlarmClock/alarmClockById";
/*删除闹钟*/
public static final String ALARM_CLOCK_DELETE = "AlarmClock/alarmClockDelete";
/*获取闹钟*/
public static final String GET_ALARM_CLOCK = "getAlarmClock";
public static final String GET_USER_ID = "getUserId";
/**
* 养生视频分类
*/
/*养生视频列表*/
public static final String GET_LIVEN_VIDEO_LIST = "livenVideo/getLivenVideoList";
/*知识视频列表*/
public static final String GET_KNOWLEDGE_VIDEO_LIST = "knowledgeVideo/getKnowledgeVideoList";
/*养生资讯分类*/
public static final String ARTICLE_CATEGORYS = "article/categorys";
/**
* 商品购买
*/
/*商品下单*/
public static final String GOODS_BUY = "goods/buy";
/*商品调起支付*/
public static final String ORDER_PAY = "pay/order-pay";
/*商品支付查询(低频轮询)*/
public static final String ORDER_PAY_CHECK = "pay/order-pay-check";
/**
* 公共接口
*/
/*获取省市区数据*/
public static final String REGION_LIST = "common/region-list";
@@ -90,12 +140,15 @@ public class UrlAddress {
/*订单物流查询*/
public static final String ORDER_EXPRESS = "order/express";
/**
* 用户地址
*/
/*用户地址列表*/
public static final String ADDRESS_INDEX = "address/index";
/*养生视频列表*/
public static final String GET_LIVEN_VIDEO_LIST = "livenVideo/getLivenVideoList";
/*知识视频列表*/
public static final String GET_KNOWLEDGE_VIDEO_LIST = "knowledgeVideo/getKnowledgeVideoList";
/*逆地理编码*/
public static final String GEOCODING = "geocoding/v3/";
}

View File

@@ -0,0 +1,18 @@
package com.uiuios.aios.network.api;
import com.uiuios.aios.bean.AddressInfo;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface AddressIndexApi {
@GET(UrlAddress.ADDRESS_INDEX)
Observable<BaseResponse<List<AddressInfo>>> getAddressList(
@Query("sn") String sn
);
}

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.alarmclock;
import com.uiuios.aios.bean.AlarmClockId;
import com.uiuios.aios.bean.BaseResponse;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.alarmclock;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.bean.BaseResponse;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.alarmclock;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.alarmclock;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.alarmclock;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.bean.BaseResponse;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.app;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.desktop;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.NetDesktopIcon;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.desktop;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.liven;
import com.uiui.video.bean.VideoInfo;
import com.uiuios.aios.bean.BaseResponse;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.pay;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.OrderBean;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.pay;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.WxpayBean;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.pay;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.sn;
import com.uiuios.aios.bean.BaseResponse;

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.sn;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.SystemSettings;
@@ -8,7 +8,7 @@ import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface Setting {
public interface SettingApi {
@GET(UrlAddress.GET_SETTINGS)
Observable<BaseResponse<SystemSettings>> getSetting(
@Query("sn") String sn

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.sn;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.SnInfo;
@@ -8,9 +8,9 @@ import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface SNInfoApi {
public interface SnInfoApi {
@GET(UrlAddress.SNINFO)
Observable<BaseResponse<SnInfo>> getsninfo(
Observable<BaseResponse<SnInfo>> getSninfo(
@Query("sn") String sn
);
}

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.sn;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;
@@ -8,10 +8,10 @@ import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface SOSRecordApi {
public interface SosRecordApi {
@FormUrlEncoded
@POST(UrlAddress.SOS_RECORD)
Observable<BaseResponse> sendSOSRecord(
Observable<BaseResponse> sendSosRecord(
@Field("sn") String sn,
@Field("longitude") String longitude,
@Field("latitude") String latitude,

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.network.api;
package com.uiuios.aios.network.api.sn;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.network.UrlAddress;

View File

@@ -0,0 +1,23 @@
package com.uiuios.aios.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class InstallShortcutReceiver extends BroadcastReceiver {
private static final String TAG = InstallShortcutReceiver.class.getSimpleName();
private static final String ACTION_INSTALL_SHORTCUT =
"com.android.launcher.action.INSTALL_SHORTCUT";
@Override
public void onReceive(Context context, Intent data) {
if (!ACTION_INSTALL_SHORTCUT.equals(data.getAction())) {
return;
}
Log.e(TAG, "onReceive: " + data);
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

View File

@@ -0,0 +1,13 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1px"
android:color="@color/action_bar_red" />
<corners android:radius="@dimen/dp_2" />
<padding
android:bottom="@dimen/dp_1"
android:left="@dimen/dp_2"
android:right="@dimen/dp_2"
android:top="@dimen/dp_1" />
</shape>

View File

@@ -0,0 +1,13 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1px"
android:color="@color/black" />
<corners android:radius="@dimen/dp_2" />
<padding
android:bottom="@dimen/dp_4"
android:left="@dimen/dp_4"
android:right="@dimen/dp_4"
android:top="@dimen/dp_4" />
</shape>

View File

@@ -33,7 +33,7 @@
android:layout_height="@dimen/dp_28"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_head"
android:src="@drawable/default_avatar"
app:is_circle="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -33,7 +33,7 @@
android:layout_height="@dimen/dp_28"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_head"
android:src="@drawable/default_avatar"
app:is_circle="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -0,0 +1,60 @@
<?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.AddressActivity">
<data>
<variable
name="listener"
type="com.uiuios.aios.activity.AddressActivity.Listener" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_exit"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
android:onClick="@{listener.back}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageView12"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_4"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_6"
android:text="我的收货地址"
android:textColor="@color/black"
android:textSize="@dimen/sp_13"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView12"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cl_exit" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -6,9 +6,15 @@
<data>
<import type="android.view.View" />
<variable
name="goodsInfo"
type="com.uiuios.aios.bean.GoodsInfo" />
<variable
name="addressInfo"
type="com.uiuios.aios.bean.AddressInfo" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
@@ -30,8 +36,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:textColor="@color/black"
android:text='@{goodsInfo.goods_name}'
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -50,7 +56,7 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout16"
android:id="@+id/cl_address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_1"
@@ -71,21 +77,83 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_location"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="2"
android:minLines="2"
android:paddingStart="@dimen/dp_8"
android:paddingEnd="@dimen/dp_32"
android:textColor="@color/black"
android:textSize="@dimen/sp_12"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginBottom="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageView14"
app:layout_constraintStart_toEndOf="@+id/imageView13"
app:layout_constraintTop_toTopOf="parent"
tools:text="测试地址测试地址测试地址测试地址测试地址测试地址测试地址测试地址" />
app:layout_constraintStart_toEndOf="@id/imageView13"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="@{addressInfo.fullname}"
android:textColor="@color/black"
android:textSize="@dimen/sp_10"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="范辉同" />
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sp_4"
android:ellipsize="end"
android:maxWidth="@dimen/dp_70"
android:maxLines="1"
android:text="@{addressInfo.tel}"
android:textColor="@color/black"
android:textSize="@dimen/sp_9"
app:layout_constraintBottom_toBottomOf="@id/tv_name"
app:layout_constraintStart_toEndOf="@id/tv_name"
app:layout_constraintTop_toTopOf="@id/tv_name"
tools:text="13220282310" />
<TextView
android:id="@+id/tv_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sp_4"
android:background="@drawable/address_background"
android:text="默认"
android:textColor="@color/default_red"
android:textSize="@dimen/sp_7"
android:visibility="@{addressInfo.is_default==1?View.VISIBLE:View.GONE}"
app:layout_constraintBottom_toBottomOf="@id/tv_phone"
app:layout_constraintStart_toEndOf="@+id/tv_phone"
app:layout_constraintTop_toTopOf="@id/tv_phone" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_address"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_8"
android:maxLines="2"
android:textColor="@color/title_gray"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout24"
tools:text="广东省 深圳市 龙岗区 坂田街道 天安路15号杨英楼" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/imageView14"
@@ -107,7 +175,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4"
android:background="@color/white"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout16">
app:layout_constraintTop_toBottomOf="@+id/cl_address">
<ImageView
android:id="@+id/iv_goods"
@@ -129,11 +197,11 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:maxLines="1"
tools:text="券后¥8278"
android:textColor="@color/default_red"
android:textSize="@dimen/sp_13"
app:layout_constraintStart_toEndOf="@+id/iv_goods"
app:layout_constraintTop_toTopOf="@+id/iv_goods" />
app:layout_constraintTop_toTopOf="@+id/iv_goods"
tools:text="券后¥8278" />
<TextView
android:id="@+id/tv_original_price"
@@ -144,9 +212,9 @@
android:maxLines="1"
android:textColor="@color/title_gray"
android:textSize="@dimen/sp_9"
tools:text="券前¥8278"
app:layout_constraintStart_toEndOf="@+id/iv_goods"
app:layout_constraintTop_toBottomOf="@+id/tv_price" />
app:layout_constraintTop_toBottomOf="@+id/tv_price"
tools:text="券前¥8278" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout17"
@@ -219,6 +287,33 @@
app:layout_constraintBottom_toTopOf="@+id/cl_pay"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout20">
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:text="订单备注"
android:textColor="@color/black"
android:textSize="@dimen/sp_11"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/et_remark"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_100"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/edittext_background"
android:textSize="@dimen/sp_10"
android:gravity="start"
android:singleLine="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView9" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout

View File

@@ -0,0 +1,106 @@
<?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/root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<ImageView
android:id="@+id/iv_avatar"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@+id/iv_avatar">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:textColor="@color/black"
android:textSize="@dimen/sp_12"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="范辉同" />
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sp_4"
android:ellipsize="end"
android:maxWidth="@dimen/dp_100"
android:maxLines="1"
android:textColor="@color/black"
android:textSize="@dimen/sp_11"
app:layout_constraintBottom_toBottomOf="@id/tv_name"
app:layout_constraintStart_toEndOf="@id/tv_name"
app:layout_constraintTop_toTopOf="@id/tv_name"
tools:text="13220282310" />
<TextView
android:id="@+id/tv_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sp_4"
android:background="@drawable/address_background"
android:text="默认"
android:textColor="@color/default_red"
android:textSize="@dimen/sp_9"
app:layout_constraintBottom_toBottomOf="@id/tv_phone"
app:layout_constraintStart_toEndOf="@+id/tv_phone"
app:layout_constraintTop_toTopOf="@id/tv_phone" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_address"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_8"
android:maxLines="2"
android:textColor="@color/title_gray"
android:textSize="@dimen/sp_11"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout24"
tools:text="广东省 深圳市 龙岗区 坂田街道 天安路15号杨英楼 c栋 409 " />
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:background="@color/gray"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/* Copyright 2017, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<resources>
<bool name="notification_dots_enabled">false</bool>
<bool name="enable_install_shortcut_api">true</bool>
</resources>