Commit 5db54a31 authored by jianglx's avatar jianglx

修改 身份验证拍照无响应的问题 无授权;修改选择出游人大人小孩分开;修改添加出游人,小孩不需要填写电话号码与身份证号码;会员协议点击跳转到会员协议界面;修改会员界面可免费租车天数显示有误的问题

parent dbeb8ce2
......@@ -6,6 +6,8 @@ import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
......@@ -13,6 +15,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.base.utils.ui.datetime.selector.util.TextUtil;
......@@ -36,6 +39,7 @@ import com.yuyife.okgo.OkGoUtil;
import java.io.File;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
......@@ -45,6 +49,7 @@ import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
......@@ -53,7 +58,7 @@ import top.zibin.luban.OnCompressListener;
* 实名认证
*/
@Route(path = Constance.ACTIVITY_URL_IDCARDCERTIFICATION)
public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresenter> {
public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresenter> implements EasyPermissions.PermissionCallbacks {
@BindView(R2.id.et_name)
EditText etName;
......@@ -79,6 +84,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
private int cardType;
private String strCard;
private String strCardCopy;
private String[] photoPermissions = {};
public static Intent getIntent(Context context) {
......@@ -124,11 +130,11 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
@OnClick({R2.id.rl_card, R2.id.rl_card_copy, R2.id.tv_ok})
public void onViewClicked(View view) {
int id = view.getId();
if (id == R.id.rl_card){
if (id == R.id.rl_card) {
showPickerDialog(0);
}else if (id == R.id.rl_card_copy){
} else if (id == R.id.rl_card_copy) {
showPickerDialog(1);
}else if (id == R.id.tv_ok){
} else if (id == R.id.tv_ok) {
String name = etName.getText().toString().trim();
if (TextUtils.isEmpty(name)) {
showToast("姓名不能为空!");
......@@ -156,7 +162,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
return;
}
verified(name,idCard);
verified(name, idCard);
}
}
......@@ -166,9 +172,9 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == mPresenter.TYPE_ALBUM_CODE) {
if (data != null && data.getData() != null) {
if (cardType == 0){
if (cardType == 0) {
llCard.setVisibility(View.GONE);
}else {
} else {
llCardCopy.setVisibility(View.GONE);
}
GlideManager.getInstance(mActivity).loadImage(mPresenter.getUriUrl(data.getData()), cardType == 0 ? ivCard : ivCardCopy);
......@@ -178,9 +184,9 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
}
if (requestCode == mPresenter.TYPE_CAMERA_CODE) {
if (!TextUtil.isEmpty(mPresenter.gerCameraStoreUrl())) {
if (cardType == 0){
if (cardType == 0) {
llCard.setVisibility(View.GONE);
}else {
} else {
llCardCopy.setVisibility(View.GONE);
}
String url = String.format("%1$s%2$s", "file://", mPresenter.gerCameraStoreUrl());
......@@ -188,10 +194,14 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
uploadFile(new File(mPresenter.gerCameraStoreUrl()), "camera");
}
}
if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
processPicker();
}
}
private int typeCamera;
/**
* 显示相机弹窗
*/
......@@ -206,11 +216,13 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
public void onClick(View v) {
int i = v.getId();
if (i == com.rv.home.R.id.btn_camera) {
processPicker(mPresenter.TYPE_CAMERA_CODE);
typeCamera = mPresenter.TYPE_CAMERA_CODE;
processPicker();
dismiss();
} else if (i == com.rv.home.R.id.btn_album) {
processPicker(mPresenter.TYPE_ALBUM_CODE);
typeCamera = mPresenter.TYPE_ALBUM_CODE;
processPicker();
dismiss();
} else if (i == com.rv.home.R.id.btn_cancel) {
......@@ -228,47 +240,64 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
* 打开相机和相册
*
* @param type 1、相机2、相册
* <p>
* 此处方法不奏效
*/
// @SuppressLint("CheckResult")
// private void processPicker(final int type) {
// /**
// * 6.0以上手机做权限处理
// */
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// new RxPermission(mActivity).request(
// new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
// Manifest.permission.CAMERA}).subscribe(new Consumer<Boolean>() {
// @Override
// public void accept(Boolean aBoolean) throws Exception {
// if (aBoolean == true) {
// switch (type) {
// case 1001:
// mPresenter.openCamera(false);
// break;
// case 1002:
// mPresenter.openAlbum(false);
// break;
// }
//
// }
// }
// });
// } else {
// switch (type) {
// case 1001:
// mPresenter.openCamera(false);
// break;
// case 1002:
// mPresenter.openAlbum(false);
// break;
// }
// }
// }
private String[] cameraPermissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
@SuppressLint("CheckResult")
private void processPicker(final int type) {
/**
* 6.0以上手机做权限处理
*/
private void processPicker() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean == true) {
switch (type) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
}
}
}
});
} else {
switch (type) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
if (!EasyPermissions.hasPermissions(this, cameraPermissions)) {
EasyPermissions.requestPermissions(this, "拍照需要此权限", 1, cameraPermissions);
return;
}
}
switch (typeCamera) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
}
}
/**
* 上传文件
*
......@@ -308,7 +337,7 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
private void verified(String name, String idCard) {
// strCard ="https://xxtest.upyuns.com/image/app/20190605092021.jpg";
// strCardCopy = "https://xxtest.upyuns.com/image/app/20190605092036.jpg";
mPresenter.postBodyData(RvFrameConfig.VEHICLE_CAR_POST, 1, ApiConfig.HTTP_URL_CERTIFICATE, BaseBean.class, new Verified(name,idCard,0, strCard, strCardCopy), getHeadMap(), true);
mPresenter.postBodyData(RvFrameConfig.VEHICLE_CAR_POST, 1, ApiConfig.HTTP_URL_CERTIFICATE, BaseBean.class, new Verified(name, idCard, 0, strCard, strCardCopy), getHeadMap(), true);
}
......@@ -319,6 +348,19 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
return headMap;
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
processPicker();
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).build().show();
}
}
private class Verified {
private String name;
......
......@@ -62,23 +62,23 @@ public class AddAVisitorActivity extends BaseStatusActivity<CommonPresenter> {
@Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
TravelerListBean.DataBean dataBean = (TravelerListBean.DataBean) intent.getSerializableExtra("bean");
if (dataBean !=null){
if (dataBean != null) {
titleView.setTitle("编辑出游人");
avisitorId = dataBean.getId();
identityType = dataBean.getIsChild();
sexType = dataBean.getSex();
if (0== dataBean.getIsChild()){
if (0 == dataBean.getIsChild()) {
cbAdult.setChecked(true);
cbChild.setChecked(false);
}else{
} else {
cbAdult.setChecked(false);
cbChild.setChecked(true);
}
if (0 == dataBean.getSex()){
if (0 == dataBean.getSex()) {
cbMan.setChecked(false);
cbGirl.setChecked(true);
}else {
} else {
cbMan.setChecked(true);
cbGirl.setChecked(false);
}
......@@ -86,7 +86,7 @@ public class AddAVisitorActivity extends BaseStatusActivity<CommonPresenter> {
etIdCard.setText(dataBean.getIdCard());
etPhone.setText(dataBean.getPhone());
}else {
} else {
titleView.setTitle(getString(R.string.add_a_visitor_title));
}
......@@ -96,23 +96,25 @@ public class AddAVisitorActivity extends BaseStatusActivity<CommonPresenter> {
@Override
public void onClick(View v) {
String name = etTravelerName.getText().toString().trim();
if (TextUtil.isEmpty(name)){
if (TextUtil.isEmpty(name)) {
showToast("姓名不能为空!");
return;
}
String idCard = etIdCard.getText().toString().trim();
if (TextUtil.isEmpty(idCard)){
showToast("身份证号不能为空!");
return;
}
String phone = etPhone.getText().toString().trim();
if (TextUtil.isEmpty(phone)){
showToast("手机号码不能为空!");
return;
String idCard = null, phone = null;
if (identityType == 0) {
idCard = etIdCard.getText().toString().trim();
if (TextUtil.isEmpty(idCard)) {
showToast("身份证号不能为空!");
return;
}
phone = etPhone.getText().toString().trim();
if (TextUtil.isEmpty(phone)) {
showToast("手机号码不能为空!");
return;
}
}
addAVisitor(name,idCard,phone);
addAVisitor(name, idCard, phone);
}
});
}
......@@ -152,6 +154,7 @@ public class AddAVisitorActivity extends BaseStatusActivity<CommonPresenter> {
/**
* 编辑或修改出游人信息
*
* @param name
* @param idCard
* @param phone
......
......@@ -5,6 +5,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import com.alibaba.android.arouter.facade.annotation.Route;
......@@ -22,7 +23,9 @@ import com.rv.rvmine.adapter.TravelerListAdapter;
import com.rv.rvmine.bean.TravelerListBean;
import com.yuyife.okgo.OkGoUtil;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
......@@ -41,6 +44,8 @@ public class ChooseAVisitorActivity extends BaseStatusActivity<CommonPresenter>
private final int TYPE_REQUEST_EDIT = 2;
private int mPage;
private int countPage;
private int visitorType;
private List<TravelerListBean.DataBean> visitors = new ArrayList<>();
public static Intent getIntent(Context context) {
return new Intent(context, ChooseAVisitorActivity.class);
......@@ -54,6 +59,8 @@ public class ChooseAVisitorActivity extends BaseStatusActivity<CommonPresenter>
@Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
visitorType = intent.getIntExtra("visitorType", -1);
titleView.setTitle("选择出游人");
titleView.setImageResource(R.id.iv_title_right, R.drawable.rv_common_icon_thestaff);
titleView.setChildClickListener(R.id.iv_title_right, new View.OnClickListener() {
......@@ -127,7 +134,21 @@ public class ChooseAVisitorActivity extends BaseStatusActivity<CommonPresenter>
mAdapter.setEmptyView(getEmptyView(recyclerView, -1, "您还没有出游人信息哦"));
return;
}
mAdapter.setNewData(bean.getData());
visitors.clear();
if (visitorType == -1) {
visitors.addAll(bean.getData());
} else {
for (TravelerListBean.DataBean b : bean.getData()) {
if (visitorType == b.getIsChild().intValue()) {
visitors.add(b);
}
}
}
if (visitors.isEmpty()) {
mAdapter.setEmptyView(getEmptyView(recyclerView, -1, "您还没有出游人信息哦"));
} else {
mAdapter.setNewData(visitors);
}
}
}
......@@ -171,7 +171,9 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
mPosition = position;
tourist = (BeanVisitorInformation) adapter.getItem(position);
ARouter.getInstance().build(Constance.ACTIVITY_URL_CHOOSEAVISITOR).navigation(mActivity, 104);
ARouter.getInstance().build(Constance.ACTIVITY_URL_CHOOSEAVISITOR)
.withInt("visitorType", Integer.valueOf(tourist.getIsChild()))
.navigation(mActivity, 104);
}
});
......@@ -248,7 +250,7 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
}
private void setData(BeanConfirmOrder data) {
info = data;
info = data;
tvInsuranceInformation.setText(String.format("¥%1$s%2$s", data.getData().getInsurePrice(), "/人"));
getPayMoney();
}
......@@ -258,26 +260,26 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
OrderPriceDetailBean.ChildrenBean childrenBean1 = new OrderPriceDetailBean.ChildrenBean();
childrenBean1.setKey("成人出游人费用");
childrenBean1.setDetail("¥"+ dataBean.getPrice() +"/人 *"+dataBean.getAdultNum() +"人" );
childrenBean1.setDetail("¥" + dataBean.getPrice() + "/人 *" + dataBean.getAdultNum() + "人");
childrenBean1.setVal("¥" + Integer.valueOf(dataBean.getPrice()) * Integer.valueOf(dataBean.getAdultNum()));
childrenBeanList.add(childrenBean1);
if (childNum >0){
if (childNum > 0) {
OrderPriceDetailBean.ChildrenBean childrenBean2 = new OrderPriceDetailBean.ChildrenBean();
childrenBean2.setKey("儿童出游人费用");
childrenBean2.setDetail("¥"+ dataBean.getChildPrice() +"/人 *"+dataBean.getChildNum() +"人" );
childrenBean2.setDetail("¥" + dataBean.getChildPrice() + "/人 *" + dataBean.getChildNum() + "人");
childrenBean2.setVal("¥" + Integer.valueOf(dataBean.getChildPrice()) * Integer.valueOf(dataBean.getChildNum()));
childrenBeanList.add(childrenBean2);
}
if (isInsuranceType ==1){
if (isInsuranceType == 1) {
long day = DateUtils.compareDateDay(dataBean.getEndTime(), dataBean.getStartTime());
OrderPriceDetailBean.ChildrenBean childrenBean3 = new OrderPriceDetailBean.ChildrenBean();
childrenBean3.setKey("保险费用");
childrenBean3.setDetail("¥"+ info.getData().getInsurePrice() +"/人 *"+ (adultNum+childNum) +"人 *" + day +"天" );
childrenBean3.setVal("¥" + info.getData().getInsurePrice() * (adultNum+childNum) * day);
childrenBean3.setDetail("¥" + info.getData().getInsurePrice() + "/人 *" + (adultNum + childNum) + "人 *" + day + "天");
childrenBean3.setVal("¥" + info.getData().getInsurePrice() * (adultNum + childNum) * day);
childrenBeanList.add(childrenBean3);
tvPaymentAmount.setText(String.format("¥%1$s", price+ (info.getData().getInsurePrice() * (adultNum+childNum) * day)));
}else {
tvPaymentAmount.setText(String.format("¥%1$s", price + (info.getData().getInsurePrice() * (adultNum + childNum) * day)));
} else {
tvPaymentAmount.setText(String.format("¥%1$s", price));
}
......@@ -297,23 +299,22 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
} else if (id == R.id.tv_confirm_order) {
//确认订单
confirmOrder();
}else if (id == R.id.rl_item_notice){
} else if (id == R.id.rl_item_notice) {
ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW)
.withString("title","预订须知")
.withString("url",TourismApi.HTTP_URL_CAR_TYPE_NOTICE)
.withInt("type",14)
.withString("title", "预订须知")
.withString("url", TourismApi.HTTP_URL_CAR_TYPE_NOTICE)
.withInt("type", 14)
.navigation();
}else if (id == R.id.tv_contract){
ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW)
.withString("title","合同协议")
.withString("url",TourismApi.HTTP_URL_CAR_TYPE_NOTICE)
.withInt("type",16)
} else if (id == R.id.tv_contract) {
ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW)
.withString("title", "合同协议")
.withString("url", TourismApi.HTTP_URL_CAR_TYPE_NOTICE)
.withInt("type", 16)
.navigation();
}
}
/**
* 订单支付
*/
......@@ -406,7 +407,7 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
Map<String, Object> headMap = new LinkedHashMap<>();
if (OkGoUtil.getToken() != null)
headMap.put("Authorization", OkGoUtil.getToken());
mPresenter.postBodyData(RvFrameConfig.ADMIN_POST, payType, TourismApi.COMMIT_ORDER, BeanTourOrderResponse.class, new Tourist(etMailbox.getText().toString().trim(), name, phone, dataBean.getEndAddr(), endTime, dataBean.getGoodId(), ids, dataBean.getSpePriceId(), dataBean.getStartAddr(), dataBean.getStartCompanyId(), startTime, dataBean.getSiteId(),isInsuranceType), headMap, true);
mPresenter.postBodyData(RvFrameConfig.ADMIN_POST, payType, TourismApi.COMMIT_ORDER, BeanTourOrderResponse.class, new Tourist(etMailbox.getText().toString().trim(), name, phone, dataBean.getEndAddr(), endTime, dataBean.getGoodId(), ids, dataBean.getSpePriceId(), dataBean.getStartAddr(), dataBean.getStartCompanyId(), startTime, dataBean.getSiteId(), isInsuranceType), headMap, true);
}
......@@ -477,7 +478,6 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
}
private void pay(BeanTourOrderPay data) {
try {
......@@ -520,7 +520,7 @@ public class TravelerConfirmOrderActivity extends BaseStatusActivity<TourismPres
private String siteId;
private int hasInsure;
public Tourist(String contactEmail, String contactMan, String contactPhone, String endAddr, String endTime, String goodId, String tourUserIds, String spePriceId, String startAddr, String startCompanyId, String startTime, String siteId,int hasInsure) {
public Tourist(String contactEmail, String contactMan, String contactPhone, String endAddr, String endTime, String goodId, String tourUserIds, String spePriceId, String startAddr, String startCompanyId, String startTime, String siteId, int hasInsure) {
this.contactEmail = contactEmail;
this.contactMan = contactMan;
this.contactPhone = contactPhone;
......
......@@ -34,4 +34,5 @@ dependencies {
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation project(':component_dialog')
implementation project(':module_home')
implementation project(':module_tourism')
}
......@@ -133,7 +133,7 @@ public class MemberCenterActivity extends BaseStatusActivity<MemberPresenter> {
switch (requestType) {
case 0:
if (adapter == null) {
adapter = new MemberListAdapter(((MemberListBean) result).getData(), memberLevel, freeUseDay,MemberCenterActivity.this, payListener);
adapter = new MemberListAdapter(((MemberListBean) result).getData(), memberLevel, freeUseDay, MemberCenterActivity.this, payListener);
recyclerView.setAdapter(adapter);
} else {
adapter.setDate(((MemberListBean) result).getData());
......@@ -164,10 +164,8 @@ public class MemberCenterActivity extends BaseStatusActivity<MemberPresenter> {
} else if (id == R.id.tv_verified) {
//实名认证
if (!isLogin()) return;
ComponentName componentName = new ComponentName(MemberCenterActivity.this, "com.rv.rvmine.personal.IDCardCertificationActivity");
Intent intent = new Intent();
intent.setComponent(componentName);
startActivityForResult(intent, REQUEST_VERIFIED);
ARouter.getInstance().build(Constance.ACTIVITY_URL_IDCARDCERTIFICATION)
.navigation(this, REQUEST_VERIFIED);
} else if (id == R.id.iv_title) {
finish();
} else if (id == R.id.tv_consume_record) {
......@@ -248,17 +246,17 @@ public class MemberCenterActivity extends BaseStatusActivity<MemberPresenter> {
tvVerified.setVisibility(View.VISIBLE);
if (info != null) {
ivMember.setVisibility(View.VISIBLE);
freeUseDay = info.getRentFreeDays() ;
freeUseDay = info.getRentFreeDays();
if (info.getIsMember() == 0) {
memberLevel = 0;
if (adapter != null) {
adapter.setMemberLevel(memberLevel,freeUseDay);
adapter.setMemberLevel(memberLevel, freeUseDay);
}
ivMember.setImageResource(R.drawable.mycenter_icon_goldmembership_1);
} else {
memberLevel = info.getMemberLevel();
if (adapter != null) {
adapter.setMemberLevel(memberLevel,freeUseDay);
adapter.setMemberLevel(memberLevel, freeUseDay);
}
switch (info.getMemberLevel()) {
case 1:
......
......@@ -21,11 +21,14 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter;
import com.frame.base.url.Constance;
import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.rv.member.R;
import com.rv.member.bean.MemberListBean;
import com.rv.member.view.MemberCardView;
import com.rv.tourism.api.TourismApi;
import java.util.List;
......@@ -118,7 +121,11 @@ public class MemberListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
viewHolder.tv_agreement.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW)
.withString("title", "合同协议")
.withString("url", TourismApi.HTTP_URL_CAR_TYPE_NOTICE)
.withInt("type", 18)
.navigation();
}
});
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp" />
<solid android:color="@color/input_grap" />
</shape>
\ No newline at end of file
......@@ -2,4 +2,5 @@
<resources>
<color name="white">#ffffff</color>
<color name="color_999">#999999</color>
<color name="input_grap">#EEEEEE</color>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment