From be9bea2335d4e4617844a1603aa624098c84b2a2 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期二, 15 十月 2024 13:55:00 +0800 Subject: [PATCH] 1、退出登录 2.显示当前版本号 3.删除缓存 4.地图相关 --- app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java | 15 app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java | 58 +++ app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | 3 app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java | 68 ++++ app/src/main/AndroidManifest.xml | 41 +- app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java | 54 ++++ app/src/main/res/layout/activity_splash_screen.xml | 29 ++ app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java | 3 app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java | 1 app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java | 47 +++ app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java | 15 + app/src/main/res/layout/fragment_map.xml | 45 ++ app/src/main/assets/index.html | 44 +- app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java | 68 ++++- app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java | 5 app/src/main/res/layout/fragment_my.xml | 88 ++++-- app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 138 ++++++++-- app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java | 33 ++ 18 files changed, 612 insertions(+), 143 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fa15b03..c02d4b9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,26 +2,22 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.dayu.pipirrapp"> - <!--鍏佽璁块棶缃戠粶锛屽繀閫夋潈闄�--> - <uses-permission android:name="android.permission.INTERNET" /> - - <!--鐢ㄤ簬杩涜缃戠粶瀹氫綅--> - <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--鐢ㄤ簬璁块棶GPS瀹氫綅--> - <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--鐢ㄤ簬鑾峰彇杩愯惀鍟嗕俊鎭紝鐢ㄤ簬鏀寔鎻愪緵杩愯惀鍟嗕俊鎭浉鍏崇殑鎺ュ彛--> - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--鐢ㄤ簬璁块棶wifi缃戠粶淇℃伅锛寃ifi淇℃伅浼氱敤浜庤繘琛岀綉缁滃畾浣�--> - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--鐢ㄤ簬鑾峰彇wifi鐨勮幏鍙栨潈闄愶紝wifi淇℃伅浼氱敤鏉ヨ繘琛岀綉缁滃畾浣�--> - <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> + <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!--鐢ㄤ簬璁块棶缃戠粶锛岀綉缁滃畾浣嶉渶瑕佷笂缃�--> - <uses-permission android:name="android.permission.INTERNET"></uses-permission> + <uses-permission android:name="android.permission.INTERNET" /> <!--鐢ㄤ簬鍐欏叆缂撳瓨鏁版嵁鍒版墿灞曞瓨鍌ㄥ崱--> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--鐢ㄤ簬鐢宠璋冪敤A-GPS妯″潡--> - <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> + <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!--濡傛灉璁剧疆浜唗arget >= 28 濡傛灉闇�瑕佸惎鍔ㄥ悗鍙板畾浣嶅垯蹇呴』澹版槑杩欎釜鏉冮檺--> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!--濡傛灉鎮ㄧ殑搴旂敤闇�瑕佸悗鍙板畾浣嶆潈闄愶紝涓旀湁鍙兘杩愯鍦ˋndroid Q璁惧涓�,骞朵笖璁剧疆浜唗arget>28锛屽繀椤诲鍔犺繖涓潈闄愬0鏄�--> @@ -30,8 +26,6 @@ <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" tools:ignore="MockLocation,ProtectedPermissions" /> - <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> - <application android:name=".MyApplication" @@ -51,15 +45,9 @@ android:name="ScopedStorage" android:value="true" /> - <activity - android:name=".activity.MainActivity" - android:exported="true" - android:launchMode="singleTop"> - </activity> - <activity android:name=".activity.ChangePSActivity" /> <activity - android:name=".activity.LoginActivity" + android:name=".activity.SplashScreenActivity" android:exported="true" android:launchMode="singleTop"> <intent-filter> @@ -67,6 +55,17 @@ <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + <activity + android:name=".activity.MainActivity" + android:exported="true" + android:launchMode="singleTop"></activity> + <activity android:name=".activity.ChangePSActivity" /> + <activity + android:name=".activity.LoginActivity" + android:exported="true" + android:launchMode="singleTop"> + + </activity> <!-- <activity android:name=".activity.MainActivity" />--> <!-- Required since 5.2.0 --> <!-- 鏂扮殑 tag/alias 鎺ュ彛缁撴灉杩斿洖闇�瑕佸紑鍙戣�呴厤缃竴涓嚜瀹氫箟鐨凷ervice --> diff --git a/app/src/main/assets/index.html b/app/src/main/assets/index.html index 69d3cf5..2032c9b 100644 --- a/app/src/main/assets/index.html +++ b/app/src/main/assets/index.html @@ -4,32 +4,36 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>澶╁湴鍥�</title> + <title>Map Example</title> <style> - /* 纭繚 body 鍜� html 鍏呮弧鏁翠釜瑙嗗彛 */ + /* 纭繚 body 鍜� html 鍏呮弧鏁翠釜瑙嗗彛 */ html, body { - margin: 0; - padding: 0; - width: 100%; - height: 100%; - overflow: hidden; /* 闃叉婊氬姩鏉″嚭鐜� */ - } - /* 纭繚鍦板浘瀹瑰櫒鍏呮弧鏁翠釜瑙嗗彛 */ - #mapDiv { - width: 100%; - height: 100%; - position: absolute; /* 淇濊瘉鍦板浘鍏ㄥ睆 */ - top: 0; - left: 0; - } + margin: 0; + padding: 0; + width: 100%; + height: 100%; + overflow: hidden; /* 闃叉婊氬姩鏉″嚭鐜� */ + } + /* 纭繚鍦板浘瀹瑰櫒鍏呮弧鏁翠釜瑙嗗彛 */ + #mapDiv { + width: 100%; + height: 100%; + position: absolute; /* 淇濊瘉鍦板浘鍏ㄥ睆 */ + top: 0; + left: 0; + } </style> - <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=d8beed89b43160a9a185e5aff431f85d" - type="text/javascript"></script> + <!-- 寮曠敤鏈湴鐨勫ぉ鍦板浘 JS 鏂囦欢 --> + <script src="js/tianditu.js"></script> + <!-- <script src="http://api.tianditu.gov.cn/api?v=4.0&tk=d8beed89b43160a9a185e5aff431f85d" + type="text/javascript"></script> --> </head> <body> - <div id="mapDiv"></div> - <script src="js/map.js"></script> +<div id="mapDiv"></div> + +<script src="js/map.js"></script> + </body> </html> \ No newline at end of file diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java index 5adb68e..eea278f 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java @@ -8,7 +8,6 @@ import android.os.Bundle; import android.os.PersistableBundle; import android.text.InputType; -import android.text.TextUtils; import android.util.Base64; import android.util.Log; import android.view.LayoutInflater; @@ -26,7 +25,6 @@ import com.dayu.pipirrapp.databinding.ActivityLoginBinding; import com.dayu.pipirrapp.net.ApiManager; import com.dayu.pipirrapp.net.BaseResponse; -import com.dayu.pipirrapp.net.subscribers.CodeListener; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.observer.LoginObserver; import com.dayu.pipirrapp.utils.CommonData; @@ -138,13 +136,15 @@ private void getCode() { Map<String, Object> data = new HashMap<>(); data.put("type", "math");//鍥剧墖绫诲瀷锛歝har-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮� - ApiManager.getInstance().getCode(data, new CodeListener() { + + + ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + ":8088/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() { @Override - public void onNext(CodeResult body) { + public void onNext(BaseResponse<CodeResult> t) { try { - if (body != null && !TextUtils.isEmpty(body.getBase64())) { - String encodedString = body.getBase64(); - codeToken = body.getToken(); + if (t.isSuccess()) { + String encodedString = t.getContent().getBase64(); + codeToken = t.getContent().getToken(); // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅 encodedString = encodedString.substring("data:image/png;base64,".length()); // 瀵笲ase64瀛楃涓茶繘琛岃В鐮� @@ -159,17 +159,48 @@ binding.codeError.setVisibility(View.VISIBLE); ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�"); } + } catch (Exception e) { e.printStackTrace(); CrashReport.postCatchedException(e); } - } - - @Override - public void error(Throwable throwable) { } }); + + +// ApiManager.getInstance().getCode(data, new CodeListener() { +// @Override +// public void onNext(CodeResult body) { +// try { +// if (body != null && !TextUtils.isEmpty(body.getBase64())) { +// String encodedString = body.getBase64(); +// codeToken = body.getToken(); +// // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅 +// encodedString = encodedString.substring("data:image/png;base64,".length()); +// // 瀵笲ase64瀛楃涓茶繘琛岃В鐮� +// byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT); +// // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄 +// Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); +// binding.codeImg.setImageBitmap(image); +// binding.codeImg.setVisibility(View.VISIBLE); +// binding.codeError.setVisibility(View.GONE); +// } else { +// binding.codeImg.setVisibility(View.INVISIBLE); +// binding.codeError.setVisibility(View.VISIBLE); +// ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// CrashReport.postCatchedException(e); +// } +// } +// +// @Override +// public void error(Throwable throwable) { +// +// } +// }); } private void login(String phone, String pw, String token, String code) { @@ -195,11 +226,9 @@ } loginBean.setName(t.getContent().getName()); loginBean.setPhone(t.getContent().getPhone()); - DaoSingleton.getInstance(LoginActivity.this).loginDao().update(loginBean); + DaoSingleton.getInstance(LoginActivity.this).loginDao().insert(loginBean); SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonData.isShowCode, false); - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); - LoginActivity.this.finish(); + startMainActivity(); } else { ToastUtil.showToast(LoginActivity.this, t.getMsg()); loginError++; @@ -219,6 +248,15 @@ }); } + /** + * 鍚姩MainActivity + */ + private void startMainActivity() { + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + LoginActivity.this.finish(); + } + @Override protected void onStart() { super.onStart(); diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java new file mode 100644 index 0000000..a08a729 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/activity/SplashScreenActivity.java @@ -0,0 +1,54 @@ +package com.dayu.pipirrapp.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.text.TextUtils; +import android.view.LayoutInflater; + +import androidx.annotation.Nullable; + +import com.dayu.pipirrapp.MyApplication; +import com.dayu.pipirrapp.bean.db.LoginBean; +import com.dayu.pipirrapp.dao.DaoSingleton; +import com.dayu.pipirrapp.databinding.ActivitySplashScreenBinding; +import com.dayu.pipirrapp.utils.CommonData; +import com.dayu.pipirrapp.utils.SharedPreferencesHelper; + +/** + * author: zuo + * Date: 2024-10-09 + * Time: 15:19 + * 澶囨敞锛� + */ +public class SplashScreenActivity extends BaseActivity { + ActivitySplashScreenBinding binding; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivitySplashScreenBinding.inflate(LayoutInflater.from(this)); + setContentView(binding.getRoot()); + new Handler().postDelayed(() -> { + LoginBean loginBean = DaoSingleton.getInstance(SplashScreenActivity.this).loginDao().findFirst(); + String token = SharedPreferencesHelper.getInstance(SplashScreenActivity.this).get(CommonData.Token, ""); + if (loginBean != null && !TextUtils.isEmpty(token)) { + startMainActivity(); + MyApplication.myApplication.token = token; + } else { + startLoginActivity(); + } + SplashScreenActivity.this.finish(); + }, 1000); + } + + private void startMainActivity() { + Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); + startActivity(intent); + } + + private void startLoginActivity() { + Intent intent = new Intent(SplashScreenActivity.this, LoginActivity.class); + startActivity(intent); + } +} diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java index e631c84..3eb21c3 100644 --- a/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java +++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/LoginBean.java @@ -19,6 +19,7 @@ public String phone; + public String getName() { return name; } diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java b/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java index e259685..04913c0 100644 --- a/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java +++ b/app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java @@ -1,5 +1,6 @@ package com.dayu.pipirrapp.bean.db; +import androidx.annotation.Nullable; import androidx.room.Entity; import androidx.room.PrimaryKey; @@ -12,19 +13,29 @@ @Entity public class MarkerBean { @PrimaryKey(autoGenerate = true) - public long id; - + public long localid; + @Nullable String blockId; + @Nullable String deleted;//閫昏緫鍒犻櫎鏍囪瘑 + @Nullable String divideId;//string + String lat;//缁忓害 String lng;//绾害 + @Nullable String name;//鍙栨按鍙e悕绉� + @Nullable String operateDt;//鎿嶄綔鏃堕棿 + @Nullable String operator;//鎿嶄綔浜虹紪鍙� + @Nullable String remarks;//澶囨敞 + @Nullable String townId;//鎵�鍦ㄩ晣缂栧彿 + @Nullable String villageId;//鎵�鍦ㄦ潙缂栧彿 + @Nullable String countyId;//鎵�鍦ㄥ幙缂栧彿 public String getBlockId() { diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java b/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java index 036eb0d..0fabe10 100644 --- a/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java +++ b/app/src/main/java/com/dayu/pipirrapp/dao/AppDatabase.java @@ -5,6 +5,7 @@ import com.dayu.pipirrapp.bean.db.CenterPointBean; import com.dayu.pipirrapp.bean.db.LoginBean; +import com.dayu.pipirrapp.bean.db.MarkerBean; import com.dayu.pipirrapp.bean.db.TagBean; @@ -15,7 +16,7 @@ * Date: 2023-11-05 16:23 * Description: */ -@Database(entities = {TagBean.class, LoginBean.class, CenterPointBean.class}, version = 1, exportSchema = false) +@Database(entities = {TagBean.class, LoginBean.class, CenterPointBean.class, MarkerBean.class}, version = 1, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { @@ -25,4 +26,6 @@ public abstract CenterPointDao centerPointDao(); + public abstract MarkerDao markerDao(); + } diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java b/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java index c82de1c..225ea44 100644 --- a/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java +++ b/app/src/main/java/com/dayu/pipirrapp/dao/DaoSingleton.java @@ -3,6 +3,7 @@ import android.content.Context; import androidx.room.Room; +import androidx.room.RoomDatabase; import java.io.File; @@ -15,17 +16,19 @@ public class DaoSingleton { public static AppDatabase baseDao; public static AppDatabase AsynchBaseDao; - public static String SqlitePath = File.separator + "dbdata"; + public static String name = "dayu_data"; //MyFileUtil.SqlitePath + public static AppDatabase getInstance(Context context) { if (baseDao == null) { baseDao = Room.databaseBuilder( - context, - AppDatabase.class, - "dayu_data" - ).allowMainThreadQueries().build(); + context, + AppDatabase.class, + name + ).allowMainThreadQueries() + .setJournalMode(RoomDatabase.JournalMode.TRUNCATE) // 鍙�夛紝璁剧疆鏃ュ織妯″紡 + .build(); } return baseDao; } @@ -36,7 +39,7 @@ AsynchBaseDao = Room.databaseBuilder( context, AppDatabase.class, - "dayu_data" + name ).build(); } return AsynchBaseDao; diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java index 4a230fb..1d393e8 100644 --- a/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java +++ b/app/src/main/java/com/dayu/pipirrapp/dao/LoginDao.java @@ -26,6 +26,9 @@ @Delete void delete(LoginBean loginBean); + @Query("DELETE FROM LoginBean") + void deleteAll(); + @Query("select * from LoginBean limit 1") LoginBean findFirst(); } diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java new file mode 100644 index 0000000..7bae65a --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java @@ -0,0 +1,47 @@ +package com.dayu.pipirrapp.dao; + +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; +import androidx.room.Update; + +import com.dayu.pipirrapp.bean.db.MarkerBean; + +import java.util.List; + +import io.reactivex.rxjava3.core.Completable; + +/** + * author: zuo + * Date: 2024-09-30 + * Time: 14:39 + * 澶囨敞锛� + */ +@Dao +public interface MarkerDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(MarkerBean markerBean); + + @Insert(onConflict = OnConflictStrategy.REPLACE) + Completable insertAll(List<MarkerBean> markerBeans); // 浣跨敤 Completable 杩涜寮傛鎻掑叆 + +// @Insert(onConflict = OnConflictStrategy.REPLACE) +// void insertAll(List<MarkerBean> markerBeans); // 浣跨敤 Completable 杩涜寮傛鎻掑叆 + + @Update + void update(MarkerBean markerBean); + + @Delete + void delete(MarkerBean markerBean); + + @Query("DELETE FROM MarkerBean") + void deleteAll(); + + @Query("select * from MarkerBean limit 1") + MarkerBean findFirst(); + + @Query("select * from MarkerBean") + List<MarkerBean> findAll(); +} diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java index 7c122e4..39d32d5 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -1,7 +1,9 @@ package com.dayu.pipirrapp.fragment; import android.content.Context; +import android.content.Intent; import android.location.LocationManager; +import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -18,6 +20,7 @@ import androidx.annotation.Nullable; import com.dayu.pipirrapp.bean.db.CenterPointBean; +import com.dayu.pipirrapp.bean.db.MarkerBean; import com.dayu.pipirrapp.bean.net.CenterPointResult; import com.dayu.pipirrapp.bean.net.MarkerResult; import com.dayu.pipirrapp.dao.DaoSingleton; @@ -28,6 +31,7 @@ import com.dayu.pipirrapp.net.Constants; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.observer.MapFragmenObserver; +import com.dayu.pipirrapp.service.MyLocationService; import com.dayu.pipirrapp.utils.CommonData; import com.dayu.pipirrapp.utils.MapJpgUtils; import com.dayu.pipirrapp.utils.MyLog; @@ -37,7 +41,12 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.List; import java.util.Random; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.schedulers.Schedulers; /** * author: zuo @@ -54,7 +63,8 @@ WebView mWebView; CenterPointBean centerPointBean; - String jsonData; + String strMarkerJson; + boolean isStartInspec = false; @Override public void onAttach(@NonNull Context context) { @@ -65,6 +75,17 @@ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + } + + @Override + public void onStart() { + super.onStart(); + //鏄剧ず宸℃鐘舵�� + if (isStartInspec) { + binding.stateText.setVisibility(View.VISIBLE); + } else { + binding.stateText.setVisibility(View.GONE); + } } @Nullable @@ -80,25 +101,36 @@ mWebView.loadUrl("file:///android_asset/index.html"); getCenterPoint(); initView(); - initData(); + initLocalData(); getMarkerData(); //寮�鍚畾浣� -// Intent location = new Intent(this.getActivity(), MyLocationService.class); -// location.putExtra("isSingle", false); -// this.getActivity().startService(location); + Intent location = new Intent(this.getActivity(), MyLocationService.class); + location.putExtra("isSingle", false); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + this.getActivity().startForegroundService(location); + } else { + this.getActivity().startService(location); + } return binding.getRoot(); } - private void initData() { + + /** + * 鍒濆鍖栨湰鍦版暟鎹� + */ + public void initLocalData() { + centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst(); + List<MarkerBean> markerBeans = DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().findAll(); + strMarkerJson = beanToJson(markerBeans); jumpCenterPoint(); + setMapMarker(); } + /** * 璺宠浆鍦板浘涓績鐐� */ public void jumpCenterPoint() { - - centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst(); if (centerPointBean != null) { Log.d(TAG, "jumpCenterPoint>>>>>>>>>>>>>>>>>>>" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat()); mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\")", value -> { @@ -106,9 +138,12 @@ } } - public void setMapMarker(){ - Log.i("mWebView", "addMarker????????????" + jsonData); - mWebView.evaluateJavascript("javascript:addMarker(\"" + jsonData + "\")", new ValueCallback<String>() { + /** + * 娣诲姞鏍囨敞鐐� + */ + public void setMapMarker() { + Log.i("mWebView", "addMarker????????????" + strMarkerJson); + mWebView.evaluateJavascript("javascript:addMarker(\"" + strMarkerJson + "\")", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { Log.i("mWebView", "addMarker锛侊紒锛侊紒锛侊紒锛侊紒锛�" + value); @@ -117,29 +152,45 @@ } - + /** + * 鑾峰彇鍙栨按鍙e垪琛� + */ private void getMarkerData() { - ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + ":8085/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() { + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + ":8085/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() { @Override public void onNext(BaseResponse<MarkerResult> t) { if (t.isSuccess()) { if (t.isSuccess()) { if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("["); + List<MarkerBean> markerBeans = new ArrayList<>(); for (int i = 0; i < t.getContent().getObj().size(); i++) { - stringBuilder.append("["); - stringBuilder.append(t.getContent().getObj().get(i).getLng()); - stringBuilder.append(","); - stringBuilder.append(t.getContent().getObj().get(i).getLat()); - stringBuilder.append(",\"" + t.getContent().getObj().get(i).getName() + "\"]"); - if (i != t.getContent().getObj().size() - 1) { - stringBuilder.append(","); - } + MarkerResult.Obj result = t.getContent().getObj().get(i); + //淇濆瓨鏁版嵁 + MarkerBean markerBean = new MarkerBean(); + markerBean.setLng(result.getLng()); + markerBean.setLat(result.getLat()); + markerBean.setBlockId(result.getBlockId()); + markerBean.setName(result.getName()); + markerBean.setRemarks(result.getRemarks()); + markerBean.setTownId(result.getTownId()); + markerBean.setVillageId(result.getVillageId()); + markerBean.setCountyId(result.getCountyId()); + markerBeans.add(markerBean); } - stringBuilder.append("]"); - jsonData = stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\""); - + strMarkerJson = beanToJson(markerBeans); + setMapMarker(); + DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll(); + // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁 + DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans) + .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛� + .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵� + .subscribe(() -> { + // 鎻掑叆鎴愬姛 + Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛"); + }, throwable -> { + // 鎻掑叆澶辫触 + Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage()); + }); } } } else { @@ -148,6 +199,29 @@ } }); + } + + /** + * bean杞琷son + * + * @param markerBeans + */ + private String beanToJson(List<MarkerBean> markerBeans) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("["); + for (int i = 0; i < markerBeans.size(); i++) { + MarkerBean markerBean = markerBeans.get(i); + stringBuilder.append("["); + stringBuilder.append(markerBean.getLng()); + stringBuilder.append(","); + stringBuilder.append(markerBean.getLat()); + stringBuilder.append(",\"" + markerBean.getName() + "\"]"); + if (i != markerBeans.size() - 1) { + stringBuilder.append(","); + } + } + stringBuilder.append("]"); + return stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\""); } @@ -205,6 +279,7 @@ @Override public void onDestroy() { super.onDestroy(); + Log.d(TAG, "onDestroy>>>>>>>>>>>>>>>>>>>>>>>>>>>"); ((ViewGroup) mWebView.getParent()).removeView(mWebView); mWebView.destroy(); // 褰� Activity 瑕� destroy 鏃讹紝搴斿厛灏� WebView 绉婚櫎锛屽啀 destroy 鎺� } @@ -268,6 +343,17 @@ // 鏍规嵁HTTP鐘舵�佺爜澶勭悊閿欒 } }); + binding.inspectButton.setOnClickListener(v -> { + if (!isStartInspec) { + isStartInspec = true; + binding.inspectButton.setText("缁�"); + } else { + + isStartInspec = false; + } + + binding.stateText.setVisibility(View.VISIBLE); + }); } diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java index 6806cc1..02e248e 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MyFragment.java @@ -1,6 +1,8 @@ package com.dayu.pipirrapp.fragment; import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -10,10 +12,13 @@ import androidx.annotation.Nullable; import com.dayu.pipirrapp.activity.ChangePSActivity; +import com.dayu.pipirrapp.activity.LoginActivity; import com.dayu.pipirrapp.bean.db.LoginBean; import com.dayu.pipirrapp.dao.DaoSingleton; -import com.dayu.pipirrapp.databinding.FragmentMapBinding; import com.dayu.pipirrapp.databinding.FragmentMyBinding; +import com.dayu.pipirrapp.utils.CleanDataUtils; +import com.dayu.pipirrapp.utils.ToastUtil; +import com.dayu.pipirrapp.view.ConfirmDialog; import com.dayu.pipirrapp.view.TitleBar; /** @@ -35,18 +40,44 @@ } private void initView() { - binding.changePS.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(MyFragment.this.getContext(), ChangePSActivity.class); - MyFragment.this.getActivity().startActivity(intent); - } + binding.changePS.setOnClickListener(v -> { + Intent intent = new Intent(MyFragment.this.getContext(), ChangePSActivity.class); + MyFragment.this.getActivity().startActivity(intent); + }); + //閫�鍑虹櫥褰� + binding.loginOutRL.setOnClickListener((v) -> { + + ConfirmDialog confirmDialog = new ConfirmDialog(MyFragment.this.getActivity(), "纭畾閫�鍑哄悧锛�", v1 -> { + try { + CleanDataUtils.cleanUserData(MyFragment.this.getContext()); + Intent intent = new Intent(MyFragment.this.getContext(), LoginActivity.class); + MyFragment.this.getActivity().startActivity(intent); + MyFragment.this.getActivity().finish(); + } catch (Exception e) { + e.printStackTrace(); + } + }); + confirmDialog.show(); + }); LoginBean loginBean = DaoSingleton.getInstance(MyFragment.this.getContext()).loginDao().findFirst(); if (loginBean != null) { binding.name.setText(loginBean.getName()); binding.phone.setText(loginBean.getPhone()); } +// 娓呴櫎缂撳瓨 + binding.cleanDataRL.setOnClickListener(v -> { + ConfirmDialog confirmDialog = new ConfirmDialog(MyFragment.this.getActivity(), "纭畾娓呴櫎缂撳瓨鍚楋紵", v1 -> { + try { + CleanDataUtils.cleanMapData(MyFragment.this.getContext()); + ToastUtil.showToast(MyFragment.this.getActivity(), "娓呴櫎鎴愬姛"); + } catch (Exception e) { + e.printStackTrace(); + } + }); + confirmDialog.show(); + + }); } private void initData() { @@ -55,7 +86,18 @@ binding.name.setText(loginBean.getName()); binding.phone.setText(loginBean.getPhone()); } - + // + try { + PackageInfo packageInfo = MyFragment.this.getActivity().getPackageManager().getPackageInfo(MyFragment.this.getActivity().getPackageName(), 0); + binding.versionText.setText(packageInfo.versionName); + } catch (PackageManager.NameNotFoundException e) { + throw new RuntimeException(e); + } } + @Override + public void onStart() { + super.onStart(); + new TitleBar(MyFragment.this.getActivity()).setTitleText("鎴戠殑"); + } } diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java index 3ff5033..0735ae5 100644 --- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java +++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java @@ -82,6 +82,9 @@ public <T> void requestGet(final Context context, final String path, final Class<T> tClass, final Map<String, Object> params, final SubscriberListener listener) { request(context, false, path, true, tClass, params, listener); } + public <T> void requestGetHideLoading(final Context context, final String path, final Class<T> tClass, final Map<String, Object> params, final SubscriberListener listener) { + request(context, true, path, true, tClass, params, listener); + } /** * 鍙戦�佽姹� diff --git a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java index 0b665fd..a55e156 100644 --- a/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java +++ b/app/src/main/java/com/dayu/pipirrapp/service/MyLocationService.java @@ -1,19 +1,26 @@ package com.dayu.pipirrapp.service; -import android.annotation.SuppressLint; +import android.Manifest; import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; +import android.content.pm.PackageManager; import android.graphics.BitmapFactory; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; +import android.os.Build; import android.os.Bundle; import android.os.IBinder; +import android.widget.Toast; import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.core.app.NotificationCompat; import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDLocation; @@ -23,6 +30,7 @@ import com.dayu.pipirrapp.activity.MainActivity; import com.dayu.pipirrapp.bean.db.LatLonBean; import com.dayu.pipirrapp.utils.MyLog; +import com.dayu.pipirrapp.utils.ToastUtil; import com.jeremyliao.liveeventbus.LiveEventBus; import com.tencent.bugly.crashreport.CrashReport; @@ -78,32 +86,62 @@ Notification notification = builder.build(); // 鑾峰彇鏋勫缓濂界殑Notification notification.defaults = Notification.DEFAULT_SOUND; //璁剧疆涓洪粯璁ょ殑澹伴煶 } - return super.onStartCommand(intent, flags, startId); + return START_STICKY;// 濡傛灉绯荤粺缁堟璇ユ湇鍔★紝涔嬪悗浼氶噸鍚� } @Override public void onCreate() { super.onCreate(); - + // 鍚姩鍓嶅彴鏈嶅姟 + startForegroundService(); createNativeLocation(); // createBDLocation(); } + private void startForegroundService() { + // 閽堝 Android 8.0 鍙婃洿楂樼増鏈垱寤洪�氱煡娓犻亾 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannel channel = new NotificationChannel( + "location_channel", + "Location Service Channel", + NotificationManager.IMPORTANCE_DEFAULT + ); + NotificationManager manager = getSystemService(NotificationManager.class); + if (manager != null) { + manager.createNotificationChannel(channel); + } + } + // 鍒涘缓閫氱煡 + Intent notificationIntent = new Intent(this, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE); + + Notification notification = new NotificationCompat.Builder(this, "location_channel") + .setContentTitle("瀹氫綅鏈嶅姟") + .setContentText("瀹氫綅鏈嶅姟姝e湪鍚庡彴杩愯") + .setSmallIcon(R.mipmap.ic_launcher) + .setContentIntent(pendingIntent) + .build(); + + // 灏嗘湇鍔¤缃负鍓嶅彴鏈嶅姟 + startForeground(1, notification); + } /** * 鍘熺敓鐨勫畾浣嶆湇鍔� */ - @SuppressLint("MissingPermission") private void createNativeLocation() { try { locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); + if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + // 鎻愮ず鐢ㄦ埛寮�鍚畾浣� + Toast.makeText(this, "璇峰紑鍚疓PS瀹氫綅", Toast.LENGTH_SHORT).show(); + } listener = new MyLocationListener(); - Criteria criteria = new Criteria(); // 鏌ヨ绮惧害锛氶珮锛孋riteria.ACCURACY_COARSE姣旇緝绮楃暐锛孋riteria.ACCURACY_FINE鍒欐瘮杈冪簿纭� - criteria.setAccuracy(Criteria.ACCURACY_FINE); + criteria.setAccuracy(Criteria.ACCURACY_COARSE); //涓嶈姹傛捣鎷� criteria.setAltitudeRequired(false); //涓嶈姹傛柟浣� @@ -116,7 +154,11 @@ MyLog.i("瀹氫綅鐨刾rovider:" + provider); //绗簩涓弬鏁版槸闂撮殧鏃堕棿 绗笁涓弬鏁版槸闂撮殧澶氬皯璺濈锛岃繖閲屾垜璇曡繃浜嗕笉鍚岀殑鍚勭缁勫悎锛岃兘鑾峰彇鍒颁綅缃氨鏄兘锛屼笉鑳借幏鍙栧氨鏄笉鑳� - locationManager.requestLocationUpdates(provider, 1000, 0, listener); + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + MyLog.i("鍘熺敓瀹氫綅娌℃湁鏉冮檺>>>>"); + return; + } + locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 1000, 0, listener); } catch (Exception e) { CrashReport.postCatchedException(e); } @@ -166,6 +208,9 @@ } + /** + * 鍘熺敓瀹氫綅 + */ class MyLocationListener implements LocationListener { // 浣嶇疆鏀瑰彉鏃惰幏鍙栫粡绾害 @Override @@ -179,24 +224,28 @@ if (isSingle) { stopSelf(); // 鑾峰彇鍒扮粡绾害浠ュ悗锛屽仠姝㈣service } + ToastUtil.showToast(MyLocationService.this, "鍘熺敓瀹氫綅onLocationChanged: Latitude锛�" + latitude + " Longitude锛�" + longitude); } // 鐘舵�佹敼鍙樻椂 @Override public void onStatusChanged(String provider, int status, Bundle extras) { MyLog.i("onStatusChanged - provider:" + provider + " status:" + status); + ToastUtil.showToast(MyLocationService.this, "onStatusChanged - provider:" + provider + " status:" + status); } // 鎻愪緵鑰呭彲浠ヤ娇鐢ㄦ椂 @Override public void onProviderEnabled(String provider) { MyLog.i("GPS寮�鍚簡"); + ToastUtil.showToast(MyLocationService.this, "GPS寮�鍚簡"); } // 鎻愪緵鑰呬笉鍙互浣跨敤鏃� @Override public void onProviderDisabled(String provider) { MyLog.i("GPS鍏抽棴浜�"); + ToastUtil.showToast(MyLocationService.this, "GPS鍏抽棴浜�"); } } @@ -246,6 +295,11 @@ MyLog.i("MyLocationService--onDestroy"); // 鍋滄鍓嶅彴鏈嶅姟--鍙傛暟锛氳〃绀烘槸鍚︾Щ闄や箣鍓嶇殑閫氱煡 stopForeground(true); + // 鑾峰彇NotificationManager骞跺彇娑堥�氱煡锛岀‘淇濋�氱煡琚Щ闄� + NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + if (notificationManager != null) { + notificationManager.cancel(0); // 鍙傛暟1瀵瑰簲鐨勬槸startForeground()涓�氱煡鐨処D + } super.onDestroy(); // 鍋滄鎵�鏈夌殑瀹氫綅鏈嶅姟 try { diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java b/app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java new file mode 100644 index 0000000..e9db421 --- /dev/null +++ b/app/src/main/java/com/dayu/pipirrapp/utils/CleanDataUtils.java @@ -0,0 +1,33 @@ +package com.dayu.pipirrapp.utils; + +import android.content.Context; + +import com.dayu.pipirrapp.MyApplication; +import com.dayu.pipirrapp.dao.DaoSingleton; + +/** + * author: zuo + * Date: 2024-10-10 + * Time: 10:03 + * 澶囨敞锛氭竻闄ょ紦瀛樿褰� + */ +public class CleanDataUtils { + + /** + * 娓呴櫎鍦板浘缂撳瓨 + */ + public static void cleanMapData(Context context) { + DaoSingleton.getInstance(context).markerDao().deleteAll(); + } + + /** + * 娓呴櫎鐢ㄦ埛淇℃伅缂撳瓨 + * @param context + */ + public static void cleanUserData(Context context) { + DaoSingleton.getInstance(context).loginDao().deleteAll(); + MyApplication.myApplication.token=""; + SharedPreferencesHelper.getInstance(context).delete(CommonData.Token); + } + +} diff --git a/app/src/main/res/layout/activity_splash_screen.xml b/app/src/main/res/layout/activity_splash_screen.xml new file mode 100644 index 0000000..be06ff0 --- /dev/null +++ b/app/src/main/res/layout/activity_splash_screen.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + + android:orientation="vertical" + android:padding="20dp"> + + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerHorizontal="true" + android:layout_marginTop="100dp" + android:text="澶х鏅鸿兘宸℃绯荤粺" + android:textColor="@color/base_blue" + android:textSize="25sp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_centerHorizontal="true" + android:layout_marginTop="100dp" + android:text="姝e湪鍚姩....." + android:textColor="@color/base_blue" + android:textSize="10sp" /> + +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index 6bb6bf0..75471b7 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -3,14 +3,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> -<!-- <com.github.lzyzsd.jsbridge.BridgeWebView--> -<!-- android:id="@+id/webView"--> -<!-- android:layout_width="match_parent"--> -<!-- android:layout_height="match_parent" />--> - <WebView - android:id="@+id/webView" - android:layout_width="match_parent" - android:layout_height="match_parent" /> + <!-- <com.github.lzyzsd.jsbridge.BridgeWebView--> + <!-- android:id="@+id/webView"--> + <!-- android:layout_width="match_parent"--> + <!-- android:layout_height="match_parent" />--> + <WebView + android:id="@+id/webView" + android:layout_width="match_parent" + android:layout_height="match_parent" /> <TextView android:id="@+id/flyBtn" @@ -20,14 +20,39 @@ android:layout_centerHorizontal="true" android:text="璺宠浆鍒版寚瀹氫綅缃�" /> + <TextView + android:id="@+id/stateText" + android:layout_width="match_parent" + android:layout_height="35dp" + android:layout_alignParentTop="true" + android:background="@color/base_blue" + android:gravity="center" + android:text="宸插紑鍚贰妫�" + android:textColor="@color/white" + android:textSize="18sp" /> + + <TextView + android:id="@+id/inspectButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_marginTop="60dp" + android:layout_marginRight="15dp" + android:background="@drawable/ic_blue_background" + android:padding="10dp" + android:text="宸�" + android:textColor="@color/white" + android:textSize="18sp" /> + + <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"> + android:orientation="horizontal" + android:visibility="gone"> <LinearLayout android:layout_width="0dp" diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml index 4637efb..25baa94 100644 --- a/app/src/main/res/layout/fragment_my.xml +++ b/app/src/main/res/layout/fragment_my.xml @@ -98,37 +98,12 @@ 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_below="@+id/headRL" android:layout_marginTop="1dp"> <TextView @@ -153,10 +128,36 @@ </RelativeLayout> <RelativeLayout - android:id="@+id/loginOutRL" + android:id="@+id/cleanDataRL" android:layout_width="match_parent" android:layout_height="@dimen/item_height" android:layout_below="@+id/passwordRL" + android:layout_marginTop="1dp"> + + <TextView + android:id="@+id/cleanData" + 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/cleanDataRL" android:layout_marginTop="1dp"> <TextView @@ -171,6 +172,7 @@ android:textSize="@dimen/my_item_text_size" /> <ImageView + android:id="@+id/loginOutBtn" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentRight="true" @@ -178,5 +180,37 @@ 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/loginOutRL" + 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" /> + + + + <TextView + android:id="@+id/versionText" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:layout_marginRight="25dp" + android:text="v1.0" + android:textColor="@color/text_color" + android:textSize="15sp" /> + </RelativeLayout> + + </RelativeLayout> \ No newline at end of file -- Gitblit v1.8.0