管灌系统巡查员智能手机App
zuoxiao
2024-01-23 4b6cb6d2a0e48640cfd86ef00eb0ff5f4cddf5a2
地图界面与JS交互相关
我的界面
修改密码界面
11个文件已修改
14个文件已添加
978 ■■■■■ 已修改文件
app/build.gradle 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/BaseActivity.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/js/MyWebViewInterface.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/view/MyWebView.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/view/TitleBar.java 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/bg_fillet_wite.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/btn_blue_bg.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/btn_blue_bg_down.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/btn_blue_bg_up.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ic_gps_navigation.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ic_right.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_change_pass_word.xml 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/custom_titlebar.xml 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_map.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_my.xml 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/ic_head_bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_back.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/dimens.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/styles.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/themes.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -28,25 +28,25 @@
        manifestPlaceholders = [
                JPUSH_PKGNAME : applicationId,
                //JPush 上注册的包名对应的 Appkey.
                JPUSH_APPKEY : "375adbd599ceb9977566b929",
                JPUSH_APPKEY  : "375adbd599ceb9977566b929",
                //暂时填写默认值即可.
                JPUSH_CHANNEL : "developer-default",
                //若不集成厂商通道,可直接跳过以下配置
                MEIZU_APPKEY : "MZ-魅族的APPKEY",
                MEIZU_APPID : "MZ-魅族的APPID",
                XIAOMI_APPID : "MI-小米的APPID",
                MEIZU_APPKEY  : "MZ-魅族的APPKEY",
                MEIZU_APPID   : "MZ-魅族的APPID",
                XIAOMI_APPID  : "MI-小米的APPID",
                XIAOMI_APPKEY : "MI-小米的APPKEY",
                OPPO_APPKEY : "OP-oppo的APPKEY",
                OPPO_APPID : "OP-oppo的APPID",
                OPPO_APPSECRET : "OP-oppo的APPSECRET",
                VIVO_APPKEY : "vivo的APPKEY",
                VIVO_APPID : "vivo的APPID",
                HONOR_APPID : "Honor的APP ID",
                OPPO_APPKEY   : "OP-oppo的APPKEY",
                OPPO_APPID    : "OP-oppo的APPID",
                OPPO_APPSECRET: "OP-oppo的APPSECRET",
                VIVO_APPKEY   : "vivo的APPKEY",
                VIVO_APPID    : "vivo的APPID",
                HONOR_APPID   : "Honor的APP ID",
        ]
        ndk {
            // 设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        }
    }
@@ -113,7 +113,6 @@
    implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.3.7'
//    //推送相关
//    // 此处以JPush 5.0.0 版本为例,5.0.0 版本开始可以自动拉取 JCore 包,无需另外配置
    implementation 'cn.jiguang.sdk:jpush:5.2.2'
@@ -144,4 +143,10 @@
//    apply plugin: 'com.google.gms.google-services'
//    apply plugin: 'com.huawei.agconnect'
    //圆形头像
    implementation 'de.hdodenhof:circleimageview:3.1.0'
}
app/src/main/AndroidManifest.xml
@@ -42,6 +42,7 @@
        android:supportsRtl="true"
        android:theme="@style/Theme.PipIrrApp"
        android:usesCleartextTraffic="true"
        android:hardwareAccelerated="true"
        tools:targetApi="31">
        <!-- 告知 XXPermissions 当前项目已经适配了分区存储特性 -->
        <meta-data
@@ -49,7 +50,7 @@
            android:value="true" />
        <activity
            android:name=".activity.LoginActivity"
            android:name=".activity.MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
@@ -57,7 +58,7 @@
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".activity.MainActivity" />
<!--        <activity android:name=".activity.MainActivity" />-->
        <!-- Required since 5.2.0 -->
        <!-- 新的 tag/alias 接口结果返回需要开发者配置一个自定义的Service -->
        <!-- 3.3.0开始所有事件将通过该类回调 -->
