├── .gitignore ├── .idea ├── caches │ └── build_file_checksums.ser ├── codeStyles │ └── Project.xml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── markdown-exported-files.xml ├── markdown-navigator.xml ├── markdown-navigator │ └── profiles_settings.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── config.xml │ ├── widget_accessory.png │ ├── widget_accessory_select.png │ ├── widget_accessory_select2.png │ ├── widget_caculate.png │ ├── widget_caculate_select.png │ ├── widget_caculate_select2.png │ ├── widget_feature_examine.png │ ├── widget_feature_examine_select.png │ ├── widget_feature_examine_select2.png │ ├── widget_featureedit.png │ ├── widget_featureedit_select.png │ ├── widget_featureedit_select2.png │ ├── widget_layermanager.png │ ├── widget_layermanager_select.png │ ├── widget_layermanager_select2.png │ ├── widget_legend.png │ ├── widget_legend_select.png │ ├── widget_legend_select2.png │ ├── widget_localton_setting.png │ ├── widget_localton_setting_select.png │ ├── widget_localton_setting_select2.png │ ├── widget_projectInfo.png │ ├── widget_projectInfo_select.png │ ├── widget_projectInfo_select2.png │ ├── widget_query.png │ ├── widget_query_select.png │ └── widget_query_select2.png │ ├── java │ └── com │ │ └── gisluq │ │ └── runtimeviewer │ │ ├── BMOD │ │ ├── MapModule │ │ │ ├── BaseWidget │ │ │ │ ├── BaseWidget.java │ │ │ │ ├── BaseWidgetControl.java │ │ │ │ └── WidgetManager.java │ │ │ ├── Location │ │ │ │ ├── DMUserLocationManager.java │ │ │ │ └── EvilTransform.java │ │ │ ├── Map │ │ │ │ └── MapManager.java │ │ │ ├── PartView │ │ │ │ └── Compass.java │ │ │ ├── Resource │ │ │ │ ├── Constant.java │ │ │ │ └── ResourceConfig.java │ │ │ ├── Running │ │ │ │ └── MapConfigInfo.java │ │ │ └── View │ │ │ │ └── MapActivity.java │ │ ├── ProjectsModule │ │ │ ├── Adapter │ │ │ │ └── ProjectGridAdapter.java │ │ │ ├── Model │ │ │ │ └── ProjectInfo.java │ │ │ └── View │ │ │ │ └── MainActivity.java │ │ ├── RootAct │ │ │ └── InitActivity.java │ │ └── SystemModule │ │ │ ├── AboutActivity.java │ │ │ ├── LockviewActivity.java │ │ │ └── LoginActivity.java │ │ ├── Base │ │ └── BaseActivity.java │ │ ├── Common │ │ ├── DialogTools.java │ │ └── ToolBarHelper.java │ │ ├── Config │ │ ├── AppConfig.java │ │ ├── AppWorksSpaceInit.java │ │ ├── Entity │ │ │ ├── ConfigEntity.java │ │ │ └── WidgetEntity.java │ │ ├── SystemDirPath.java │ │ └── Xml │ │ │ └── XmlParser.java │ │ ├── EventBus │ │ ├── BaseWidgetMsgEvent.java │ │ ├── EventCode.java │ │ └── MessageEvent.java │ │ ├── GloabApp │ │ └── MPApplication.java │ │ ├── Permission │ │ ├── PermissionsActivity.java │ │ ├── PermissionsChecker.java │ │ └── PermissionsUtils.java │ │ ├── Utils │ │ ├── DialogUtils.java │ │ ├── FileUtils.java │ │ ├── StringUtils.java │ │ └── TimeUtils.java │ │ └── Widgets │ │ ├── CalculateWidget │ │ └── CaculateWidget.java │ │ ├── FeatureEditWidget │ │ ├── Adapter │ │ │ ├── FeatureTempleteAdapter.java │ │ │ ├── FieldAdapter.java │ │ │ └── FileAdapter.java │ │ ├── FeatureEditWidget.java │ │ ├── Listener │ │ │ ├── FeatureSelectOnTouchListener.java │ │ │ └── MapSelectOnTouchListener.java │ │ ├── Media │ │ │ ├── AudioRecoderUtils.java │ │ │ ├── MediaAlertView.java │ │ │ └── VoiceAlertView.java │ │ └── Resource │ │ │ └── DrawToolsResource.java │ │ ├── HelloWorldWidget.java │ │ ├── LayerManagerWidget │ │ ├── Adapter │ │ │ ├── LayerListviewAdapter.java │ │ │ └── LegendListviewAdapter.java │ │ ├── BaseMap │ │ │ ├── BaseMapManager.java │ │ │ └── BasemapLayerInfo.java │ │ ├── LayerManagerWidget.java │ │ └── UserLayers │ │ │ └── TianDiTuLayer │ │ │ ├── TianDiTuLayer.java │ │ │ └── TianDiTuLayerInfo.java │ │ └── QueryWidget │ │ ├── Adapter │ │ ├── AlertLayerListAdapter.java │ │ ├── AttributeAdapter.java │ │ ├── LayerSpinnerAdapter.java │ │ └── QueryResultAdapter.java │ │ ├── Bean │ │ └── KeyAndValueBean.java │ │ ├── Listener │ │ └── MapQueryOnTouchListener.java │ │ └── QueryWidget.java │ └── res │ ├── anim │ ├── widget_enter_left.xml │ └── widget_exit_left.xml │ ├── drawable │ ├── bg_circle_default.xml │ ├── bg_circle_select.xml │ ├── ic_bg_circle.xml │ ├── ic_delete_btn.xml │ ├── ic_item_touch.xml │ ├── ic_item_touch_txtred.xml │ ├── ic_location_bg.xml │ ├── ic_location_btn_off.xml │ ├── ic_location_btn_on.xml │ ├── ic_more_btn.xml │ ├── ic_touch_btn.xml │ ├── ic_voice_btn.xml │ ├── ic_widget_closed_btn.xml │ ├── ic_widget_down_btn.xml │ ├── ic_widget_item_touch.xml │ ├── ic_widget_item_touch_pressed.xml │ ├── ic_widget_open_btn.xml │ └── ic_widget_up_btn.xml │ ├── layout-land │ ├── activity_init.xml │ ├── activity_lockview.xml │ ├── activity_login.xml │ ├── activity_main.xml │ └── activity_main_gridview_item.xml │ ├── layout-large-land │ ├── activity_init.xml │ ├── activity_lockview.xml │ ├── activity_login.xml │ ├── activity_main.xml │ └── activity_main_gridview_item.xml │ ├── layout-large-port │ ├── activity_init.xml │ ├── activity_lockview.xml │ ├── activity_login.xml │ ├── activity_main.xml │ └── activity_main_gridview_item.xml │ ├── layout-large │ ├── activity_map.xml │ ├── base_widget_view.xml │ ├── base_widget_view_tools.xml │ ├── base_widget_view_tools_widget_btn.xml │ ├── widget_view_layer_manager.xml │ └── widget_view_layer_managet_layers_item.xml │ ├── layout │ ├── activity_about.xml │ ├── activity_init.xml │ ├── activity_lockview.xml │ ├── activity_login.xml │ ├── activity_main.xml │ ├── activity_main_gridview_item.xml │ ├── activity_map.xml │ ├── activity_permissions.xml │ ├── activity_toobar_view.xml │ ├── activity_toolbar.xml │ ├── base_widget_view.xml │ ├── base_widget_view_tools.xml │ ├── base_widget_view_tools_widget_btn.xml │ ├── widget_alert_opacity.xml │ ├── widget_view_calculate.xml │ ├── widget_view_feature_edit.xml │ ├── widget_view_feature_edit_alert_attribute.xml │ ├── widget_view_feature_edit_alert_attribute_fielditem.xml │ ├── widget_view_feature_edit_alert_mediafiles.xml │ ├── widget_view_feature_edit_alert_mediafiles_item.xml │ ├── widget_view_feature_edit_alert_voice.xml │ ├── widget_view_feature_edit_item.xml │ ├── widget_view_helloworld.xml │ ├── widget_view_layer_manager.xml │ ├── widget_view_layer_manager_layers.xml │ ├── widget_view_layer_manager_legend.xml │ ├── widget_view_layer_managet_layers_item.xml │ ├── widget_view_layer_managet_legent_item.xml │ ├── widget_view_query.xml │ ├── widget_view_query_attributequery.xml │ ├── widget_view_query_attributequery_result_item.xml │ ├── widget_view_query_attributequery_spinner_item.xml │ ├── widget_view_query_mapquery.xml │ ├── widget_view_query_mapquery_alertlayers_item.xml │ └── widget_view_query_mapquery_fielditem.xml │ ├── menu │ ├── menu_layer_handle_tools.xml │ └── menu_layer_tools.xml │ ├── mipmap-hdpi │ ├── base_widget_closed_default.png │ ├── base_widget_closed_pressed.png │ ├── base_widget_down_default.png │ ├── base_widget_down_pressed.png │ ├── base_widget_open_default.png │ ├── base_widget_open_pressed.png │ ├── base_widget_up_default.png │ ├── base_widget_up_pressed.png │ ├── cursor_click.png │ ├── degree.png │ ├── del_default.png │ ├── del_pressed.png │ ├── draw_polyline.png │ ├── fea_clear.png │ ├── fea_delete.png │ ├── fea_draw.png │ ├── fea_edit_attribute.png │ ├── fea_goback.png │ ├── fea_next.png │ ├── fea_save.png │ ├── ic_launcher.png │ ├── ic_launcher_round.png │ ├── ic_track_explore_loc_content.png │ ├── main_icon_compass.png │ ├── main_icon_follow.png │ ├── polygon.png │ ├── widget_default_tools.png │ └── widget_default_tools2.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── a5i.png │ ├── a5j.png │ ├── basemap.png │ ├── basemap_selected.png │ ├── books.png │ ├── btn_position.png │ ├── btn_position_select.png │ ├── camera.png │ ├── center_pic.png │ ├── collect_point.png │ ├── collect_point1.png │ ├── collect_point_btn.png │ ├── collect_point_btn_select.png │ ├── empty_photo_large.png │ ├── empty_photo_large2.png │ ├── field.png │ ├── ic_launcher.png │ ├── ic_launcher_round.png │ ├── ic_maps_indicator_current_position.png │ ├── ic_more_default.png │ ├── ic_more_pressed.png │ ├── map_cross_1.png │ ├── map_cross_2.png │ ├── navi_car_circle_grey_preview.png │ ├── navi_car_circle_preview.png │ ├── video.png │ ├── voice.png │ ├── voice_default.png │ ├── voice_presed.png │ ├── voice_start.png │ ├── voice_stop.png │ └── widget_default_tools2.png │ ├── mipmap-xxhdpi │ ├── center_pic.png │ ├── ic_launcher.png │ ├── ic_launcher_round.png │ ├── select_feature.png │ ├── target.png │ └── widget_default_tools2.png │ ├── mipmap-xxxhdpi │ ├── compass2.png │ ├── ic_launcher.png │ ├── ic_launcher_round.png │ ├── pin.png │ ├── search.png │ └── widget_default_tools2.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lib ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── gisluq │ │ └── lib │ │ ├── LockPatternView │ │ └── LockPatternView.java │ │ └── Util │ │ ├── AppUtils.java │ │ ├── CoordinateConversion.java │ │ ├── DateUtils.java │ │ ├── DensityUtils.java │ │ ├── EvilTransform.java │ │ ├── HttpUtils.java │ │ ├── ImageUtils.java │ │ ├── KeyBoardUtils.java │ │ ├── LogUtils.java │ │ ├── NetUtils.java │ │ ├── SDCardUtils.java │ │ ├── SPUtils.java │ │ ├── ScreenUtils.java │ │ ├── StringUtil.java │ │ ├── SysUtils.java │ │ └── ToastUtils.java │ └── res │ ├── drawable-xhdpi │ ├── btn_code_lock_default_holo.png │ ├── btn_code_lock_default_holo2.png │ ├── btn_code_lock_touched_holo.png │ ├── indicator_code_lock_point_area_default_holo.png │ ├── indicator_code_lock_point_area_green_holo.png │ ├── indicator_code_lock_point_area_red_holo.png │ ├── pull.png │ └── xlistview_arrow.png │ ├── drawable │ ├── btn_code_lock_default_holo.png │ ├── btn_code_lock_default_holo2.png │ ├── btn_code_lock_touched_holo.png │ ├── indicator_code_lock_drag_direction_green_up.png │ ├── indicator_code_lock_drag_direction_red_up.png │ ├── indicator_code_lock_point_area_default_holo.png │ ├── indicator_code_lock_point_area_green_holo.png │ ├── indicator_code_lock_point_area_red_holo.png │ └── magnify_lens.png │ ├── layout │ ├── xlistview_footer.xml │ └── xlistview_header.xml │ └── values │ ├── attrs.xml │ └── strings.xml ├── readme ├── 01-pad.png ├── 02-pad-mian.png ├── 03-pad-helloworld.png ├── 04-app.png ├── 05-app-main.png ├── 06-app-helloworld.png ├── 20180328105641.png ├── widget-xml.png ├── widgets │ ├── caculate.png │ ├── edit.png │ ├── identify.png │ ├── layer.png │ ├── legend.png │ └── query.png └── 工程结构示例 │ └── RuntimeViewer │ └── Projects │ └── 01-测试工程示例 │ ├── BaseMap │ ├── basemap.json │ ├── china.vtpk │ └── 配置说明.txt │ ├── Media │ └── Photo │ │ └── 图层名_要素ID_时间.txt │ ├── OperationalLayers │ ├── 一级河流4l.cpg │ ├── 一级河流4l.dbf │ ├── 一级河流4l.prj │ ├── 一级河流4l.sbn │ ├── 一级河流4l.sbx │ ├── 一级河流4l.shp │ ├── 一级河流4l.shp.xml │ ├── 一级河流4l.shx │ ├── 一级河流4p.cpg │ ├── 一级河流4p.dbf │ ├── 一级河流4p.prj │ ├── 一级河流4p.sbn │ ├── 一级河流4p.sbx │ ├── 一级河流4p.shp │ ├── 一级河流4p.shp.xml │ ├── 一级河流4p.shx │ ├── 首都和省级行政中心4m.cpg │ ├── 首都和省级行政中心4m.dbf │ ├── 首都和省级行政中心4m.prj │ ├── 首都和省级行政中心4m.sbn │ ├── 首都和省级行政中心4m.sbx │ ├── 首都和省级行政中心4m.shp │ ├── 首都和省级行政中心4m.shp.xml │ └── 首都和省级行政中心4m.shx │ └── image.png └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # IntelliJ 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/gradle.xml 40 | .idea/dictionaries 41 | .idea/libraries 42 | 43 | # Keystore files 44 | # Uncomment the following line if you do not want to check your keystore files in. 45 | #*.jks 46 | 47 | # External native build folder generated in Android Studio 2.2 and later 48 | .externalNativeBuild 49 | 50 | # Google Services (e.g. APIs or Firebase) 51 | google-services.json 52 | 53 | # Freeline 54 | freeline.py 55 | freeline/ 56 | freeline_project_description.json 57 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/markdown-exported-files.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion '27.0.3' 6 | 7 | defaultConfig { 8 | applicationId "com.gisluq.runtimeviewer" 9 | minSdkVersion 24 10 | targetSdkVersion 27 11 | versionCode 1 12 | versionName "v-0.2" 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | // ndk { 15 | // abiFilters "armeabi", "armeabi-v7a", "x86", "mips" 16 | // } 17 | 18 | //Enabling multidex support. 19 | // multiDexEnabled true 20 | } 21 | buildTypes { 22 | release { 23 | minifyEnabled false 24 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 25 | } 26 | } 27 | 28 | } 29 | 30 | dependencies { 31 | implementation fileTree(include: ['*.jar'], dir: 'libs') 32 | implementation 'com.android.support:appcompat-v7:27.1.0' 33 | implementation 'org.greenrobot:eventbus:3.0.0' 34 | implementation project(':lib') 35 | implementation 'com.android.support:design:27.1.0' 36 | } 37 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\02-Coding\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -dontwarn com.tencent.bugly.** 19 | -keep public class com.tencent.bugly.**{*;} -------------------------------------------------------------------------------- /app/src/main/assets/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 20 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/assets/widget_accessory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_accessory.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_accessory_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_accessory_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_accessory_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_accessory_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_caculate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_caculate.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_caculate_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_caculate_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_caculate_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_caculate_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_feature_examine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_feature_examine.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_feature_examine_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_feature_examine_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_feature_examine_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_feature_examine_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_featureedit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_featureedit.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_featureedit_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_featureedit_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_featureedit_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_featureedit_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_layermanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_layermanager.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_layermanager_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_layermanager_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_layermanager_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_layermanager_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_legend.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_legend_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_legend_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_legend_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_legend_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_localton_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_localton_setting.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_localton_setting_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_localton_setting_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_localton_setting_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_localton_setting_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_projectInfo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_projectInfo.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_projectInfo_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_projectInfo_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_projectInfo_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_projectInfo_select2.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_query.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_query_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_query_select.png -------------------------------------------------------------------------------- /app/src/main/assets/widget_query_select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gis-luq/RuntimeViewer/ba2f9f7924ca245aced361d0ce7a093761491919/app/src/main/assets/widget_query_select2.png -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/BMOD/MapModule/Location/EvilTransform.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.BMOD.MapModule.Location; 2 | 3 | /** 4 | * 坐标转换接口 5 | * Created by gis-luq on 2018/4/10. 6 | */ 7 | public class EvilTransform { 8 | 9 | private static double pi = 3.14159265358979324; 10 | private static double a = 6378245.0; 11 | private static double ee = 0.00669342162296594323; 12 | 13 | /** 14 | * WGS-84 到 GCJ-02 的转换(即 GPS 加偏) 15 | * @param wgLon 16 | * @param wgLat 17 | * @return 18 | */ 19 | public static double[] transform(double wgLon,double wgLat ) { 20 | 21 | double mgLat; 22 | double mgLon; 23 | 24 | if (outOfChina(wgLat, wgLon)) { 25 | mgLat = wgLat; 26 | mgLon = wgLon; 27 | return null; 28 | } 29 | double dLat = transformLat(wgLon - 105.0, wgLat - 35.0); 30 | double dLon = transformLon(wgLon - 105.0, wgLat - 35.0); 31 | double radLat = wgLat / 180.0 * pi; 32 | double magic = Math.sin(radLat); 33 | magic = 1 - ee * magic * magic; 34 | double sqrtMagic = Math.sqrt(magic); 35 | 36 | dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); 37 | dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); 38 | 39 | mgLat = wgLat + dLat; 40 | mgLon = wgLon + dLon; 41 | 42 | return new double[]{mgLon,mgLat}; 43 | 44 | } 45 | 46 | /** 47 | * 判断是否在国内区域 48 | * @param lat 49 | * @param lon 50 | * @return 51 | */ 52 | public static boolean outOfChina(double lat, double lon) { 53 | if (lon < 72.004 || lon > 137.8347) 54 | return true; 55 | if (lat < 0.8293 || lat > 55.8271) 56 | return true; 57 | return false; 58 | } 59 | 60 | /** 61 | * 纬度转换 62 | * @param x 63 | * @param y 64 | * @return 65 | */ 66 | private static double transformLat(double x, double y) { 67 | double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y 68 | + 0.2 * Math.sqrt(Math.abs(x)); 69 | ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; 70 | ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; 71 | ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; 72 | return ret; 73 | } 74 | 75 | /** 76 | * 经度转换 77 | * @param x 78 | * @param y 79 | * @return 80 | */ 81 | private static double transformLon(double x, double y) { 82 | double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 83 | * Math.sqrt(Math.abs(x)); 84 | ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; 85 | ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; 86 | ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 87 | * pi)) * 2.0 / 3.0; 88 | return ret; 89 | } 90 | 91 | } 92 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/BMOD/MapModule/Resource/Constant.java: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | //Copyright (c) 2011-2012 Esri 4 | // 5 | //All rights reserved under the copyright laws of the United States. 6 | //You may freely redistribute and use this software, with or 7 | //without modification, provided you include the original copyright 8 | //and use restrictions. See use restrictions in the file: 9 | ///License.txt 10 | // 11 | //////////////////////////////////////////////////////////////////////////////// 12 | 13 | package com.gisluq.runtimeviewer.BMOD.MapModule.Resource; 14 | 15 | /** 16 | * 文件信息配置相关信息 17 | */ 18 | public class Constant 19 | { 20 | public static final String CONFIG_FILE = "config.xml"; 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/BMOD/MapModule/Resource/ResourceConfig.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.BMOD.MapModule.Resource; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.view.View; 7 | import android.widget.ImageView; 8 | import android.widget.LinearLayout; 9 | import android.widget.RelativeLayout; 10 | import android.widget.Switch; 11 | import android.widget.TextView; 12 | import android.widget.ToggleButton; 13 | 14 | import com.esri.arcgisruntime.mapping.view.MapView; 15 | import com.gisluq.runtimeviewer.R; 16 | 17 | /** 18 | * 资源绑定注册类 19 | */ 20 | public class ResourceConfig { 21 | 22 | public Context context; 23 | private Activity activiy; 24 | 25 | public ResourceConfig(Context context){ 26 | this.context = context; 27 | this.activiy = (Activity)context; 28 | initConfig(); 29 | } 30 | 31 | /**资源列表**/ 32 | public MapView mapView = null;//地图控件 33 | public RelativeLayout compassView =null;//指北针控件 34 | public TextView txtMapScale = null;//比例尺 35 | public View baseWidgetView = null;//widget组件 36 | public ImageView imgCenterView = null;//中心十字叉 37 | public ToggleButton togbtnLocation=null;//定位按钮 38 | public TextView txtLocation = null; 39 | public FloatingActionButton btnPointCollect=null;//采集点 40 | 41 | public LinearLayout baseWidgetToolsView;//widget组件工具列表 42 | 43 | 44 | /** 45 | * 初始化资源列表 46 | */ 47 | private void initConfig() { 48 | this.mapView = (MapView)activiy.findViewById(R.id.activity_map_mapview); 49 | this.compassView = (RelativeLayout)activiy.findViewById(R.id.activity_map_compass); 50 | this.txtMapScale = (TextView)activiy.findViewById(R.id.activity_map_mapview_scale); 51 | this.baseWidgetView = activiy.findViewById(R.id.base_widget_view_baseview); 52 | this.imgCenterView = (ImageView)activiy.findViewById(R.id.activity_map_imgCenterView); 53 | this.togbtnLocation = (ToggleButton) activiy.findViewById(R.id.activity_map_togbtnLocation); 54 | 55 | this.txtLocation = (TextView)activiy.findViewById(R.id.activity_map_mapview_locationInfo); 56 | 57 | this.baseWidgetToolsView = (LinearLayout)activiy.findViewById(R.id.base_widget_view_tools_linerview); 58 | 59 | this.btnPointCollect = activiy.findViewById(R.id.activity_map_faBtnpointCollect); 60 | } 61 | 62 | 63 | } 64 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/BMOD/MapModule/Running/MapConfigInfo.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.BMOD.MapModule.Running; 2 | 3 | import com.gisluq.runtimeviewer.BMOD.MapModule.Location.DMUserLocationManager; 4 | 5 | /** 6 | * 地图资源配置 7 | */ 8 | public class MapConfigInfo { 9 | public static DMUserLocationManager dmUserLocationManager= null; 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/BMOD/ProjectsModule/Model/ProjectInfo.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.BMOD.ProjectsModule.Model; 2 | 3 | /** 4 | * 工程目录信息 5 | */ 6 | public class ProjectInfo { 7 | public String DirName;//工程文件夹名称 8 | public String DirPath;//工程路径 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/BMOD/SystemModule/AboutActivity.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.BMOD.SystemModule; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.widget.Toolbar; 5 | import android.widget.TextView; 6 | 7 | import com.gisluq.runtimeviewer.Base.BaseActivity; 8 | import com.gisluq.runtimeviewer.R; 9 | 10 | import gisluq.lib.Util.AppUtils; 11 | 12 | public class AboutActivity extends BaseActivity { 13 | 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | super.onCreate(savedInstanceState); 17 | setContentView(R.layout.activity_about); 18 | 19 | TextView textView = (TextView)this.findViewById(R.id.activity_about_versionTxt); 20 | String version = AppUtils.getVersionName(this); 21 | textView.setText("版本号:"+version); 22 | 23 | TextView txtContext = (TextView)this.findViewById(R.id.activity_about_txtContext); 24 | String txtContextText = "框架说明"; 25 | txtContext.setText(txtContextText); 26 | } 27 | 28 | /*** 29 | * 初始化应用程序状态栏显示 30 | * @param toolbar 31 | */ 32 | @Override 33 | public void onCreateCustomToolBar(Toolbar toolbar) { 34 | super.onCreateCustomToolBar(toolbar); 35 | // toolbar.setNavigationIcon(null);//设置不显示回退按钮 36 | getLayoutInflater().inflate(R.layout.activity_toobar_view, toolbar); 37 | TextView title = (TextView) toolbar.findViewById(R.id.activity_baseview_toobar_view_txtTitle); 38 | title.setPadding(0, 0, 0, 0); 39 | title.setText("关于"); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Base/BaseActivity.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Base; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.support.v7.widget.Toolbar; 6 | import android.view.MenuItem; 7 | 8 | import com.gisluq.runtimeviewer.Common.ToolBarHelper; 9 | 10 | /** 11 | * Activity基类 12 | * 用于控制状态栏显示内容 13 | * Created by gis-luq on 2018/4/10. 14 | */ 15 | public class BaseActivity extends AppCompatActivity { 16 | 17 | private ToolBarHelper mToolBarHelper ; 18 | public Toolbar toolbar ; 19 | @Override 20 | protected void onCreate(Bundle savedInstanceState) { 21 | super.onCreate(savedInstanceState); 22 | } 23 | 24 | @Override 25 | public void setContentView(int layoutResID) { 26 | 27 | mToolBarHelper = new ToolBarHelper(this,layoutResID) ; 28 | toolbar = mToolBarHelper.getToolBar() ; 29 | setContentView(mToolBarHelper.getContentView()); 30 | /*把 activity_toolbar 设置到Activity 中*/ 31 | setSupportActionBar(toolbar); 32 | /*自定义的一些操作*/ 33 | onCreateCustomToolBar(toolbar) ; 34 | } 35 | 36 | public void onCreateCustomToolBar(Toolbar toolbar){ 37 | toolbar.setContentInsetsRelative(0,0); 38 | } 39 | 40 | @Override 41 | public boolean onOptionsItemSelected(MenuItem item) { 42 | if (item.getItemId() == android.R.id.home){ 43 | //状态栏返回按钮 44 | finish(); 45 | return true ; 46 | } 47 | return super.onOptionsItemSelected(item); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Common/DialogTools.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Common; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.Context; 5 | import android.content.DialogInterface; 6 | 7 | /** 8 | * 弹窗工具组件 9 | */ 10 | public class DialogTools { 11 | 12 | /** 13 | * 系统弹窗提示信息 14 | */ 15 | public static void showSystemDialog(Context context, 16 | String title, 17 | String msg, 18 | String negativeButtonName, 19 | DialogInterface.OnClickListener negativeButtonlistener, 20 | String positiveButtonName, 21 | DialogInterface.OnClickListener positiveButtonlistener) { 22 | AlertDialog.Builder builder = new AlertDialog.Builder(context); 23 | builder.setMessage(msg); 24 | builder.setTitle(title); 25 | //确定按钮 26 | if (negativeButtonName!=null){ 27 | builder.setNegativeButton(negativeButtonName, negativeButtonlistener); 28 | } 29 | //取消按钮 30 | if (positiveButtonName!=null){ 31 | builder.setPositiveButton(positiveButtonName, positiveButtonlistener); 32 | } 33 | 34 | builder.create().show(); 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Config/AppConfig.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Config; 2 | 3 | import android.content.Context; 4 | 5 | import com.gisluq.runtimeviewer.Config.Entity.ConfigEntity; 6 | import com.gisluq.runtimeviewer.Config.Xml.XmlParser; 7 | 8 | /** 9 | * 系统配置获取 10 | */ 11 | public class AppConfig { 12 | 13 | /** 14 | * 获取应用程序配置信息 15 | */ 16 | public static ConfigEntity getConfig(Context context) { 17 | ConfigEntity config = null; 18 | try { 19 | config = XmlParser.getConfig(context); 20 | } catch (Exception e) { 21 | e.printStackTrace(); 22 | } 23 | return config; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Config/AppWorksSpaceInit.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Config; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.content.DialogInterface; 6 | import android.util.Log; 7 | 8 | import com.gisluq.runtimeviewer.Common.DialogTools; 9 | import com.gisluq.runtimeviewer.Utils.FileUtils; 10 | 11 | 12 | /** 13 | *文件工作空间初始化类 14 | */ 15 | public class AppWorksSpaceInit { 16 | 17 | private static String Tag = "AppWorksSpaceInit"; 18 | private static boolean isWriteStorage = true;//默认可读写 19 | 20 | /** 21 | * 初始化工作空间 22 | * @param context 23 | */ 24 | public static boolean init(final Context context){ 25 | 26 | /*** 系统内部存储 *******************************************************************************************/ 27 | String WorkSpacePath= SystemDirPath.getMainWorkSpacePath(context); 28 | if(!FileUtils.isExist(WorkSpacePath)){ 29 | boolean isCreateWorkSpacePath = FileUtils.createChildFilesDir(WorkSpacePath); //创建主目录文件夹 30 | if(isCreateWorkSpacePath){ 31 | Log.d(Tag, "目录:" + WorkSpacePath + " 创建成功"); 32 | }else{ 33 | Log.d(Tag, "目录:"+WorkSpacePath + " 创建失败"); 34 | isWriteStorage = false; 35 | DialogTools.showSystemDialog(context,"系统提示",WorkSpacePath + " 创建失败,请检查APP是否具备写入权限","确定", 36 | new DialogInterface.OnClickListener() { 37 | @Override 38 | public void onClick(DialogInterface dialogInterface, int i) { 39 | ((Activity)context).finish(); 40 | } 41 | },null,null); 42 | } 43 | } 44 | 45 | String Projects = SystemDirPath.getProjectPath(context); 46 | if(!FileUtils.isExist(Projects)){ 47 | boolean isCreateProjects = FileUtils.createChildFilesDir(Projects); //创建工程目录文件夹 48 | if(isCreateProjects){ 49 | Log.d(Tag, "目录:"+Projects + " 创建成功"); 50 | }else{ 51 | Log.d(Tag, "目录:"+Projects + " 创建失败"); 52 | } 53 | } 54 | 55 | String SysConf = SystemDirPath.getSystemConfPath(context); 56 | if(!FileUtils.isExist(SysConf)){ 57 | boolean isCreateProjects = FileUtils.createChildFilesDir(SysConf); //创建系统配置目录文件夹 58 | if(isCreateProjects){ 59 | Log.d(Tag, "目录:"+Projects + " 创建成功"); 60 | }else{ 61 | Log.d(Tag, "目录:"+Projects + " 创建失败"); 62 | } 63 | } 64 | 65 | return isWriteStorage; 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Config/Entity/ConfigEntity.java: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | //Copyright (c) 2011-2012 Esri 4 | // 5 | //All rights reserved under the copyright laws of the United States. 6 | //You may freely redistribute and use this software, with or 7 | //without modification, provided you include the original copyright 8 | //and use restrictions. See use restrictions in the file: 9 | ///License.txt 10 | // 11 | //////////////////////////////////////////////////////////////////////////////// 12 | 13 | package com.gisluq.runtimeviewer.Config.Entity; 14 | 15 | 16 | import java.util.ArrayList; 17 | import java.util.List; 18 | 19 | /** 20 | * 配置文件实体类 21 | */ 22 | public class ConfigEntity 23 | { 24 | private String runtimrKey = null;//许可信息 25 | private String workspacePath = null;//工作空间路径 26 | 27 | private List mListWidget = new ArrayList(); 28 | 29 | public String getRuntimrKey() { 30 | return runtimrKey; 31 | } 32 | 33 | public void setRuntimrKey(String runtimrKey) { 34 | this.runtimrKey = runtimrKey; 35 | } 36 | 37 | public String getWorkspacePath() { 38 | return workspacePath; 39 | } 40 | 41 | public void setWorkspacePath(String workspacePath) { 42 | this.workspacePath = workspacePath; 43 | } 44 | 45 | public void setListWidget(List list) 46 | { 47 | mListWidget = list; 48 | } 49 | public List getListWidget() 50 | { 51 | return mListWidget; 52 | } 53 | 54 | 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Config/Entity/WidgetEntity.java: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | //Copyright (c) 2011-2012 Esri 4 | // 5 | //All rights reserved under the copyright laws of the United States. 6 | //You may freely redistribute and use this software, with or 7 | //without modification, provided you include the original copyright 8 | //and use restrictions. See use restrictions in the file: 9 | ///License.txt 10 | // 11 | //////////////////////////////////////////////////////////////////////////////// 12 | 13 | package com.gisluq.runtimeviewer.Config.Entity; 14 | 15 | /** 16 | * Widget组件信息 17 | */ 18 | public class WidgetEntity 19 | { 20 | private int mId = 0; 21 | private String mClassname = ""; 22 | private String mLabel = ""; 23 | private String mGroup = ""; 24 | private String mIcon = ""; 25 | private String mSelectIcon = ""; 26 | private String mConfig = ""; 27 | private boolean isShowing = false; 28 | 29 | public void setGroup(String group){ 30 | this.mGroup = group; 31 | } 32 | public String getGroup(){ 33 | return mGroup; 34 | } 35 | 36 | public boolean getIsShowing() { 37 | return isShowing; 38 | } 39 | public void setStatus(boolean isShowing) { 40 | this.isShowing = isShowing; 41 | } 42 | public void setId(int id) 43 | { 44 | mId = id; 45 | } 46 | public int getId() 47 | { 48 | return mId; 49 | } 50 | public void setClassname(String name) 51 | { 52 | mClassname = name; 53 | } 54 | public String getClassname() 55 | { 56 | return mClassname; 57 | } 58 | public void setConfig(String config) 59 | { 60 | mConfig = config; 61 | } 62 | public String getConfig() 63 | { 64 | return mConfig; 65 | } 66 | 67 | public void setSelectIconName(String mSelectIcon) { 68 | this.mSelectIcon = mSelectIcon; 69 | } 70 | 71 | public String getSelectIcon() { 72 | return mSelectIcon; 73 | } 74 | 75 | public void setIconName(String icon) 76 | { 77 | mIcon = icon; 78 | } 79 | public String getIconName() 80 | { 81 | return mIcon; 82 | } 83 | 84 | public void setLabel(String label) 85 | { 86 | mLabel = label; 87 | } 88 | public String getLabel() 89 | { 90 | return mLabel; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Config/SystemDirPath.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Config; 2 | 3 | 4 | import android.content.Context; 5 | 6 | import com.gisluq.runtimeviewer.Config.Entity.ConfigEntity; 7 | 8 | import gisluq.lib.Util.SDCardUtils; 9 | 10 | /** 11 | * 系统文件夹管理类 12 | * 记录、获取系统文件夹路径,管理存储位置信息 13 | */ 14 | public class SystemDirPath { 15 | private static String MainWorkSpace = "/RuntimeViewer";//工作空间地址 16 | 17 | private static String Projects = "/Projects"; //系统工程文件夹 18 | 19 | private static String SystemConf = "/System"; //系统模板 20 | private static String lockViewConf = "/lockscreen.conf"; //锁屏配置文件信息 21 | 22 | public static String SDPath = SDCardUtils.getSDCardPath();//系统SD卡路径 23 | 24 | public static ConfigEntity configEntity = null; 25 | /** 26 | * 获取SD卡工具路径 27 | * @return 28 | */ 29 | public static String getSDPath(){ 30 | return SDPath; 31 | } 32 | 33 | /** 34 | * 获取系统工作空间文件夹路径(主目录) 35 | * 主目录以系统内部存储为主 36 | * @return 37 | * @param context 38 | */ 39 | public static String getMainWorkSpacePath(Context context){ 40 | if (configEntity==null){ 41 | configEntity =AppConfig.getConfig(context); 42 | } 43 | String path = configEntity.getWorkspacePath(); 44 | if (path!=null||(!path.equals(""))){ 45 | return SDPath + path; 46 | } 47 | return SDPath + MainWorkSpace; 48 | } 49 | 50 | /** 51 | * 获取系统配置文件夹路径(系统配置目录仅内部存储) 52 | * @return 53 | */ 54 | public static String getSystemConfPath(Context context){ 55 | return getMainWorkSpacePath(context) + SystemConf; 56 | } 57 | 58 | 59 | /** 60 | * 获取工程文件夹路径 61 | * @return 62 | */ 63 | public static String getProjectPath(Context context){ 64 | return getMainWorkSpacePath(context) + Projects; 65 | } 66 | 67 | 68 | /** 69 | * 获取系统锁屏配置文件路径 70 | * @return 71 | */ 72 | public static String getLockViewConfPath(Context context){ 73 | return getMainWorkSpacePath(context)+ SystemConf + lockViewConf; 74 | } 75 | 76 | 77 | } 78 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/EventBus/BaseWidgetMsgEvent.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.EventBus; 2 | 3 | /** 4 | * Widget系统消息事件 5 | */ 6 | public class BaseWidgetMsgEvent { 7 | private String message; 8 | 9 | public BaseWidgetMsgEvent(String message) { 10 | this.message = message; 11 | } 12 | 13 | public String getMessage() { 14 | return message; 15 | } 16 | 17 | public void setMessage(String message) { 18 | this.message = message; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/EventBus/EventCode.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.EventBus; 2 | 3 | /** 4 | * 事件列表 5 | * Created by luq on 2018/3/26. 6 | */ 7 | public class EventCode { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/EventBus/MessageEvent.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.EventBus; 2 | 3 | /** 4 | * 消息事件 5 | * Created by luq on 2017/5/14. 6 | */ 7 | public class MessageEvent { 8 | private String message; 9 | 10 | public MessageEvent(String message) { 11 | this.message = message; 12 | } 13 | 14 | public String getMessage() { 15 | return message; 16 | } 17 | 18 | public void setMessage(String message) { 19 | this.message = message; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/GloabApp/MPApplication.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.GloabApp; 2 | 3 | import android.app.Application; 4 | import android.os.StrictMode; 5 | 6 | 7 | /** 8 | * 主Application 9 | */ 10 | public class MPApplication extends Application { 11 | 12 | @Override 13 | public void onCreate() { 14 | super.onCreate(); 15 | 16 | /** 17 | * 解决Android系统7.0以上遇到exposed beyond app through ClipData.Item.getUri 18 | * https://blog.csdn.net/FrancisBingo/article/details/78248118 19 | */ 20 | StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); 21 | StrictMode.setVmPolicy(builder.build()); 22 | builder.detectFileUriExposure(); 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Permission/PermissionsChecker.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Permission; 2 | 3 | import android.content.Context; 4 | import android.content.pm.PackageManager; 5 | import android.support.v4.content.ContextCompat; 6 | 7 | /** 8 | * 检查权限的工具类 9 | *