app/src/main/java/com/dayu/pipirrapp/activity/BaseActivity.java
@@ -1,6 +1,14 @@
package com.dayu.pipirrapp.activity;
import android.os.Build;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.dayu.pipirrapp.R;
/**
 * author: zuo
@@ -9,4 +17,14 @@
 * 备注:
 */
public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(getResources().getColor(R.color.title_color));
        }
    }
}
app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
@@ -12,6 +12,7 @@
import com.dayu.pipirrapp.adapter.TabAdapter;
import com.dayu.pipirrapp.databinding.ActivityMainBinding;
import com.dayu.pipirrapp.fragment.BaseFragment;
import com.dayu.pipirrapp.fragment.MainFragment;
import com.dayu.pipirrapp.fragment.MapFragment;
import com.dayu.pipirrapp.fragment.MyFragment;
@@ -23,13 +24,14 @@
/**
 *
 */
public class MainActivity extends AppCompatActivity {
public class MainActivity extends BaseActivity {
    ActivityMainBinding binding;
    List<Fragment> mFragment = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(LayoutInflater.from(this));
        MapFragment mapFragment = new MapFragment();
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -4,6 +4,8 @@
import android.content.Intent;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -19,6 +21,7 @@
import androidx.lifecycle.LifecycleOwner;
import com.dayu.pipirrapp.databinding.FragmentMapBinding;
import com.dayu.pipirrapp.js.MyWebViewInterface;
import com.dayu.pipirrapp.observer.MapFragmenObserver;
import com.dayu.pipirrapp.service.MyLocationService;
import com.dayu.pipirrapp.utils.ToastUtil;
@@ -52,11 +55,12 @@
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = FragmentMapBinding.inflate(inflater, container, false);
        Log.i("MapFragment", "onCreateView");
        mWebView = binding.webView;
        initWebView();
        mWebView.loadUrl("http://192.168.3.178:3002/");
        mWebView.loadUrl("http://192.168.3.178:3000/");
        initView();
        //开启定位
        Intent location = new Intent(this.getActivity(), MyLocationService.class);
@@ -113,18 +117,19 @@
//        LOAD_CACHE_ELSE_NETWORK: 只要本地有,无论是否过期,或者 no-cache,都使用缓存中的数据
//        LOAD_NO_CACHE: 不使用缓存,只从网络获取数据
//        LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
// js 相关
        // js 相关
        webSettings.setJavaScriptEnabled(true); // 支持 js。如果碰到后台无法释放 js 导致耗电,应在 onStop 和 onResume 里分别设成 false 和 true
//        mWebView.addJavascriptInterface(new WebAppInterface(this), "android"); // js 接口
       //        mWebView.addJavascriptInterface(new WebAppInterface(this), "android"); // js 接口
//        webSettings.setPluginsEnabled(true); // 支持插件
// 设置自适应屏幕,两者合用
        //        webSettings.setPluginsEnabled(true); // 支持插件
        // 设置自适应屏幕,两者合用
        webSettings.setUseWideViewPort(true); // 将图片调整到适合 WebView 的大小
        webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
// 缩放操作
        // 缩放操作
        webSettings.setSupportZoom(true); // 支持缩放,默认为 true
        webSettings.setBuiltInZoomControls(true); // 设置内置的缩放控件,若为 false,则该 WebView 不可缩放
        webSettings.setDisplayZoomControls(false); // 隐藏原生的缩放控件
        webSettings.setLoadsImagesAutomatically(true);//预加载
        //webView弹JsAlert
        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
@@ -132,15 +137,26 @@
                return super.onJsAlert(view, url, message, result);
            }
        });
        MyWebViewInterface myWebViewInterface=new MyWebViewInterface(this);
        mWebView.addJavascriptInterface(myWebViewInterface,"Android");
    }
    void initView() {
        binding.flyBtn.setOnClickListener(v -> {
            mWebView.evaluateJavascript("javascript:moveTo(116.399565,39.89432)", value -> {
            mWebView.evaluateJavascript("javascript:locationOverLay(116.399565,39.89432)", value -> {
            });
        });
    }
    public void showWaterIntakeDetail(String data){
        binding.bottomLL.setVisibility(View.VISIBLE);
    }
    public void closeWaterIntakeDetail(){
        binding.bottomLL.setVisibility(View.GONE);
    }
}
app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java
@@ -1,10 +1,34 @@
package com.dayu.pipirrapp.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.dayu.pipirrapp.databinding.FragmentMapBinding;
import com.dayu.pipirrapp.databinding.FragmentMyBinding;
/**
 * author: zuo
 * Date: 2023/12/20
 * Time: 10:16
 * 备注:我的
 */
public class MyFragment extends BaseFragment{
public class MyFragment extends BaseFragment {
    FragmentMyBinding binding;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        binding = FragmentMyBinding.inflate(inflater, container, false);
        return binding.getRoot();
    }
}
app/src/main/java/com/dayu/pipirrapp/js/MyWebViewInterface.java
New file
@@ -0,0 +1,69 @@
package com.dayu.pipirrapp.js;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.webkit.JavascriptInterface;
import com.dayu.pipirrapp.fragment.MapFragment;
import com.dayu.pipirrapp.utils.ToastUtil;
/**
 * author: zuo
 * Date: 2024-01-18
 * Time: 9:14
 * 备注:供Vue调用原生
 */
public class MyWebViewInterface {
    private MapFragment myContext;
    public MyWebViewInterface(MapFragment context) {
        myContext = context;
    }
    @JavascriptInterface
    public void showToast(String msg) {
        ToastUtil.showToastLong(myContext.getContext(), msg);
    }
    /**
     * 显示取水口详情
     * @param data
     */
    @JavascriptInterface
    public void showWaterIntakeView(String data) {
        if (myContext instanceof MapFragment) {
            new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                    // 在主线程上执行UI操作
                    // 更新或操作UI元素的代码
                    myContext.showWaterIntakeDetail(data);
                }
            });
        }
    }
    /**
     * 隐藏取水口详情
     *
     */
    @JavascriptInterface
    public void closeWaterIntakeView() {
        if (myContext instanceof MapFragment) {
            new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                    // 在主线程上执行UI操作
                    // 更新或操作UI元素的代码
                    myContext.closeWaterIntakeDetail();
                }
            });
//            myContext.closeWaterIntakeDetail();
        }
    }
}
app/src/main/java/com/dayu/pipirrapp/view/MyWebView.java
New file
@@ -0,0 +1,20 @@
package com.dayu.pipirrapp.view;
import android.content.Context;
import android.webkit.WebView;
import androidx.annotation.NonNull;
/**
 * author: zuo
 * Date: 2024-01-19
 * Time: 14:26
 * 备注:
 */
public class MyWebView extends WebView {
 public MyWebView(@NonNull Context context) {
  super(context);
 }}
app/src/main/java/com/dayu/pipirrapp/view/TitleBar.java
New file
@@ -0,0 +1,269 @@
/**
 *
 */
package com.dayu.pipirrapp.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.dayu.pipirrapp.R;
/***
 * 标题视图
 *
 * @author shisl
 * @time 2015-4-29
 */
public class TitleBar extends LinearLayout {
    private static final String TAG = "CNavigationBar";
    public static final int LEFT = 0;
    public static final int CENTER = 1;
    public static final int RIGHT = 2;
    public static final int IMAGE = 3;
    public static final int TEXT = 4;
    public static final int ClickType_LEFT_TEXT = 1;
    public static final int ClickType_LEFT_IMAGE = 2;
    public static final int ClickType_CENTER_TEXT = 3;
    public static final int ClickType_CENTER_IMAGE = 4;
    public static final int ClickType_RIGHT_TEXT = 5;
    public static final int ClickType_RIGHT_IMAGE = 6;
    private TextView tvLeft;
    private ImageView ivLeft;
    private LinearLayout llLeft;
    private ImageButton ibCenter;
    private TextView btnCenter;
    private TextView tvRight;
    private ImageView ivRight;
    private LinearLayout llRight;
    public TitleBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs);
        initView(context);
    }
    /**
     * 初始化我们自定义的组合控件
     */
    private void initView(Context context) {
        // 转化布局文件————>View对象,这个view对象直接挂载在自己(组合控件)身上
        View.inflate(context, R.layout.custom_titlebar, this); // this代表挂载到自己身上
        tvLeft = (TextView) this.findViewById(R.id.tv_titlebar_left);
        btnCenter = (TextView) this.findViewById(R.id.btn_titlebar_center);
        tvRight = (TextView) this.findViewById(R.id.tv_titlebar_right);
        ivLeft = (ImageView) this.findViewById(R.id.iv_titlebar_left);
        ibCenter = (ImageButton) this.findViewById(R.id.ib_titlebar_center);
        ivRight = (ImageView) this.findViewById(R.id.iv_titlebar_right);
        llLeft = (LinearLayout) this.findViewById(R.id.ll_left);
        llRight = (LinearLayout) this.findViewById(R.id.ll_right);
    }
    public TitleBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
        try {
            /**
             * 跟values/attrs.xml里面定义的属性绑定
             */
            // 从attrs.xml获取自定义的控件属性
            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TitleBar);
            // //从attrs.xml获取自定义的value属性(控件属性名称+“_” + 自定义的属性名称)
            String leftText = a.getString(R.styleable.TitleBar_leftText);
            int leftImage = a.getResourceId(R.styleable.TitleBar_leftImage, 0);
            String centerText = a.getString(R.styleable.TitleBar_centerText);
            int centerImage = a.getResourceId(R.styleable.TitleBar_centerImage, 0);
            String rightText = a.getString(R.styleable.TitleBar_rightText);
            int rightImage = a.getResourceId(R.styleable.TitleBar_rightImage, 0);
            a.recycle();
            setLeftText(leftText);
            setRightText(rightText);
            setCenterText(centerText);
            setLeftImage(leftImage);
            setRightImage(rightImage);
            setCenterImage(centerImage);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Deprecated
    public void setOnItemclickListner(int type, int aligh, OnClickListener listner) {
        if (listner == null) {
            return;
        }
        if (type == TEXT) {
            switch (aligh) {
                case LEFT:
                    setOnItemclickListner(ClickType_LEFT_TEXT, listner);
                    break;
                case CENTER:
                    setOnItemclickListner(ClickType_CENTER_TEXT, listner);
                    break;
                case RIGHT:
                    setOnItemclickListner(ClickType_RIGHT_TEXT, listner);
                    break;
                default:
                    break;
            }
        } else if (type == IMAGE) {
            switch (aligh) {
                case LEFT:
                    setOnItemclickListner(ClickType_LEFT_IMAGE, listner);
                    break;
                case CENTER:
                    setOnItemclickListner(ClickType_CENTER_IMAGE, listner);
                    break;
                case RIGHT:
                    setOnItemclickListner(ClickType_RIGHT_IMAGE, listner);
                    break;
                default:
                    break;
            }
        }
    }
    public void setOnItemclickListner(int clickType, OnClickListener listner) {
        try {
            switch (clickType) {
                case ClickType_LEFT_TEXT:
                    if (tvLeft.getVisibility() == View.VISIBLE) {
                        llLeft.setOnClickListener(listner);
                    }
                    break;
                case ClickType_LEFT_IMAGE:
                    if (ivLeft.getVisibility() == View.VISIBLE) {
                        llLeft.setOnClickListener(listner);
                    }
                    break;
                case ClickType_CENTER_TEXT:
                    if (btnCenter.getVisibility() == View.VISIBLE) {
                        btnCenter.setOnClickListener(listner);
                    }
                    break;
                case ClickType_CENTER_IMAGE:
                    if (ibCenter.getVisibility() == View.VISIBLE) {
                        ibCenter.setOnClickListener(listner);
                    }
                    break;
                case ClickType_RIGHT_TEXT:
                    if (tvRight.getVisibility() == View.VISIBLE) {
                        llRight.setOnClickListener(listner);
                    } else {
                        llRight.setOnClickListener(null);
                    }
                    break;
                case ClickType_RIGHT_IMAGE:
                    if (ivRight.getVisibility() == View.VISIBLE) {
                        llRight.setOnClickListener(listner);
                    }
                    break;
                default:
                    break;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void setLeftImage(int leftImage) {
        if (leftImage == 0) {
            ivLeft.setVisibility(View.GONE);
            return;
        }
        ivLeft.setVisibility(View.VISIBLE);
        ivLeft.setImageResource(leftImage);
    }
    public void setRightImage(int rightImage) {
        if (rightImage == 0) {
            ivRight.setVisibility(View.GONE);
            return;
        }
        ivRight.setVisibility(View.VISIBLE);
        ivRight.setImageResource(rightImage);
    }
    private void setCenterImage(int leftImage) {
        if (leftImage == 0) {
            return;
        }
        ivLeft.setBackgroundResource(leftImage);
    }
    public void setLeftText(String leftText) {
        if (leftText == null) {
            return;
        }
        tvLeft.setVisibility(View.VISIBLE);
        Log.i(TAG, "leftText--->" + leftText);
        tvLeft.setText(leftText);
    }
    public void setRightText(String rightText) {
        if (rightText == null) {
            return;
        }
        tvRight.setVisibility(View.VISIBLE);
        llRight.setVisibility(View.VISIBLE);
        tvRight.setText(rightText);
    }
    public void setCenterText(String centerText) {
        if (centerText == null) {
            return;
        }
        btnCenter.setVisibility(View.VISIBLE);
        Log.i(TAG, "centerText--->" + centerText);
        btnCenter.setText(centerText);
    }
    public void setRightStatus(boolean isable) {
        tvRight.setEnabled(isable);
        ivRight.setEnabled(isable);
        llRight.setEnabled(isable);
    }
    public void setRightIMGVisibility(int Visibility) {
        ivRight.setVisibility(Visibility);
    }
    public TextView getTitleTextView() {
        return btnCenter;
    }
    public LinearLayout getLlRight() {
        return llRight;
    }
}
app/src/main/res/drawable/bg_fillet_wite.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/white" />
    <corners android:radius="5dp" />
    <stroke
        android:width="1dp"
        android:color="@color/white" />
</shape>
app/src/main/res/drawable/btn_blue_bg.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_blue_bg_up" android:state_pressed="true" />
    <item android:drawable="@drawable/btn_blue_bg_down" />
</selector>
app/src/main/res/drawable/btn_blue_bg_down.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/base_blue" />
    <corners android:radius="90dp" />
    <stroke
        android:width="1dp"
        android:color="@color/base_blue" />
</shape>
app/src/main/res/drawable/btn_blue_bg_up.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/down_blue" />
    <corners android:radius="90dp" />
    <stroke
        android:width="1dp"
        android:color="@color/down_blue" />
</shape>
app/src/main/res/drawable/ic_gps_navigation.xml
New file
@@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="31dp"
    android:height="31dp"
    android:viewportWidth="48"
    android:viewportHeight="48">
  <path
      android:pathData="M24,44C35.046,44 44,35.046 44,24C44,12.954 35.046,4 24,4C12.954,4 4,12.954 4,24C4,35.046 12.954,44 24,44Z"
      android:strokeLineJoin="round"
      android:strokeWidth="4"
      android:fillColor="#1890FF"
      android:fillType="evenOdd"
      android:strokeColor="#1890FF"
      android:strokeLineCap="round"/>
  <path
      android:pathData="M24,13L17,34L24,29L31,34L24,13Z"
      android:strokeLineJoin="round"
      android:strokeWidth="4"
      android:fillColor="#FFF"
      android:strokeColor="#FFF"
      android:strokeLineCap="round"/>
</vector>
app/src/main/res/drawable/ic_right.xml
New file
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="31dp"
    android:height="31dp"
    android:viewportWidth="48"
    android:viewportHeight="48">
  <path
      android:pathData="M19,12L31,24L19,36"
      android:strokeLineJoin="round"
      android:strokeWidth="4"
      android:fillColor="#00000000"
      android:strokeColor="#757575"
      android:strokeLineCap="round"/>
</vector>
app/src/main/res/layout/activity_change_pass_word.xml
New file
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bg_color"
    android:orientation="vertical">
    <com.dayu.pipirrapp.view.TitleBar
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_alignParentTop="true"
        app:centerText="修改密码" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:background="@color/white"
        android:hint="请输入旧密码"
        android:paddingLeft="20dp"
        android:paddingRight="20dp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/grey"
        />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:background="@color/white"
        android:hint="请输入新密码"
        android:paddingLeft="20dp"
        android:paddingRight="20dp" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:layout_marginTop="1dp"
        android:background="@color/white"
        android:hint="再次输入新密码"
        android:paddingLeft="20dp"
        android:paddingRight="20dp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:background="@drawable/ic_blue_background"
        android:gravity="center"
        android:layout_marginRight="40dp"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="100dp"
        android:text="修   改"
        android:textColor="@color/white"
        android:textSize="@dimen/common_btn_text_size" />
</LinearLayout>
app/src/main/res/layout/custom_titlebar.xml
New file
@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/woa_main_layout"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:background="@color/title_color"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@null"
        android:gravity="center_vertical"
        android:orientation="horizontal">
        <!-- 左边 -->
        <LinearLayout
            android:id="@+id/ll_left"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:background="@null"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <ImageView
                android:id="@+id/iv_titlebar_left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@null"
                android:paddingLeft="5dp"
                android:paddingTop="14dp"
                android:paddingRight="10dp"
                android:paddingBottom="14dp"
                android:src="@mipmap/icon_back"
                android:visibility="visible" />
            <TextView
                android:id="@+id/tv_titlebar_left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="1dp"
                android:text=""
                android:textSize="15sp"
                android:visibility="gone" />
        </LinearLayout>
        <!-- 中间 -->
        <LinearLayout
            android:id="@+id/ll_center"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="8"
            android:background="@null"
            android:gravity="center"
            android:orientation="horizontal">
            <ImageButton
                android:id="@+id/ib_titlebar_center"
                android:layout_width="30dp"
                android:layout_height="fill_parent"
                android:visibility="gone" />
            <Button
                android:id="@+id/btn_titlebar_center"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:background="@android:color/transparent"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="标题"
                android:textColor="#ffffff"
                android:textSize="20sp"
                android:visibility="visible" />
        </LinearLayout>
        <!-- 右边 -->
        <LinearLayout
            android:id="@+id/ll_right"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="2"
            android:background="@null"
            android:gravity="center_vertical|right"
            android:orientation="horizontal"
            android:paddingRight="15dp">
            <TextView
                android:id="@+id/tv_titlebar_right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"
                android:text="完成"
                android:textColor="#333333"
                android:textSize="20sp"
                android:visibility="gone" />
            <ImageView
                android:id="@+id/iv_titlebar_right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"
                android:src="@null"
                android:visibility="visible" />
        </LinearLayout>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="#e5e5e5" />
</LinearLayout>
app/src/main/res/layout/fragment_map.xml
@@ -16,4 +16,49 @@
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="跳转到指定位置" />
    <LinearLayout
        android:visibility="gone"
        android:id="@+id/bottomLL"
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:layout_alignParentBottom="true"
        android:background="@color/white"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical"
            android:padding="10dp">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="取水口"
                android:textColor="@color/black" />
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="取水口位置"
                android:textColor="@color/black" />
        </LinearLayout>
        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_gravity="center"
            android:layout_marginRight="20dp"
            android:padding="10dp"
            android:src="@drawable/ic_gps_navigation" />
    </LinearLayout>
</RelativeLayout>
app/src/main/res/layout/fragment_my.xml
@@ -1,6 +1,185 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout 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:layout_width="match_parent"
    android:layout_height="match_parent">
    android:layout_height="match_parent"
    android:background="@color/bg_color">
</androidx.constraintlayout.widget.ConstraintLayout>
    <com.dayu.pipirrapp.view.TitleBar
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_alignParentTop="true"
        app:centerText="个人中心" />
    <View
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_below="@+id/title"
        android:background="@color/title_color" />
    <RelativeLayout
        android:id="@+id/headRL_top"
        android:layout_width="match_parent"
        android:layout_height="190dp"
        android:layout_below="@+id/title"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginBottom="15dp"
        android:background="@drawable/bg_fillet_wite"
        >
        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/head_img"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="15dp"
            android:src="@mipmap/ic_head_bg"
            app:civ_border_color="#FFFFFF"
            app:civ_border_width="2dp"
            tools:ignore="MissingClass" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_toEndOf="@+id/head_img"
            android:gravity="center"
            android:orientation="vertical">
            <TextView
                android:id="@+id/name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="姓名"
                android:textColor="@color/black" />
            <TextView
                android:id="@+id/phone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:text="18311594524"
                android:textColor="@color/grey" />
        </LinearLayout>
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/headRL"
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:layout_below="@+id/headRL_top">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="@dimen/item_height"
            android:background="@color/white"
            android:gravity="center_vertical"
            android:paddingLeft="30dp"
            android:text="头像"
            android:textColor="@color/black"
            android:textSize="@dimen/my_item_text_size" />
        <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="15dp"
            android:src="@drawable/ic_right" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/versionRL"
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:layout_below="@+id/headRL"
        android:layout_marginTop="1dp">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="@dimen/item_height"
            android:background="@color/white"
            android:gravity="center_vertical"
            android:paddingLeft="30dp"
            android:text="当前版本"
            android:textColor="@color/black"
            android:textSize="@dimen/my_item_text_size" />
        <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="15dp"
            android:src="@drawable/ic_right" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/passwordRL"
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:layout_below="@+id/versionRL"
        android:layout_marginTop="1dp">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="@dimen/item_height"
            android:background="@color/white"
            android:gravity="center_vertical"
            android:paddingLeft="30dp"
            android:text="修改密码"
            android:textColor="@color/black"
            android:textSize="@dimen/my_item_text_size" />
        <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="15dp"
            android:src="@drawable/ic_right" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/loginOutRL"
        android:layout_width="match_parent"
        android:layout_height="@dimen/item_height"
        android:layout_below="@+id/passwordRL"
        android:layout_marginTop="1dp">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="@dimen/item_height"
            android:background="@color/white"
            android:gravity="center_vertical"
            android:paddingLeft="30dp"
            android:text="退出登录"
            android:textColor="@color/black"
            android:textSize="@dimen/my_item_text_size" />
        <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="15dp"
            android:src="@drawable/ic_right" />
    </RelativeLayout>
</RelativeLayout>
app/src/main/res/mipmap-xhdpi/ic_head_bg.jpg
app/src/main/res/mipmap-xhdpi/icon_back.png
app/src/main/res/values/colors.xml
@@ -2,8 +2,10 @@
<resources>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="base_blue">#3C9CFF</color>
    <color name="base_blue">#1890FF</color>
    <color name="down_blue">#3a68fc</color>
    <color name="ws_pay_alpha">#00000000</color>
    <color name="title_color">#3a68fc</color>
    <color name="title_color">#1890FF</color>
    <color name="bg_color">#F5F5F5</color>
    <color name="grey">#757575</color>
</resources>
app/src/main/res/values/dimens.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="item_height">50dp</dimen>
    <dimen name="my_item_text_size">17sp</dimen>
    <dimen name="common_btn_text_size">20sp</dimen>
</resources>
app/src/main/res/values/styles.xml
@@ -15,5 +15,13 @@
    <!-- 标题导航条 -->
    <declare-styleable name="TitleBar">
        <attr name="leftText" format="string" />
        <attr name="centerText" format="string" />
        <attr name="rightText" format="string" />
        <attr name="leftImage" format="integer"></attr>
        <attr name="centerImage" format="integer"></attr>
        <attr name="rightImage" format="integer"></attr>
    </declare-styleable>
</resources>
app/src/main/res/values/themes.xml
@@ -3,7 +3,7 @@
    <style name="Theme.PipIrrApp" parent="Theme.AppCompat.Light.NoActionBar" >
        <item name="android:windowAnimationStyle">@null</item>
    </style>
</resources>