10 | * Created by wangchenlong on 16/1/26. 11 | */ 12 | public class PermissionsChecker { 13 | private final Context mContext; 14 | 15 | public PermissionsChecker(Context context) { 16 | mContext = context.getApplicationContext(); 17 | } 18 | 19 | // 判断权限集合 20 | public boolean lacksPermissions(String... permissions) { 21 | for (String permission : permissions) { 22 | if (lacksPermission(permission)) { 23 | return true; 24 | } 25 | } 26 | return false; 27 | } 28 | 29 | // 判断是否缺少权限 30 | private boolean lacksPermission(String permission) { 31 | return ContextCompat.checkSelfPermission(mContext, permission) == 32 | PackageManager.PERMISSION_DENIED; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Permission/PermissionsUtils.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Permission; 2 | 3 | import android.Manifest; 4 | import android.app.Activity; 5 | import android.content.Context; 6 | 7 | /** 8 | * 用户权限管理类 9 | */ 10 | public class PermissionsUtils { 11 | 12 | private static final int REQUEST_CODE = 0; // 请求码 13 | 14 | // 所需的全部权限 15 | static final String[] PERMISSIONS = new String[]{ 16 | Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, 17 | Manifest.permission.ACCESS_FINE_LOCATION 18 | }; 19 | 20 | private static PermissionsChecker mPermissionsChecker; // 权限检测器 21 | 22 | /** 23 | * 权限检查 24 | * @param context 25 | */ 26 | public static void PermissionsChecker(Context context){ 27 | mPermissionsChecker = new PermissionsChecker(context); 28 | // 缺少权限时, 进入权限配置页面 29 | if (mPermissionsChecker.lacksPermissions(PERMISSIONS)) { 30 | PermissionsActivity.startActivityForResult((Activity)context, REQUEST_CODE, PERMISSIONS); 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Utils/DialogUtils.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Utils; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.Context; 5 | import android.content.DialogInterface; 6 | 7 | /** 8 | * 系统弹窗 9 | */ 10 | public class DialogUtils { 11 | 12 | /** 13 | * 系统弹窗提示信息 14 | */ 15 | public static void showDialog(Context context, String msg) { 16 | AlertDialog.Builder builder = new AlertDialog.Builder(context); 17 | builder.setMessage(msg); 18 | builder.setTitle("系统提示"); 19 | // builder.setPositiveButton("取消", new DialogInterface.OnClickListener() { 20 | // @Override 21 | // public void onClick(DialogInterface dialog, int which) { 22 | // dialog.dismiss(); 23 | // } 24 | // }); 25 | builder.setNegativeButton("确认", new DialogInterface.OnClickListener() { 26 | @Override 27 | public void onClick(DialogInterface dialog, int which) { 28 | 29 | dialog.dismiss(); 30 | } 31 | }); 32 | builder.create().show(); 33 | 34 | } 35 | 36 | /** 37 | * 弹窗提示 38 | * @param context 39 | * @param title 40 | * @param msg 41 | */ 42 | public static void showDialog(Context context, String title, String msg) { 43 | AlertDialog.Builder builder = new AlertDialog.Builder(context); 44 | builder.setMessage(msg); 45 | builder.setTitle(title); 46 | builder.setNegativeButton("确认", new DialogInterface.OnClickListener() { 47 | @Override 48 | public void onClick(DialogInterface dialog, int which) { 49 | 50 | dialog.dismiss(); 51 | } 52 | }); 53 | builder.create().show(); 54 | 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Utils/StringUtils.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Utils; 2 | 3 | import java.util.regex.Pattern; 4 | 5 | /** 6 | * 字符串处理工具 7 | */ 8 | public class StringUtils { 9 | 10 | /** 11 | * 字符串转浮点型数据 12 | * @param alpha 13 | * @return 14 | */ 15 | private static float getFloat(String alpha) 16 | { 17 | float value = 1; 18 | if(alpha == null || alpha.equals("")) alpha = "1"; 19 | try 20 | { 21 | value = Float.parseFloat(alpha); 22 | } 23 | catch(Exception e) 24 | { 25 | e.printStackTrace(); 26 | } 27 | return value; 28 | } 29 | 30 | /** 31 | * 字符串转boolean型数据 32 | * @param visible 33 | * @return 34 | */ 35 | private static boolean getBoolean(String visible) 36 | { 37 | boolean value = false; 38 | if(visible == null || visible.equals("")) visible = "false"; 39 | try 40 | { 41 | value = Boolean.parseBoolean(visible); 42 | } 43 | catch(Exception e) 44 | { 45 | value = false; 46 | e.printStackTrace(); 47 | } 48 | return value; 49 | } 50 | 51 | /** 52 | * 判断是否为数字 53 | * @param str 54 | * @return 55 | */ 56 | public static boolean isInteger(String str) { 57 | Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); 58 | return pattern.matcher(str).matches(); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Utils/TimeUtils.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Utils; 2 | 3 | 4 | import java.text.SimpleDateFormat; 5 | 6 | /** 7 | * 时间处理工具 8 | */ 9 | public class TimeUtils { 10 | 11 | //毫秒转秒 12 | public static String long2String(long time){ 13 | 14 | //毫秒转秒 15 | int sec = (int) time / 1000 ; 16 | int min = sec / 60 ; //分钟 17 | sec = sec % 60 ; //秒 18 | if(min < 10){ //分钟补0 19 | if(sec < 10){ //秒补0 20 | return "0"+min+":0"+sec; 21 | }else{ 22 | return "0"+min+":"+sec; 23 | } 24 | }else{ 25 | if(sec < 10){ //秒补0 26 | return min+":0"+sec; 27 | }else{ 28 | return min+":"+sec; 29 | } 30 | } 31 | 32 | } 33 | 34 | /** 35 | * 返回当前时间的格式为 yyyy-MM-dd HH:mm:ss 36 | * @return 37 | */ 38 | public static String getCurrentTime() { 39 | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 40 | return sdf.format(System.currentTimeMillis()); 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Widgets/HelloWorldWidget.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Widgets; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.widget.CalendarView; 6 | 7 | import com.gisluq.runtimeviewer.BMOD.MapModule.BaseWidget.BaseWidget; 8 | import com.gisluq.runtimeviewer.R; 9 | 10 | /** 11 | * 测试用组件 12 | * Created by gis-luq on 2018/5/10. 13 | */ 14 | public class HelloWorldWidget extends BaseWidget { 15 | 16 | public View mWidgetView = null;// 17 | /** 18 | * 组件面板打开时,执行的操作 19 | * 当点击widget按钮是, WidgetManager将会调用这个方法,面板打开后的代码逻辑. 20 | * 面板关闭将会调用 "inactive" 方法 21 | */ 22 | @Override 23 | public void active() { 24 | 25 | super.active();//默认需要调用,以保证切换到其他widget时,本widget可以正确执行inactive()方法并关闭 26 | super.showWidget(mWidgetView);//加载UI并显示 27 | 28 | super.showMessageBox(super.name);//显示组件名称 29 | 30 | super.mapView.getMap().getBasemap().getBaseLayers(); 31 | super.mapView.getMap().getOperationalLayers(); 32 | 33 | super.showCenterView(); 34 | super.showCollectPointBtn(); 35 | } 36 | 37 | /** 38 | * widget组件的初始化操作,包括设置view内容,逻辑等 39 | * 该方法在应用程序加载完成后执行 40 | */ 41 | @Override 42 | public void create() { 43 | LayoutInflater mLayoutInflater = LayoutInflater.from(super.context); 44 | //设置widget组件显示内容 45 | mWidgetView = mLayoutInflater.inflate(R.layout.widget_view_helloworld,null); 46 | 47 | } 48 | 49 | /** 50 | * 组件面板关闭时,执行的操作 51 | * 面板关闭将会调用 "inactive" 方法 52 | */ 53 | @Override 54 | public void inactive(){ 55 | super.inactive(); 56 | super.hideCenterView(); 57 | super.hideCollectPointBtn(); 58 | } 59 | 60 | } 61 | 62 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Widgets/LayerManagerWidget/BaseMap/BasemapLayerInfo.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Widgets.LayerManagerWidget.BaseMap; 2 | 3 | /** 4 | * 图层信息列表 5 | * Created by gis-luq on 2015/4/2. 6 | */ 7 | public class BasemapLayerInfo { 8 | 9 | /** 10 | * 支持离线底图类型 11 | */ 12 | public static String LYAER_TYPE_TPK="LocalTiledPackage";//tpk 13 | public static String LYAER_TYPE_TIFF="LocalGeoTIFF";//tiff 14 | public static String LYAER_TYPE_SERVERCACHE="LocalServerCache";//server cache 15 | public static String LYAER_TYPE_ONLINE_TILEDLAYER="OnlineTiledMapServiceLayer";//在线切片 16 | public static String LYAER_TYPE_ONLINE_DYNAMICLAYER="OnlineDynamicMapServiceLayer";//在线动态图层 17 | public static String LYAER_TYPE_VTPK="LocalVectorTilePackage";//vtpk 18 | 19 | public static String LYAER_TYPE_TIANDITU_MAP="TianDiDuLayerMap";//天地图底图 20 | public static String LYAER_TYPE_TIANDITU_IMAGE="TianDiDuLayerImage";//天地图影像 21 | public static String LYAER_TYPE_TIANDITU_IMAGE_LABEL="TianDiDuLayerImageLabel";//天地图影像标注图层 22 | 23 | 24 | public String Name;//名称 25 | public String Type;//类型 26 | public String Path;//本地路径 27 | public int LayerIndex;//图层顺序 28 | public boolean Visable;//是否可以显示 29 | public double Opacity;//图层透明度 30 | public String Render; 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Widgets/LayerManagerWidget/UserLayers/TianDiTuLayer/TianDiTuLayer.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Widgets.LayerManagerWidget.UserLayers.TianDiTuLayer; 2 | 3 | import com.esri.arcgisruntime.arcgisservices.TileInfo; 4 | import com.esri.arcgisruntime.data.TileKey; 5 | import com.esri.arcgisruntime.geometry.Envelope; 6 | import com.esri.arcgisruntime.layers.ImageTiledLayer; 7 | 8 | import java.io.ByteArrayOutputStream; 9 | import java.io.InputStream; 10 | import java.net.HttpURLConnection; 11 | import java.net.URL; 12 | 13 | /** 14 | * Created by jiang on 2017/6/30. 15 | */ 16 | 17 | public class TianDiTuLayer extends ImageTiledLayer { 18 | private TianDiTuLayerInfo layerInfo; 19 | 20 | public TianDiTuLayer(TileInfo tileInfo, Envelope fullExtent) { 21 | super(tileInfo, fullExtent); 22 | } 23 | 24 | public void setLayerInfo(TianDiTuLayerInfo layerInfo) { 25 | this.layerInfo = layerInfo; 26 | } 27 | 28 | public TianDiTuLayerInfo getLayerInfo() { 29 | return this.layerInfo; 30 | } 31 | 32 | @Override 33 | protected byte[] getTile(TileKey tileKey) { 34 | int level = tileKey.getLevel(); 35 | int col = tileKey.getColumn(); 36 | int row = tileKey.getRow(); 37 | String mainURL = layerInfo.getTianDiTuServiceURL(); 38 | String requestUrl = mainURL + "&tilecol=" + col + "&tilerow=" + row + "&tilematrix=" + (level); 39 | try { 40 | URL url = new URL(requestUrl); 41 | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 42 | conn.setRequestMethod("GET"); 43 | conn.setConnectTimeout(5000); 44 | //获取服务器返回回来的流 45 | InputStream is = conn.getInputStream(); 46 | return getBytes(is); 47 | } catch (Exception e) { 48 | return new byte[0]; 49 | } 50 | } 51 | 52 | private byte[] getBytes(InputStream is) throws Exception { 53 | ByteArrayOutputStream bos = new ByteArrayOutputStream(); 54 | byte[] buffer = new byte[1024]; 55 | int len = 0; 56 | while ((len = is.read(buffer)) != -1) { 57 | bos.write(buffer, 0, len); 58 | } 59 | is.close(); 60 | bos.flush(); 61 | byte[] result = bos.toByteArray(); 62 | System.out.println(new String(result)); 63 | return result; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/src/main/java/com/gisluq/runtimeviewer/Widgets/QueryWidget/Bean/KeyAndValueBean.java: -------------------------------------------------------------------------------- 1 | package com.gisluq.runtimeviewer.Widgets.QueryWidget.Bean; 2 | 3 | /** 4 | * 属性 5 | * Created by gis-luq on 2018/2/24. 6 | */ 7 | 8 | public class KeyAndValueBean { 9 | private String Key; 10 | private String Value; 11 | 12 | public String getKey() { 13 | return Key; 14 | } 15 | 16 | public String getValue() { 17 | return Value; 18 | } 19 | 20 | public void setKey(String key) { 21 | Key = key; 22 | } 23 | 24 | public void setValue(String value) { 25 | Value = value; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/res/anim/widget_enter_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/widget_exit_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_circle_default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_circle_select.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bg_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_item_touch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_item_touch_txtred.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_location_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_location_btn_off.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_location_btn_on.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_more_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_touch_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_voice_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_widget_closed_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_widget_down_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_widget_item_touch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_widget_item_touch_pressed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_widget_open_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_widget_up_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout-land/activity_lockview.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 35 | 36 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout-land/activity_login.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 20 | 21 | 28 | 29 | 41 | 42 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /app/src/main/res/layout-land/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 21 | 22 | 26 | 27 | 30 | 31 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | 55 | 56 | 57 | 58 | 59 | 60 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /app/src/main/res/layout-land/activity_main_gridview_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 21 | 22 | 27 | 28 | 35 | 36 | 37 | 47 | 48 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-land/activity_lockview.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 35 | 36 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-land/activity_login.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 20 | 21 | 28 | 29 | 41 | 42 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-land/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 21 | 22 | 26 | 27 | 30 | 31 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | 55 | 56 | 57 | 58 | 59 | 60 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-land/activity_main_gridview_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 22 | 23 | 28 | 29 | 36 | 37 | 38 | 48 | 49 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-port/activity_lockview.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 21 | 22 | 35 | 36 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-port/activity_login.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 20 | 21 | 28 | 29 | 41 | 42 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-port/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 21 | 22 | 26 | 27 | 30 | 31 | 40 | 41 | 42 | 43 | 44 | 50 | 51 | 55 | 56 | 57 | 58 | 59 | 60 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large-port/activity_main_gridview_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 22 | 23 | 28 | 29 | 36 | 37 | 38 | 48 | 49 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large/base_widget_view_tools.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 16 | 17 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large/base_widget_view_tools_widget_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 24 | 25 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout-large/widget_view_layer_managet_layers_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 20 | 21 | 28 | 29 |