diff --git a/app/build.gradle b/app/build.gradle
index c68cd58ebf..772fd116aa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -55,19 +55,18 @@ dependencies {
releaseImplementation rootProject.ext.dependencies.leakcanarynoop
releaseImplementation rootProject.ext.dependencies.androidxmultidex
+ implementation rootProject.ext.dependencies.moduledemo
+ implementation rootProject.ext.dependencies.moduledemo2
+
if (Boolean.valueOf(RELEASE)) {
api rootProject.ext.dependencies.modulemain
api rootProject.ext.dependencies.mogocommons
- implementation rootProject.ext.dependencies.moduledemo
- implementation rootProject.ext.dependencies.moduledemo2
implementation rootProject.ext.dependencies.modulecommon
implementation rootProject.ext.dependencies.moduletanlu
} else {
implementation project(':modules:mogo-module-main')
implementation project(':foudations:mogo-commons')
implementation project(':modules:mogo-module-common')
- implementation project(':demo:demo-module-map')
- implementation project(':demo:demo-module-map2')
- implementation project(':demo:mogo-module-tanlu')
+ implementation project(':modules:mogo-module-tanlu')
}
}
diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index ae53ae6294..c2d61ae99d 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -7,8 +7,10 @@ import androidx.multidex.MultiDex;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.demo.module.map.DemoConstants;
import com.mogo.demo.module.map2.Demo2Constants;
+import com.mogo.module.common.ModuleType;
+import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
-import com.mogo.tanlu.TanluConstants;
+import com.mogo.tanlu.constant.TanluConstants;
/**
* @author congtaowang
@@ -21,9 +23,9 @@ public class MogoApplication extends AbsMogoApplication {
@Override
public void onCreate() {
super.onCreate();
- MogoModulePaths.addModule( DemoConstants.TAG );
- MogoModulePaths.addModule( Demo2Constants.TAG );
- MogoModulePaths.addModule( TanluConstants.TAG );
+ MogoModulePaths.addModule( new MogoModule( DemoConstants.TAG, "CARD_DEMO" ) );
+ MogoModulePaths.addModule( new MogoModule( Demo2Constants.TAG, "CARD_DEMO2" ) );
+ MogoModulePaths.addModule( new MogoModule( TanluConstants.TAG, "CARD_TYPE_ROAD_CODITION" ) );
}
@Override
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index e6b4523fd9..9c9e1a512e 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -9,13 +9,13 @@
diff --git a/build.gradle b/build.gradle
index 51e13205f9..93aead74f5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,6 +2,7 @@
apply from: "config.gradle"
apply from: "javadoc.gradle"
buildscript {
+ ext.kotlin_version = '1.3.61'
ext.kotlin_version = '1.3.61+'
repositories {
maven {
@@ -81,7 +82,7 @@ afterEvaluate {
}
}
it.configurations.all {
- resolutionStrategy.cacheChangingModulesFor 0, 'minutes'
+ resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
}
diff --git a/config.gradle b/config.gradle
index bd3882e0ed..1f7b20f715 100644
--- a/config.gradle
+++ b/config.gradle
@@ -51,10 +51,11 @@ ext {
// retrofit
retrofit : "com.squareup.retrofit2:retrofit:2.3.0",
- retrofitadapter : "com.squareup.retrofit2:adapter-rxjava:2.1.0",
+ retrofitadapter : "com.squareup.retrofit2:adapter-rxjava2:2.3.0",
retrofitconvertergson : "com.squareup.retrofit2:converter-gson:2.3.0",
retrofitconverterscalars : "com.squareup.retrofit2:converter-scalars:2.1.0",
+
// leakcanary
leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4',
leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4',
@@ -87,10 +88,12 @@ ext {
modulecommon : "com.mogo.module:module-common:${MOGO_MODULE_COMMON_VERSION}",
modulemain : "com.mogo.module:module-main:${MOGO_MODULE_MAIN_VERSION}",
modulemap : "com.mogo.module:module-map:${MOGO_MODULE_MAP_VERSION}",
+ moduleservice : "com.mogo.module:module-service:${MOGO_MODULE_SERVICE_VERSION}",
mogoservice : "com.mogo.service:mogo-service:${MOGO_SERVICE_VERSION}",
mogoserviceapi : "com.mogo.service:mogo-service-api:${MOGO_SERVICE_API_VERSION}",
moduleapps : "com.mogo.module:module-apps:${MOGO_MODULE_APPS_VERSION}",
mogoconnection : "com.mogo.connection:mogo-connection:${MOGO_CONNECTION_VERSION}",
+ moduleextensions : "com.mogo.module:module-extensions:${MOGO_MODULE_EXTENSIONS_VERSION}",
// 长链
socketsdk : 'com.zhidao.socketsdk:socketsdk:2.1.0',
@@ -99,5 +102,8 @@ ext {
//
jetbrainsannotationsjava5: "org.jetbrains:annotations-java5:15.0",
+
+ // 统一登录
+ accountsdk : "com.zhidao.accoutservice:account-sdk:1.0.0.1@aar",
]
}
\ No newline at end of file
diff --git a/demo/demo-module-map/src/main/AndroidManifest.xml b/demo/demo-module-map/src/main/AndroidManifest.xml
deleted file mode 100644
index b4ca7f3c79..0000000000
--- a/demo/demo-module-map/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java
deleted file mode 100644
index 9f9da9fd52..0000000000
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java
+++ /dev/null
@@ -1,364 +0,0 @@
-package com.mogo.demo.module.map;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.mogo.commons.mvp.IView;
-import com.mogo.commons.mvp.MvpFragment;
-import com.mogo.commons.mvp.Presenter;
-import com.mogo.map.MogoLatLng;
-import com.mogo.map.listener.IMogoMapListener;
-import com.mogo.map.location.IMogoLocationListener;
-import com.mogo.map.location.MogoLocation;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.IMogoMarkerClickListener;
-import com.mogo.map.marker.MogoMarkerOptions;
-import com.mogo.map.model.MogoPoi;
-import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
-import com.mogo.map.search.poisearch.MogoPoiResult;
-import com.mogo.map.uicontroller.EnumMapUI;
-import com.mogo.service.module.IMogoModuleLifecycle;
-import com.mogo.utils.TipToast;
-import com.mogo.utils.logger.Logger;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述:demo测试各种接口
- */
-
-public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > >
- implements IView,
- IMogoMarkerClickListener,
- IMogoModuleLifecycle,
- IMogoMapListener,
- IMogoPoiSearchListener,
- IMogoLocationListener {
-
- private static final String TAG = "demo.DemoCardViewProvider";
-
- private Button mAddMarker;
- private Button mAddMarkers;
-
- private static IMogoMarker mLastClickedMarker;
-
- private Bitmap mMarkerIcon;
- private Bitmap mClickedMarkerIcon;
- private TextView mLocInfo;
- private TextView mLoc;
- private Button m2D3D;
- private CheckBox mNaviMode;
-
- private DemoInfoWindowAdapter mDemoInfoWindowAdapter;
- private MogoLocation mLocation;
-
- private int position = -1;
-
- @Override
- protected int getLayoutId() {
- return R.layout.demo_module_card_view;
- }
-
- @Override
- protected void initViews() {
-
- position = getArguments().getInt( "position" );
-
- mNaviMode = findViewById( R.id.demo_module_id_navi_mode );
-
- ServiceHandler.getPoiSearch().setPoiSearchListener( this );
- mLocation = ServiceHandler.getLocationClient().getLastKnowLocation();
- m2D3D = findViewById( R.id.demo_module_id_2d3d );
-
- mLocInfo = findViewById( R.id.demo_module_id_loc_info );
- mLoc = findViewById( R.id.demo_module_id_loc );
- mLoc.setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- ServiceHandler.getLocationClient().start( 4_000L );
- }
- }
- );
-
- mDemoInfoWindowAdapter = new DemoInfoWindowAdapter( getContext(), ServiceHandler.getNavi(), ServiceHandler.getImageloader() );
-
- mMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_poi_location );
- mClickedMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_choice_point );
- mAddMarker = findViewById( R.id.demo_module_id_add_marker );
- mAddMarker.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .icon( mMarkerIcon )
- .latitude( 39.974525d )
- .owner( DemoConstants.TAG )
- .longitude( 116.41733d );
- IMogoMarker marker = ServiceHandler.getMarkerManager().addMarker( DemoConstants.TAG, options );
- marker.setInfoWindowAdapter( mDemoInfoWindowAdapter );
- marker.setOnMarkerClickListener( DemoCardViewFragment.this );
- }
- } );
- mAddMarkers = findViewById( R.id.demo_module_id_add_markers );
- mAddMarkers.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
-
- ArrayList< MogoMarkerOptions > optionsList = new ArrayList<>();
- for ( int i = 0; i < 10; i++ ) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .owner( DemoConstants.TAG )
- .latitude( 39.974525d + new Random().nextDouble() )
- .longitude( 116.41733d + new Random().nextDouble() );
- if ( i % 2 == 0 ) {
- options.icon( mMarkerIcon );
- } else {
- options.icon( mDemoInfoWindowAdapter.getMarkerView( options ) );
- }
- optionsList.add( options );
- }
- List< IMogoMarker > iMogoMarkers = ServiceHandler.getMarkerManager().addMarkers( DemoConstants.TAG, optionsList, true );
- for ( IMogoMarker iMogoMarker : iMogoMarkers ) {
- iMogoMarker.setInfoWindowAdapter( mDemoInfoWindowAdapter );
- iMogoMarker.setOnMarkerClickListener( DemoCardViewFragment.this );
- }
- }
- } );
-
- findViewById( R.id.demo_module_id_clear ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMarkerManager().removeMarkers( DemoConstants.TAG );
- }
- } );
-
- m2D3D.setOnClickListener( new View.OnClickListener() {
-
- private EnumMapUI ui = EnumMapUI.NorthUP_2D;
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().changeMapMode( ui = ui.next() );
- m2D3D.setText( ui.toString() );
- }
- } );
-
- findViewById( R.id.demo_module_id_current ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().moveToCenter( new MogoLatLng( mLocation.getLatitude(), mLocation.getLongitude() ) );
- }
- } );
-
- findViewById( R.id.demo_module_id_start_navi ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- ServiceHandler.getNavi().startNavi( !mNaviMode.isChecked() );
- }
- } );
-
- findViewById( R.id.demo_module_id_stop_navi ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- ServiceHandler.getNavi().stopNavi();
- }
- } );
-
- findViewById( R.id.demo_module_id_traffic ).setOnClickListener( new View.OnClickListener() {
-
- private boolean enable = true;
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().setTrafficEnabled( enable = !enable );
- }
- } );
-
- findViewById( R.id.demo_module_id_zoom_in ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().changeZoom( true );
- }
- } );
-
- findViewById( R.id.demo_module_id_zoom_out ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().changeZoom( false );
- }
- } );
-
- findViewById( R.id.demo_module_id_day_light ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().changeMapMode( EnumMapUI.Type_Light );
- }
- } );
-
- findViewById( R.id.demo_module_id_day_night ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().changeMapMode( EnumMapUI.Type_Night );
- }
- } );
-
- findViewById( R.id.demo_module_id_display_overlay ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().displayOverview();
- }
- } );
-
- findViewById( R.id.demo_module_id_reverse_lock ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- ServiceHandler.getMapUIController().recoverLockMode();
- }
- } );
-
- ServiceHandler.getLocationClient().addLocationListener( new IMogoLocationListener() {
- @Override
- public void onLocationChanged( MogoLocation location ) {
- mLocation = location;
- Logger.d( TAG, "demo模块定位,定位间隔4s" );
- }
- } );
- }
-
- @Override
- public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
- super.onActivityCreated( savedInstanceState );
- getViewLifecycleOwner().getLifecycle().addObserver( mPresenter );
- }
-
- @Override
- public boolean onMarkerClicked( IMogoMarker marker ) {
-// if ( mLastClickedMarker != null ) {
-// mLastClickedMarker.setIcon( this.mMarkerIcon );
-// }
-// marker.setIcon( mClickedMarkerIcon );
-// mLastClickedMarker = marker;
-
-// marker.showInfoWindow();
- return true;
- }
-
- @NonNull
- @Override
- protected Presenter createPresenter() {
- return new Presenter( this ) {
- };
- }
-
- @Override
- public void onPerform() {
- Logger.d( TAG, "卡片demo有效" );
- }
-
- @Override
- public void onDisable() {
- Logger.d( TAG, "卡片demo无效" );
- }
-
-
- @Override
- public void onMapLoaded() {
- Logger.d( TAG, "地图加载事件" );
- }
-
- @Override
- public void onTouch( MotionEvent motionEvent ) {
-// Logger.d( TAG, "地图触摸事件" );
- }
-
- @Override
- public void onPOIClick( MogoPoi poi ) {
- if ( poi != null ) {
- TipToast.shortTip( poi.getName() );
- }
- ServiceHandler.getPoiSearch().searchPOIIdAsyn( poi.getPoiId() );
- }
-
- @Override
- public void onPoiSearched( MogoPoiResult result, int errorCode ) {
-
- }
-
- private IMogoMarker mPoiMarker;
-
- @Override
- public void onPoiItemSearched( MogoPoiItem item, int errorCode ) {
- if ( item == null ) {
- return;
- }
- if ( mPoiMarker != null ) {
- mPoiMarker.destroy();
- }
- mPoiMarker = ServiceHandler.getMarkerManager().addMarker( DemoConstants.TAG, new MogoMarkerOptions()
- .longitude( item.getPoint().lng )
- .latitude( item.getPoint().lat )
- .icon( mMarkerIcon ) );
- if ( mPoiMarker != null ) {
- mPoiMarker.setInfoWindowAdapter( mDemoInfoWindowAdapter );
- mPoiMarker.setObject( item );
- mPoiMarker.showInfoWindow();
- }
- }
-
- @Override
- public void onLocationChanged( MogoLocation location ) {
- mLocation = location;
- Logger.i( TAG, "接受到的地图模块定位信息" );
- if ( mLocInfo != null ) {
- if ( location.getErrCode() == 0 ) {
- mLocInfo.setText( "当前位置:" + location.getAddress() );
- } else {
- mLocInfo.setText( location.getErrInfo() );
- }
- }
- }
-
- @Override
- public void onMapClick( MogoLatLng latLng ) {
-
- }
-
- @Override
- public void onLockMap( boolean isLock ) {
-
- }
-
- @Override
- public void onMapModeChanged( EnumMapUI ui ) {
- Logger.d( TAG, ui.name() );
- }
-
- @Override
- public void onDestroyView() {
- Logger.w( TAG, "onDestroyView position=" + position );
- super.onDestroyView();
- getViewLifecycleOwner().getLifecycle().removeObserver( mPresenter );
- ServiceHandler.getLocationClient().removeLocationListener( this );
- }
-}
diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java
deleted file mode 100644
index 12f06d2fea..0000000000
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.mogo.demo.module.map;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.view.MotionEvent;
-import android.view.View;
-
-import androidx.fragment.app.Fragment;
-
-import com.alibaba.android.arouter.facade.annotation.Route;
-import com.mogo.map.MogoLatLng;
-import com.mogo.map.listener.IMogoMapListener;
-import com.mogo.map.location.IMogoLocationListener;
-import com.mogo.map.location.MogoLocation;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.IMogoMarkerClickListener;
-import com.mogo.map.model.MogoPoi;
-import com.mogo.map.navi.IMogoNaviListener;
-import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
-import com.mogo.map.search.poisearch.MogoPoiResult;
-import com.mogo.map.uicontroller.EnumMapUI;
-import com.mogo.module.common.MogoModulePaths;
-import com.mogo.service.module.IMogoModuleLifecycle;
-import com.mogo.service.module.IMogoModuleProvider;
-import com.mogo.utils.logger.Logger;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述
- */
-@Route( path = DemoConstants.TAG )
-public class DemoCardViewProvider implements IMogoModuleProvider {
-
- private static final String TAG = "DemoCardViewProvider";
-
- private DemoCardViewFragment fragment;
-
- @Override
- public Fragment createFragment( Context context, Bundle data ) {
- fragment = new DemoCardViewFragment();
- fragment.setArguments( data );
- Logger.i( TAG, "createFragment" );
- return fragment;
- }
-
- @Override
- public void init( Context context ) {
- ServiceHandler.init( context );
- }
-
- @Override
- public String getModuleName() {
- return DemoConstants.TAG;
- }
-
- @Override
- public View createView( Context context ) {
- // don't
- return null;
- }
-
- @Override
- public int getType() {
- return IMogoModuleProvider.TYPE_FRAGMENT;
- }
-
- @Override
- public IMogoNaviListener getNaviListener() {
- return null;
- }
-
-
- @Override
- public IMogoModuleLifecycle getCardLifecycle() {
- return fragment;
- }
-
- @Override
- public IMogoMapListener getMapListener() {
- return fragment;
- }
-
- @Override
- public IMogoLocationListener getLocationListener() {
- return fragment;
- }
-}
diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java
deleted file mode 100644
index 3178029fde..0000000000
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mogo.demo.module.map;
-
-import com.mogo.module.common.MogoModulePaths;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述
- */
-public class DemoConstants {
-
- public static final String TAG = "/demo/ui";
-}
diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java
deleted file mode 100644
index e5e0dc8043..0000000000
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.mogo.demo.module.map;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.mogo.map.marker.IMogoInfoWindowAdapter;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.MogoMarkerOptions;
-import com.mogo.map.navi.IMogoNavi;
-import com.mogo.map.navi.MogoNaviConfig;
-import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.service.imageloader.IMogoImageLoaderListener;
-import com.mogo.service.imageloader.IMogoImageloader;
-import com.mogo.service.imageloader.MogoImageView;
-import com.mogo.utils.WindowUtils;
-import com.mogo.utils.logger.Logger;
-import com.mogo.utils.network.utils.Util;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述
- */
-public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter {
-
- private static final String TAG = "DemoInfoWindowAdapter";
-
- private Context mContext;
- private IMogoNavi mNavi;
- private IMogoImageloader mImageloader;
-
- public DemoInfoWindowAdapter( Context mContext, IMogoNavi mNavi, IMogoImageloader iMogoImageloader ) {
- this.mContext = mContext;
- this.mNavi = mNavi;
- this.mImageloader = iMogoImageloader;
- }
-
- @Override
- public View getInfoWindow( IMogoMarker marker ) {
- if ( marker.getObject() instanceof MogoPoiItem ) {
- View view = LayoutInflater.from( mContext ).inflate( R.layout.demo_module_demo_poi_info_window, null );
- renderPoiVew( view, marker, ( ( MogoPoiItem ) marker.getObject() ) );
- return view;
- } else {
- View view = LayoutInflater.from( mContext ).inflate( R.layout.demo_module_demo_info_window, null );
- renderView( view, marker );
- return view;
- }
-
- }
-
- private void renderView( View view, final IMogoMarker marker ) {
- final TextView time = view.findViewById( R.id.demo_module_id_iw_time );
- Button refresh = view.findViewById( R.id.demo_module_id_iw_refresh );
- time.setText( new SimpleDateFormat( "yyyyMMdd HHMMSS" ).format( new Date() ) );
- refresh.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- marker.showInfoWindow();
- }
- } );
- Button navi2 = view.findViewById( R.id.demo_module_id_iw_navito );
- navi2.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- if ( mNavi != null ) {
- mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
- }
- }
- } );
- Button stopNavi = view.findViewById( R.id.demo_module_id_iw_navi_stop );
- stopNavi.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- if ( mNavi != null ) {
- mNavi.stopNavi();
- }
- }
- } );
- }
-
- private void renderPoiVew( View view, final IMogoMarker marker, MogoPoiItem item ) {
- final TextView time = view.findViewById( R.id.demo_module_id_iw_poi_title );
- time.setText( item.getTitle() );
- Button navi2 = view.findViewById( R.id.demo_module_id_iw_poi_navito );
- navi2.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- if ( mNavi != null ) {
- mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
- }
- marker.hideInfoWindow();
- marker.remove();
- }
- } );
- }
-
- public View getMarkerView( final MogoMarkerOptions options ) {
- final View view = LayoutInflater.from( mContext ).inflate( R.layout.demo_module_demo_bubble_marker, null );
- final MogoImageView icon = view.findViewById( R.id.icon );
- mImageloader.displayImage( "http://imgnews.gmw.cn/attachement/jpg/site2/20191229/00d86176ed0b1f71f4580f.jpg", icon, WindowUtils.dip2px( mContext, 50 ), WindowUtils.dip2px( mContext, 50 ),
- new IMogoImageLoaderListener() {
- @Override
- public void onStart() {
-
- }
-
- @Override
- public void onCompleted( Bitmap bitmap ) {
- // 刷新图标
- Logger.d( TAG, "loaded." );
- options.icon( view );
- options.notifyObservers();
- }
-
- @Override
- public void onFailure( Exception e ) {
-
- }
- } );
- return view;
- }
-}
-
diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/ServiceHandler.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/ServiceHandler.java
deleted file mode 100644
index 3eff1914fb..0000000000
--- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/ServiceHandler.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.mogo.demo.module.map;
-
-import android.content.Context;
-
-import com.alibaba.android.arouter.launcher.ARouter;
-import com.mogo.map.location.IMogoLocationClient;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.IMogoMarkerManager;
-import com.mogo.map.navi.IMogoNavi;
-import com.mogo.map.search.poisearch.IMogoPoiSearch;
-import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
-import com.mogo.map.uicontroller.IMogoMapUIController;
-import com.mogo.service.MogoServicePaths;
-import com.mogo.service.imageloader.IMogoImageloader;
-import com.mogo.service.map.IMogoMapService;
-
-/**
- * @author congtaowang
- * @since 2019-12-30
- *
- * 持有服务接口实例
- */
-public class ServiceHandler {
-
- private static IMogoMapService mMapService;
-
- private static IMogoPoiSearch mPoiSearch;
- private static IMogoLocationClient mLocationClient;
- private static IMogoMarkerManager mMarkerManager;
- private static IMogoNavi mNavi;
- private static IMogoMapUIController mMapUIController;
-
- private static IMogoImageloader mImageloader;
-
- public static void init( Context context ) {
- mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
- mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
- mImageloader = ( IMogoImageloader ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_IMAGE_LOADER ).navigation( context );
- mPoiSearch = mMapService.getPoiSearch( context, new MogoPoiSearchQuery() );
- mLocationClient = mMapService.getLocationClient( context );
- mMarkerManager = mMapService.getMarkerManager( context );
- mNavi = mMapService.getNavi( context );
- mMapUIController = mMapService.getMapUIController();
- }
-
- public static IMogoMapService getMapService() {
- return mMapService;
- }
-
- public static IMogoPoiSearch getPoiSearch() {
- return mPoiSearch;
- }
-
- public static IMogoLocationClient getLocationClient() {
- return mLocationClient;
- }
-
- public static IMogoMarkerManager getMarkerManager() {
- return mMarkerManager;
- }
-
- public static IMogoNavi getNavi() {
- return mNavi;
- }
-
- public static IMogoMapUIController getMapUIController() {
- return mMapUIController;
- }
-
- public static IMogoImageloader getImageloader() {
- return mImageloader;
- }
-}
diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml
deleted file mode 100644
index 3a5cf150c4..0000000000
--- a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_demo_bubble_marker.xml b/demo/demo-module-map/src/main/res/layout/demo_module_demo_bubble_marker.xml
deleted file mode 100644
index a062cf73d1..0000000000
--- a/demo/demo-module-map/src/main/res/layout/demo_module_demo_bubble_marker.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_demo_info_window.xml b/demo/demo-module-map/src/main/res/layout/demo_module_demo_info_window.xml
deleted file mode 100644
index e173483602..0000000000
--- a/demo/demo-module-map/src/main/res/layout/demo_module_demo_info_window.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_demo_poi_info_window.xml b/demo/demo-module-map/src/main/res/layout/demo_module_demo_poi_info_window.xml
deleted file mode 100644
index c8fe367ddd..0000000000
--- a/demo/demo-module-map/src/main/res/layout/demo_module_demo_poi_info_window.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/demo-module-map/src/main/res/values/strings.xml b/demo/demo-module-map/src/main/res/values/strings.xml
deleted file mode 100644
index fdf7daeb24..0000000000
--- a/demo/demo-module-map/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- demo_module_map
-
diff --git a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2CardViewFragment.java b/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2CardViewFragment.java
deleted file mode 100644
index 2245d10c56..0000000000
--- a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2CardViewFragment.java
+++ /dev/null
@@ -1,388 +0,0 @@
-package com.mogo.demo.module.map2;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.alibaba.android.arouter.launcher.ARouter;
-import com.mogo.commons.mvp.IView;
-import com.mogo.commons.mvp.MvpFragment;
-import com.mogo.commons.mvp.Presenter;
-import com.mogo.map.MogoLatLng;
-import com.mogo.map.listener.IMogoMapListener;
-import com.mogo.map.location.IMogoLocationListener;
-import com.mogo.map.location.MogoLocation;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.IMogoMarkerClickListener;
-import com.mogo.map.marker.MogoMarkerOptions;
-import com.mogo.map.model.MogoPoi;
-import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
-import com.mogo.map.search.poisearch.MogoPoiResult;
-import com.mogo.map.uicontroller.EnumMapUI;
-import com.mogo.service.MogoServicePaths;
-import com.mogo.service.connection.IMogoOnMessageListener;
-import com.mogo.service.connection.IMogoSocketManager;
-import com.mogo.service.connection.MsgBody;
-import com.mogo.service.module.IMogoModuleLifecycle;
-import com.mogo.utils.TipToast;
-import com.mogo.utils.logger.Logger;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述:demo测试各种接口
- */
-public class Demo2CardViewFragment extends MvpFragment< IView, Presenter< IView > >
- implements IView,
- IMogoMarkerClickListener,
- IMogoModuleLifecycle,
- IMogoMapListener,
- IMogoPoiSearchListener,
- IMogoLocationListener {
-
- private static final String TAG = "demo.Demo2CardViewProvider";
-
- private Button mAddMarker;
- private Button mAddMarkers;
-
- private Bitmap mMarkerIcon;
- private Bitmap mClickedMarkerIcon;
- private TextView mLocInfo;
- private TextView mLoc;
- private Button m2D3D;
- private CheckBox mNaviMode;
-
- private IMogoMarker mLastClickedMarker;
-
- private Demo2InfoWindowAdapter mDemoInfoWindowAdapter;
- private MogoLocation mLocation;
-
- private IMogoSocketManager mMogoSocketManager;
-
- private int position = -1;
-
- @Override
- protected int getLayoutId() {
- return R.layout.demo2_module_card_view;
- }
-
- @Override
- protected void initViews() {
-
- position = getArguments().getInt( "position" );
-
- mNaviMode = findViewById( R.id.demo_module_id_navi_mode );
-
- Service2Handler.getPoiSearch().setPoiSearchListener( this );
- mLocation = Service2Handler.getLocationClient().getLastKnowLocation();
-
- m2D3D = findViewById( R.id.demo_module_id_2d3d );
-
- mLocInfo = findViewById( R.id.demo_module_id_loc_info );
- mLoc = findViewById( R.id.demo_module_id_loc );
- mLoc.setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- Service2Handler.getLocationClient().start( 4_000L );
- }
- }
- );
-
- mDemoInfoWindowAdapter = new Demo2InfoWindowAdapter( getContext(), Service2Handler.getNavi(), Service2Handler.getImageloader() );
-
- mMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_poi_location );
- mClickedMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_choice_point );
- mAddMarker = findViewById( R.id.demo_module_id_add_marker );
- mAddMarker.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .icon( mMarkerIcon )
- .latitude( 39.974525d )
- .owner( Demo2Constants.TAG )
- .longitude( 116.41733d );
- IMogoMarker marker = Service2Handler.getMarkerManager().addMarker( Demo2Constants.TAG, options );
- marker.setInfoWindowAdapter( mDemoInfoWindowAdapter );
- marker.setOnMarkerClickListener( Demo2CardViewFragment.this );
- }
- } );
- mAddMarkers = findViewById( R.id.demo_module_id_add_markers );
- mAddMarkers.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
-
- ArrayList< MogoMarkerOptions > optionsList = new ArrayList<>();
- for ( int i = 0; i < 10; i++ ) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .owner( Demo2Constants.TAG )
- .latitude( 39.974525d + new Random().nextDouble() )
- .longitude( 116.41733d + new Random().nextDouble() );
- if ( i % 2 == 0 ) {
- options.icon( mMarkerIcon );
- } else {
- options.icon( mDemoInfoWindowAdapter.getMarkerView( options ) );
- }
- optionsList.add( options );
- }
- List< IMogoMarker > iMogoMarkers = Service2Handler.getMarkerManager().addMarkers( Demo2Constants.TAG, optionsList, true );
- for ( IMogoMarker iMogoMarker : iMogoMarkers ) {
- iMogoMarker.setInfoWindowAdapter( mDemoInfoWindowAdapter );
- iMogoMarker.setOnMarkerClickListener( Demo2CardViewFragment.this );
- }
- }
- } );
-
- findViewById( R.id.demo_module_id_clear ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- Service2Handler.getMarkerManager().removeMarkers( Demo2Constants.TAG );
- }
- } );
-
- m2D3D.setOnClickListener( new View.OnClickListener() {
-
- private EnumMapUI ui = EnumMapUI.NorthUP_2D;
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().changeMapMode( ui = ui.next() );
- m2D3D.setText( ui.toString() );
- }
- } );
-
- findViewById( R.id.demo_module_id_current ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().moveToCenter( new MogoLatLng( mLocation.getLatitude(), mLocation.getLongitude() ) );
- }
- } );
-
- findViewById( R.id.demo_module_id_start_navi ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- Service2Handler.getNavi().startNavi( !mNaviMode.isChecked() );
- }
- } );
-
- findViewById( R.id.demo_module_id_stop_navi ).setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- Service2Handler.getNavi().stopNavi();
- }
- } );
-
- findViewById( R.id.demo_module_id_traffic ).setOnClickListener( new View.OnClickListener() {
-
- private boolean enable = true;
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().setTrafficEnabled( enable = !enable );
- }
- } );
-
- findViewById( R.id.demo_module_id_zoom_in ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().changeZoom( true );
- }
- } );
-
- findViewById( R.id.demo_module_id_zoom_out ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().changeZoom( false );
- }
- } );
-
- findViewById( R.id.demo_module_id_day_light ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().changeMapMode( EnumMapUI.Type_Light );
- }
- } );
-
- findViewById( R.id.demo_module_id_day_night ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().changeMapMode( EnumMapUI.Type_Night );
- }
- } );
-
- findViewById( R.id.demo_module_id_display_overlay ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().displayOverview();
- }
- } );
-
- findViewById( R.id.demo_module_id_reverse_lock ).setOnClickListener( new View.OnClickListener() {
-
- @Override
- public void onClick( View v ) {
- Service2Handler.getMapUIController().recoverLockMode();
- }
- } );
-
- Service2Handler.getLocationClient().addLocationListener( new IMogoLocationListener() {
- @Override
- public void onLocationChanged( MogoLocation location ) {
- mLocation = location;
- Logger.d( TAG, "demo模块定位,定位间隔4s" );
- }
- } );
-
- mMogoSocketManager = ( IMogoSocketManager ) ARouter.getInstance().build( MogoServicePaths.PATH_SOCKET_MANAGER ).navigation();
- mMogoSocketManager.registerOnMessageListener( 123, new IMogoOnMessageListener() {
- @Override
- public Class target() {
- return null;
- }
-
- @Override
- public void onMsgReceived( Object obj ) {
-
- }
- } );
- }
-
- @Override
- public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
- super.onActivityCreated( savedInstanceState );
- getViewLifecycleOwner().getLifecycle().addObserver( mPresenter );
- }
-
- @Override
- public boolean onMarkerClicked( IMogoMarker marker ) {
-// if ( mLastClickedMarker != null ) {
-// mLastClickedMarker.setIcon( this.mMarkerIcon );
-// }
-// marker.setIcon( mClickedMarkerIcon );
-// mLastClickedMarker = marker;
-
-// marker.showInfoWindow();
- return true;
- }
-
- @NonNull
- @Override
- protected Presenter createPresenter() {
- return new Presenter( this ) {
- };
- }
-
- @Override
- public void onPerform() {
- Logger.d( TAG, "卡片2有效" );
- }
-
- @Override
- public void onDisable() {
- Logger.d( TAG, "卡片2无效" );
- }
-
-
- @Override
- public void onMapLoaded() {
- Logger.d( TAG, "地图加载事件" );
- }
-
- @Override
- public void onTouch( MotionEvent motionEvent ) {
-// Logger.d( TAG, "地图触摸事件" );
- }
-
- @Override
- public void onPOIClick( MogoPoi poi ) {
- if ( poi != null ) {
- TipToast.shortTip( poi.getName() );
- }
- Service2Handler.getPoiSearch().searchPOIIdAsyn( poi.getPoiId() );
- }
-
- @Override
- public void onPoiSearched( MogoPoiResult result, int errorCode ) {
-
- }
-
- private IMogoMarker mPoiMarker;
-
- @Override
- public void onPoiItemSearched( MogoPoiItem item, int errorCode ) {
- if ( item == null ) {
- return;
- }
- if ( mPoiMarker != null ) {
- mPoiMarker.destroy();
- }
- mPoiMarker = Service2Handler.getMarkerManager().addMarker( Demo2Constants.TAG, new MogoMarkerOptions()
- .longitude( item.getPoint().lng )
- .latitude( item.getPoint().lat )
- .icon( mMarkerIcon ) );
- if ( mPoiMarker != null ) {
- mPoiMarker.setInfoWindowAdapter( mDemoInfoWindowAdapter );
- mPoiMarker.setObject( item );
- mPoiMarker.showInfoWindow();
- }
- }
-
- @Override
- public void onLocationChanged( MogoLocation location ) {
- mLocation = location;
- Logger.i( TAG, "接受到的地图模块定位信息" );
- if ( mLocInfo != null ) {
- if ( location.getErrCode() == 0 ) {
- mLocInfo.setText( "当前位置:" + location.getAddress() );
- } else {
- mLocInfo.setText( location.getErrInfo() );
- }
- }
- }
-
- @Override
- public void onMapClick( MogoLatLng latLng ) {
-
- }
-
- @Override
- public void onLockMap( boolean isLock ) {
-
- }
-
- @Override
- public void onMapModeChanged( EnumMapUI ui ) {
- Logger.d( TAG, ui.name() );
- }
-
- @Override
- public void onDestroyView() {
- Logger.w( TAG, "onDestroyView position=" + position );
- super.onDestroyView();
- getViewLifecycleOwner().getLifecycle().removeObserver( mPresenter );
- Service2Handler.getLocationClient().removeLocationListener( this );
- if ( mLastClickedMarker != null ) {
- mLastClickedMarker.destroy();
- mLastClickedMarker = null;
- }
- }
-}
diff --git a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2Constants.java b/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2Constants.java
deleted file mode 100644
index 27bf85a7eb..0000000000
--- a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2Constants.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.mogo.demo.module.map2;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述
- */
-public class Demo2Constants {
-
- public static final String TAG = "/demo2/ui";
-}
diff --git a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2InfoWindowAdapter.java b/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2InfoWindowAdapter.java
deleted file mode 100644
index e01f05746c..0000000000
--- a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2InfoWindowAdapter.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.mogo.demo.module.map2;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.mogo.map.marker.IMogoInfoWindowAdapter;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.MogoMarkerOptions;
-import com.mogo.map.navi.IMogoNavi;
-import com.mogo.map.navi.MogoNaviConfig;
-import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.service.imageloader.IMogoImageLoaderListener;
-import com.mogo.service.imageloader.IMogoImageloader;
-import com.mogo.service.imageloader.MogoImageView;
-import com.mogo.utils.WindowUtils;
-import com.mogo.utils.logger.Logger;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * @author congtaowang
- * @since 2019-12-24
- *
- * 描述
- */
-public class Demo2InfoWindowAdapter implements IMogoInfoWindowAdapter {
-
- private static final String TAG = "DemoInfoWindowAdapter";
-
- private Context mContext;
- private IMogoNavi mNavi;
- private IMogoImageloader mImageloader;
-
- public Demo2InfoWindowAdapter( Context mContext, IMogoNavi mNavi, IMogoImageloader iMogoImageloader ) {
- this.mContext = mContext;
- this.mNavi = mNavi;
- this.mImageloader = iMogoImageloader;
- }
-
- @Override
- public View getInfoWindow( IMogoMarker marker ) {
- if ( marker.getObject() instanceof MogoPoiItem ) {
- View view = LayoutInflater.from( mContext ).inflate( R.layout.demo2_module_demo_poi_info_window, null );
- renderPoiVew( view, marker, ( ( MogoPoiItem ) marker.getObject() ) );
- return view;
- } else {
- View view = LayoutInflater.from( mContext ).inflate( R.layout.demo2_module_demo_info_window, null );
- renderView( view, marker );
- return view;
- }
-
- }
-
- private void renderView( View view, final IMogoMarker marker ) {
- final TextView time = view.findViewById( R.id.demo_module_id_iw_time );
- Button refresh = view.findViewById( R.id.demo_module_id_iw_refresh );
- time.setText( new SimpleDateFormat( "yyyyMMdd HHMMSS" ).format( new Date() ) );
- refresh.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- marker.showInfoWindow();
- }
- } );
- Button navi2 = view.findViewById( R.id.demo_module_id_iw_navito );
- navi2.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- if ( mNavi != null ) {
- mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
- }
- }
- } );
- Button stopNavi = view.findViewById( R.id.demo_module_id_iw_navi_stop );
- stopNavi.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- if ( mNavi != null ) {
- mNavi.stopNavi();
- }
- }
- } );
- }
-
- private void renderPoiVew( View view, final IMogoMarker marker, MogoPoiItem item ) {
- final TextView time = view.findViewById( R.id.demo_module_id_iw_poi_title );
- time.setText( item.getTitle() );
- Button navi2 = view.findViewById( R.id.demo_module_id_iw_poi_navito );
- navi2.setOnClickListener( new View.OnClickListener() {
- @Override
- public void onClick( View v ) {
- if ( mNavi != null ) {
- mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
- }
- marker.hideInfoWindow();
- marker.remove();
- }
- } );
- }
-
- public View getMarkerView( final MogoMarkerOptions options ) {
- final View view = LayoutInflater.from( mContext ).inflate( R.layout.demo2_module_demo_bubble_marker, null );
- final MogoImageView icon = view.findViewById( R.id.icon );
- mImageloader.displayImage( "http://imgnews.gmw.cn/attachement/jpg/site2/20191229/00d86176ed0b1f71f4580f.jpg", icon, WindowUtils.dip2px( mContext, 50 ), WindowUtils.dip2px( mContext, 50 ),
- new IMogoImageLoaderListener() {
- @Override
- public void onStart() {
-
- }
-
- @Override
- public void onCompleted( Bitmap bitmap ) {
- // 刷新图标
- Logger.d( TAG, "loaded." );
- options.icon( view );
- options.notifyObservers();
- }
-
- @Override
- public void onFailure( Exception e ) {
-
- }
- } );
- return view;
- }
-}
-
diff --git a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Service2Handler.java b/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Service2Handler.java
deleted file mode 100644
index 3394c048dc..0000000000
--- a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Service2Handler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.mogo.demo.module.map2;
-
-import android.content.Context;
-
-import com.alibaba.android.arouter.launcher.ARouter;
-import com.mogo.map.location.IMogoLocationClient;
-import com.mogo.map.marker.IMogoMarkerManager;
-import com.mogo.map.navi.IMogoNavi;
-import com.mogo.map.search.poisearch.IMogoPoiSearch;
-import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
-import com.mogo.map.uicontroller.IMogoMapUIController;
-import com.mogo.service.MogoServicePaths;
-import com.mogo.service.imageloader.IMogoImageloader;
-import com.mogo.service.map.IMogoMapService;
-
-/**
- * @author congtaowang
- * @since 2019-12-30
- *
- * 持有服务接口实例
- */
-public class Service2Handler {
-
- private static IMogoMapService mMapService;
-
- private static IMogoPoiSearch mPoiSearch;
- private static IMogoLocationClient mLocationClient;
- private static IMogoMarkerManager mMarkerManager;
- private static IMogoNavi mNavi;
- private static IMogoMapUIController mMapUIController;
-
- private static IMogoImageloader mImageloader;
-
- public static void init( Context context ) {
- mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
- mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
- mImageloader = ( IMogoImageloader ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_IMAGE_LOADER ).navigation( context );
- mPoiSearch = mMapService.getPoiSearch( context, new MogoPoiSearchQuery() );
- mLocationClient = mMapService.getLocationClient( context );
- mMarkerManager = mMapService.getMarkerManager( context );
- mNavi = mMapService.getNavi( context );
- mMapUIController = mMapService.getMapUIController();
- }
-
- public static IMogoMapService getMapService() {
- return mMapService;
- }
-
- public static IMogoPoiSearch getPoiSearch() {
- return mPoiSearch;
- }
-
- public static IMogoLocationClient getLocationClient() {
- return mLocationClient;
- }
-
- public static IMogoMarkerManager getMarkerManager() {
- return mMarkerManager;
- }
-
- public static IMogoNavi getNavi() {
- return mNavi;
- }
-
- public static IMogoMapUIController getMapUIController() {
- return mMapUIController;
- }
-
- public static IMogoImageloader getImageloader() {
- return mImageloader;
- }
-}
diff --git a/demo/demo-module-map2/src/main/res/layout/demo2_module_card_view.xml b/demo/demo-module-map2/src/main/res/layout/demo2_module_card_view.xml
deleted file mode 100644
index cefe9ca1db..0000000000
--- a/demo/demo-module-map2/src/main/res/layout/demo2_module_card_view.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_bubble_marker.xml b/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_bubble_marker.xml
deleted file mode 100644
index a062cf73d1..0000000000
--- a/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_bubble_marker.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_info_window.xml b/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_info_window.xml
deleted file mode 100644
index e173483602..0000000000
--- a/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_info_window.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_poi_info_window.xml b/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_poi_info_window.xml
deleted file mode 100644
index c8fe367ddd..0000000000
--- a/demo/demo-module-map2/src/main/res/layout/demo2_module_demo_poi_info_window.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/demo-module-map2/src/main/res/values/strings.xml b/demo/demo-module-map2/src/main/res/values/strings.xml
deleted file mode 100644
index afb18fc78a..0000000000
--- a/demo/demo-module-map2/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- demo-module-map2
-
diff --git a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java b/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java
deleted file mode 100644
index 3dd94740b6..0000000000
--- a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java
+++ /dev/null
@@ -1,365 +0,0 @@
-package com.mogo.tanlu;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.mogo.commons.mvp.IView;
-import com.mogo.commons.mvp.MvpFragment;
-import com.mogo.commons.mvp.Presenter;
-import com.mogo.map.MogoLatLng;
-import com.mogo.map.listener.IMogoMapListener;
-import com.mogo.map.location.IMogoLocationListener;
-import com.mogo.map.location.MogoLocation;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.IMogoMarkerClickListener;
-import com.mogo.map.marker.MogoMarkerOptions;
-import com.mogo.map.model.MogoPoi;
-import com.mogo.map.search.geo.MogoPoiItem;
-import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
-import com.mogo.map.search.poisearch.MogoPoiResult;
-import com.mogo.map.uicontroller.EnumMapUI;
-import com.mogo.service.module.IMogoModuleLifecycle;
-import com.mogo.utils.TipToast;
-import com.mogo.utils.logger.Logger;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-/**
- * @author lixiaopeng
- * @description
- * @since 2020-01-02
- */
-public class TanluCardViewFragment extends MvpFragment>
- implements IView,
- IMogoMarkerClickListener,
- IMogoModuleLifecycle,
- IMogoMapListener,
- IMogoPoiSearchListener,
- IMogoLocationListener {
-
- private static final String TAG = "TanluCardViewFragment";
-
- private Button mAddMarker;
- private Button mAddMarkers;
-
- private Bitmap mMarkerIcon;
- private Bitmap mClickedMarkerIcon;
- private TextView mLocInfo;
- private TextView mLoc;
- private Button m2D3D;
- private CheckBox mNaviMode;
-
- private IMogoMarker mLastClickedMarker;
- private TanluInfoWindowAdapter mDemoInfoWindowAdapter;
- private MogoLocation mLocation;
-
- private int position = -1;
-
- @Override
- protected int getLayoutId() {
- return R.layout.tanlu_card_view;
- }
-
- @Override
- protected void initViews() {
- position = getArguments().getInt("position");
-
- mNaviMode = findViewById(R.id.demo_module_id_navi_mode);
-
- TanluServiceHandler.getPoiSearch().setPoiSearchListener(this);
- mLocation = TanluServiceHandler.getLocationClient().getLastKnowLocation();
-
- m2D3D = findViewById(R.id.demo_module_id_2d3d);
-
- mLocInfo = findViewById(R.id.demo_module_id_loc_info);
- mLoc = findViewById(R.id.demo_module_id_loc);
- mLoc.setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getLocationClient().start(4_000L);
- }
- }
- );
-
- mDemoInfoWindowAdapter = new TanluInfoWindowAdapter(getContext(), TanluServiceHandler.getNavi(), TanluServiceHandler.getImageloader());
-
- mMarkerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_search_poi_location);
- mClickedMarkerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_search_choice_point);
- mAddMarker = findViewById(R.id.demo_module_id_add_marker);
- mAddMarker.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .icon(mMarkerIcon)
- .latitude(39.974525d)
- .owner(TanluConstants.TAG)
- .longitude(116.41733d);
- IMogoMarker marker = TanluServiceHandler.getMarkerManager().addMarker(TanluConstants.TAG, options);
- marker.setInfoWindowAdapter(mDemoInfoWindowAdapter);
- marker.setOnMarkerClickListener(TanluCardViewFragment.this);
- }
- });
- mAddMarkers = findViewById(R.id.demo_module_id_add_markers);
- mAddMarkers.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- ArrayList optionsList = new ArrayList<>();
- for (int i = 0; i < 10; i++) {
- MogoMarkerOptions options = new MogoMarkerOptions()
- .owner(TanluConstants.TAG)
- .latitude(39.974525d + new Random().nextDouble())
- .longitude(116.41733d + new Random().nextDouble());
- if (i % 2 == 0) {
- options.icon(mMarkerIcon);
- } else {
- options.icon(mDemoInfoWindowAdapter.getMarkerView(options));
- }
- optionsList.add(options);
- }
- List iMogoMarkers = TanluServiceHandler.getMarkerManager().addMarkers(TanluConstants.TAG, optionsList, true);
- for (IMogoMarker iMogoMarker : iMogoMarkers) {
- iMogoMarker.setInfoWindowAdapter(mDemoInfoWindowAdapter);
- iMogoMarker.setOnMarkerClickListener(TanluCardViewFragment.this);
- }
- }
- });
-
- findViewById(R.id.demo_module_id_clear).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMarkerManager().removeMarkers(TanluConstants.TAG);
- }
- });
-
- m2D3D.setOnClickListener(new View.OnClickListener() {
- private EnumMapUI ui = EnumMapUI.NorthUP_2D;
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().changeMapMode(ui = ui.next());
- m2D3D.setText(ui.toString());
- }
- });
-
- findViewById(R.id.demo_module_id_current).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().moveToCenter(new MogoLatLng(mLocation.getLatitude(), mLocation.getLongitude()));
- }
- });
-
- findViewById(R.id.demo_module_id_start_navi).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getNavi().startNavi(!mNaviMode.isChecked());
- }
- });
-
- findViewById(R.id.demo_module_id_stop_navi).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getNavi().stopNavi();
- }
- });
-
- findViewById(R.id.demo_module_id_traffic).setOnClickListener(new View.OnClickListener() {
-
- private boolean enable = true;
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().setTrafficEnabled(enable = !enable);
- }
- });
-
- findViewById(R.id.demo_module_id_zoom_in).setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().changeZoom(true);
- }
- });
-
- findViewById(R.id.demo_module_id_zoom_out).setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().changeZoom(false);
- }
- });
-
- findViewById(R.id.demo_module_id_day_light).setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().changeMapMode(EnumMapUI.Type_Light);
- }
- });
-
- findViewById(R.id.demo_module_id_day_night).setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().changeMapMode(EnumMapUI.Type_Night);
- }
- });
-
- findViewById(R.id.demo_module_id_display_overlay).setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().displayOverview();
- }
- });
-
- findViewById(R.id.demo_module_id_reverse_lock).setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- TanluServiceHandler.getMapUIController().recoverLockMode();
- }
- });
-
- TanluServiceHandler.getLocationClient().addLocationListener(new IMogoLocationListener() {
- @Override
- public void onLocationChanged(MogoLocation location) {
- mLocation = location;
- Logger.d(TAG, "demo模块定位,定位间隔4s");
- }
- });
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- getViewLifecycleOwner().getLifecycle().addObserver(mPresenter);
- }
-
- @Override
- public boolean onMarkerClicked(IMogoMarker marker) {
-// if ( mLastClickedMarker != null ) {
-// mLastClickedMarker.setIcon( this.mMarkerIcon );
-// }
-// marker.setIcon( mClickedMarkerIcon );
-// mLastClickedMarker = marker;
-
-// marker.showInfoWindow();
- return true;
- }
-
- @NonNull
- @Override
- protected Presenter createPresenter() {
- return new Presenter(this) {
- };
- }
-
- @Override
- public void onPerform() {
- Logger.d(TAG, "卡片2有效");
- }
-
- @Override
- public void onDisable() {
- Logger.d(TAG, "卡片2无效");
- }
-
-
- @Override
- public void onMapLoaded() {
- Logger.d(TAG, "地图加载事件");
- }
-
- @Override
- public void onTouch(MotionEvent motionEvent) {
-// Logger.d( TAG, "地图触摸事件" );
- }
-
- @Override
- public void onPOIClick(MogoPoi poi) {
- if (poi != null) {
- TipToast.shortTip(poi.getName());
- }
- TanluServiceHandler.getPoiSearch().searchPOIIdAsyn(poi.getPoiId());
- }
-
- @Override
- public void onPoiSearched(MogoPoiResult result, int errorCode) {
-
- }
-
- private IMogoMarker mPoiMarker;
-
- @Override
- public void onPoiItemSearched(MogoPoiItem item, int errorCode) {
- if (item == null) {
- return;
- }
- if (mPoiMarker != null) {
- mPoiMarker.destroy();
- }
- mPoiMarker = TanluServiceHandler.getMarkerManager().addMarker(TanluConstants.TAG, new MogoMarkerOptions()
- .longitude(item.getPoint().lng)
- .latitude(item.getPoint().lat)
- .icon(mMarkerIcon));
- if (mPoiMarker != null) {
- mPoiMarker.setInfoWindowAdapter(mDemoInfoWindowAdapter);
- mPoiMarker.setObject(item);
- mPoiMarker.showInfoWindow();
- }
- }
-
- @Override
- public void onLocationChanged(MogoLocation location) {
- mLocation = location;
- Logger.i(TAG, "接受到的地图模块定位信息");
- if (mLocInfo != null) {
- if (location.getErrCode() == 0) {
- mLocInfo.setText("当前位置:" + location.getAddress());
- } else {
- mLocInfo.setText(location.getErrInfo());
- }
- }
- }
-
- @Override
- public void onMapClick(MogoLatLng latLng) {
-
- }
-
- @Override
- public void onLockMap(boolean isLock) {
-
- }
-
- @Override
- public void onMapModeChanged(EnumMapUI ui) {
- Logger.d(TAG, ui.name());
- }
-
- @Override
- public void onDestroyView() {
- Logger.w(TAG, "onDestroyView position=" + position);
- super.onDestroyView();
- getViewLifecycleOwner().getLifecycle().removeObserver(mPresenter);
- TanluServiceHandler.getLocationClient().removeLocationListener(this);
- if (mLastClickedMarker != null) {
- mLastClickedMarker.destroy();
- mLastClickedMarker = null;
- }
- }
-
-}
diff --git a/demo/mogo-module-tanlu/src/main/res/layout/tanlu_card_view.xml b/demo/mogo-module-tanlu/src/main/res/layout/tanlu_card_view.xml
deleted file mode 100644
index 34723f1bc6..0000000000
--- a/demo/mogo-module-tanlu/src/main/res/layout/tanlu_card_view.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/demo/mogo-module-tanlu/src/main/res/values/colors.xml b/demo/mogo-module-tanlu/src/main/res/values/colors.xml
deleted file mode 100644
index 8d694b8a81..0000000000
--- a/demo/mogo-module-tanlu/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- #000000
- #000000
- #1F7FFF
- #FFFFFF
- #80FFFFFF
- #1E212C
- #1F7FFF
- #171F7FFF
- #4d191C25
- #99191C25
- #222533
- #4B5369
- #9A9A9A
- #A2A2A2
-
-
diff --git a/demo/mogo-module-tanlu/src/main/res/values/strings.xml b/demo/mogo-module-tanlu/src/main/res/values/strings.xml
deleted file mode 100644
index 8e55be4fea..0000000000
--- a/demo/mogo-module-tanlu/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- tanlu
-
diff --git a/demo/tanlu-module/build/.transforms/49d7ab72247aaef4db980a35afc218b5.bin b/demo/tanlu-module/build/.transforms/49d7ab72247aaef4db980a35afc218b5.bin
deleted file mode 100644
index 849b2a63b7..0000000000
--- a/demo/tanlu-module/build/.transforms/49d7ab72247aaef4db980a35afc218b5.bin
+++ /dev/null
@@ -1 +0,0 @@
-o/full
diff --git a/demo/tanlu-module/build/.transforms/49d7ab72247aaef4db980a35afc218b5/full/classes.dex b/demo/tanlu-module/build/.transforms/49d7ab72247aaef4db980a35afc218b5/full/classes.dex
deleted file mode 100644
index 121af2d013..0000000000
Binary files a/demo/tanlu-module/build/.transforms/49d7ab72247aaef4db980a35afc218b5/full/classes.dex and /dev/null differ
diff --git a/demo/tanlu-module/build/.transforms/e0d467f1a5213a48fbac63ff3056db9a.bin b/demo/tanlu-module/build/.transforms/e0d467f1a5213a48fbac63ff3056db9a.bin
deleted file mode 100644
index 1ed65e03c3..0000000000
--- a/demo/tanlu-module/build/.transforms/e0d467f1a5213a48fbac63ff3056db9a.bin
+++ /dev/null
@@ -1 +0,0 @@
-i/
diff --git a/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Group$$tanlu.java b/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Group$$tanlu.java
deleted file mode 100644
index d1c55009f1..0000000000
--- a/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Group$$tanlu.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.alibaba.android.arouter.routes;
-
-import com.alibaba.android.arouter.facade.enums.RouteType;
-import com.alibaba.android.arouter.facade.model.RouteMeta;
-import com.alibaba.android.arouter.facade.template.IRouteGroup;
-import com.zhidao.tanlu.TanluCardViewProvider;
-import java.lang.Override;
-import java.lang.String;
-import java.util.Map;
-
-/**
- * DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
-public class ARouter$$Group$$tanlu implements IRouteGroup {
- @Override
- public void loadInto(Map atlas) {
- atlas.put("/tanlu/ui", RouteMeta.build(RouteType.PROVIDER, TanluCardViewProvider.class, "/tanlu/ui", "tanlu", null, -1, -2147483648));
- }
-}
diff --git a/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Providers$$tanlumodule.java b/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Providers$$tanlumodule.java
deleted file mode 100644
index 585c03f110..0000000000
--- a/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Providers$$tanlumodule.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.alibaba.android.arouter.routes;
-
-import com.alibaba.android.arouter.facade.enums.RouteType;
-import com.alibaba.android.arouter.facade.model.RouteMeta;
-import com.alibaba.android.arouter.facade.template.IProviderGroup;
-import com.zhidao.tanlu.TanluCardViewProvider;
-import java.lang.Override;
-import java.lang.String;
-import java.util.Map;
-
-/**
- * DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
-public class ARouter$$Providers$$tanlumodule implements IProviderGroup {
- @Override
- public void loadInto(Map providers) {
- providers.put("com.mogo.service.module.IMogoModuleProvider", RouteMeta.build(RouteType.PROVIDER, TanluCardViewProvider.class, "/tanlu/ui", "tanlu", null, -1, -2147483648));
- }
-}
diff --git a/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Root$$tanlumodule.java b/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Root$$tanlumodule.java
deleted file mode 100644
index 2e4db090c8..0000000000
--- a/demo/tanlu-module/build/generated/ap_generated_sources/debug/out/com/alibaba/android/arouter/routes/ARouter$$Root$$tanlumodule.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.alibaba.android.arouter.routes;
-
-import com.alibaba.android.arouter.facade.template.IRouteGroup;
-import com.alibaba.android.arouter.facade.template.IRouteRoot;
-import java.lang.Class;
-import java.lang.Override;
-import java.lang.String;
-import java.util.Map;
-
-/**
- * DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
-public class ARouter$$Root$$tanlumodule implements IRouteRoot {
- @Override
- public void loadInto(Map> routes) {
- routes.put("tanlu", ARouter$$Group$$tanlu.class);
- }
-}
diff --git a/demo/tanlu-module/build/generated/source/buildConfig/androidTest/debug/com/zhidao/tanlu/test/BuildConfig.java b/demo/tanlu-module/build/generated/source/buildConfig/androidTest/debug/com/zhidao/tanlu/test/BuildConfig.java
deleted file mode 100644
index 3fc6d127eb..0000000000
--- a/demo/tanlu-module/build/generated/source/buildConfig/androidTest/debug/com/zhidao/tanlu/test/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.zhidao.tanlu.test;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String APPLICATION_ID = "com.zhidao.tanlu.test";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "";
-}
diff --git a/demo/tanlu-module/build/generated/source/buildConfig/debug/com/zhidao/tanlu/BuildConfig.java b/demo/tanlu-module/build/generated/source/buildConfig/debug/com/zhidao/tanlu/BuildConfig.java
deleted file mode 100644
index 164f1982d2..0000000000
--- a/demo/tanlu-module/build/generated/source/buildConfig/debug/com/zhidao/tanlu/BuildConfig.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.zhidao.tanlu;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String LIBRARY_PACKAGE_NAME = "com.zhidao.tanlu";
- /**
- * @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
- */
- @Deprecated
- public static final String APPLICATION_ID = "com.zhidao.tanlu";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "";
-}
diff --git a/demo/tanlu-module/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml b/demo/tanlu-module/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml
deleted file mode 100644
index 2995d8ac41..0000000000
--- a/demo/tanlu-module/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json b/demo/tanlu-module/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json
deleted file mode 100644
index 031d57b26f..0000000000
--- a/demo/tanlu-module/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"","enabled":true,"outputFile":"tanlu-module-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.zhidao.tanlu","split":""}}]
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/annotation_processor_list/debug/annotationProcessors.json b/demo/tanlu-module/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
deleted file mode 100644
index 0e71b72210..0000000000
--- a/demo/tanlu-module/build/intermediates/annotation_processor_list/debug/annotationProcessors.json
+++ /dev/null
@@ -1 +0,0 @@
-{"jetified-arouter-compiler-1.2.2.jar (com.alibaba:arouter-compiler:1.2.2)":false,"auto-service-1.0-rc2.jar (com.google.auto.service:auto-service:1.0-rc2)":false}
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/compile_library_classes/debug/classes.jar b/demo/tanlu-module/build/intermediates/compile_library_classes/debug/classes.jar
deleted file mode 100644
index a4e13a3143..0000000000
Binary files a/demo/tanlu-module/build/intermediates/compile_library_classes/debug/classes.jar and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar b/demo/tanlu-module/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar
deleted file mode 100644
index f3523055aa..0000000000
Binary files a/demo/tanlu-module/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/full_jar/debug/createFullJarDebug/full.jar b/demo/tanlu-module/build/intermediates/full_jar/debug/createFullJarDebug/full.jar
deleted file mode 100644
index a4e13a3143..0000000000
Binary files a/demo/tanlu-module/build/intermediates/full_jar/debug/createFullJarDebug/full.jar and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/incremental/debug-mergeNativeLibs/merge-state b/demo/tanlu-module/build/intermediates/incremental/debug-mergeNativeLibs/merge-state
deleted file mode 100644
index 70766e4f27..0000000000
Binary files a/demo/tanlu-module/build/intermediates/incremental/debug-mergeNativeLibs/merge-state and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/demo/tanlu-module/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
deleted file mode 100644
index a48b1440b5..0000000000
--- a/demo/tanlu-module/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/incremental/mergeDebugShaders/merger.xml b/demo/tanlu-module/build/intermediates/incremental/mergeDebugShaders/merger.xml
deleted file mode 100644
index 77605b6d15..0000000000
--- a/demo/tanlu-module/build/intermediates/incremental/mergeDebugShaders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/incremental/packageDebugAssets/merger.xml b/demo/tanlu-module/build/intermediates/incremental/packageDebugAssets/merger.xml
deleted file mode 100644
index fa4b6d152d..0000000000
--- a/demo/tanlu-module/build/intermediates/incremental/packageDebugAssets/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/compile-file-map.properties b/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
deleted file mode 100644
index 212f1a6859..0000000000
--- a/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-#Thu Jan 02 12:10:08 CST 2020
-/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/res/layout/tanlu_module_info_window.xml=/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_info_window.xml
-/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/res/layout/tanlu_module_poi_info_window.xml=/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_poi_info_window.xml
-/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/res/layout/tanlu_module_card_view.xml=/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_card_view.xml
-/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/res/layout/tanlu_module_bubble_marker.xml=/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_bubble_marker.xml
diff --git a/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml b/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml
deleted file mode 100644
index 08d9e7995d..0000000000
--- a/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/merged.dir/values/values.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- #1F7FFF
- #000000
- #000000
- #171F7FFF
- #1E212C
- #1F7FFF
- #222533
- #4B5369
- #4d191C25
- #99191C25
- #9A9A9A
- #A2A2A2
- #FFFFFF
- #80FFFFFF
- tanlu
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/merger.xml b/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/merger.xml
deleted file mode 100644
index ee518b4bfc..0000000000
--- a/demo/tanlu-module/build/intermediates/incremental/packageDebugResources/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-#000000 #000000 #1F7FFF #FFFFFF #80FFFFFF #1E212C #1F7FFF #171F7FFF #4d191C25 #99191C25 #222533 #4B5369 #9A9A9A #A2A2A2 tanlu
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Group$$tanlu.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Group$$tanlu.class
deleted file mode 100644
index 762d20781f..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Group$$tanlu.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Providers$$tanlumodule.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Providers$$tanlumodule.class
deleted file mode 100644
index 6b12939623..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Providers$$tanlumodule.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Root$$tanlumodule.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Root$$tanlumodule.class
deleted file mode 100644
index 9cd79e744e..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/alibaba/android/arouter/routes/ARouter$$Root$$tanlumodule.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/BuildConfig.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/BuildConfig.class
deleted file mode 100644
index ffe196f4f7..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/BuildConfig.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$1.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$1.class
deleted file mode 100644
index 7bf604920f..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$1.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$10.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$10.class
deleted file mode 100644
index 70b406a783..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$10.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$11.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$11.class
deleted file mode 100644
index cf89bc48e8..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$11.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$12.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$12.class
deleted file mode 100644
index ba9a5390c9..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$12.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$13.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$13.class
deleted file mode 100644
index ef3fba81ab..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$13.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$14.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$14.class
deleted file mode 100644
index 51335bbdc4..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$14.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$15.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$15.class
deleted file mode 100644
index 822dfbaaa4..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$15.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$16.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$16.class
deleted file mode 100644
index b138ae2499..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$16.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$17.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$17.class
deleted file mode 100644
index 45779ea1fe..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$17.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$2.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$2.class
deleted file mode 100644
index 4d9cd78956..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$2.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$3.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$3.class
deleted file mode 100644
index 60362d0fdb..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$3.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$4.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$4.class
deleted file mode 100644
index 90f82a9357..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$4.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$5.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$5.class
deleted file mode 100644
index 6e9fe24118..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$5.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$6.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$6.class
deleted file mode 100644
index 794a64297e..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$6.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$7.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$7.class
deleted file mode 100644
index 4c80a22c53..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$7.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$8.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$8.class
deleted file mode 100644
index 84ad66f438..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$8.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$9.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$9.class
deleted file mode 100644
index 9f39e58635..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment$9.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment.class
deleted file mode 100644
index 76846d7a70..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewFragment.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewProvider.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewProvider.class
deleted file mode 100644
index af73434a65..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluCardViewProvider.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluConstants.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluConstants.class
deleted file mode 100644
index ba5b4015f7..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluConstants.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$1.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$1.class
deleted file mode 100644
index 7729f1de50..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$1.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$2.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$2.class
deleted file mode 100644
index 8cf3ad3d28..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$2.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$3.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$3.class
deleted file mode 100644
index 86c1d56809..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$3.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$4.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$4.class
deleted file mode 100644
index a099aa942e..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$4.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$5.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$5.class
deleted file mode 100644
index 1db939b0ee..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter$5.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter.class
deleted file mode 100644
index a2dc29d7bf..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluInfoWindowAdapter.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluServiceHandler.class b/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluServiceHandler.class
deleted file mode 100644
index 8a92ae1aba..0000000000
Binary files a/demo/tanlu-module/build/intermediates/javac/debug/classes/com/zhidao/tanlu/TanluServiceHandler.class and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/library_java_res/debug/res.jar b/demo/tanlu-module/build/intermediates/library_java_res/debug/res.jar
deleted file mode 100644
index 15cb0ecb3e..0000000000
Binary files a/demo/tanlu-module/build/intermediates/library_java_res/debug/res.jar and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/library_manifest/debug/AndroidManifest.xml b/demo/tanlu-module/build/intermediates/library_manifest/debug/AndroidManifest.xml
deleted file mode 100644
index 2995d8ac41..0000000000
--- a/demo/tanlu-module/build/intermediates/library_manifest/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt b/demo/tanlu-module/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt
deleted file mode 100644
index 2cdc0e3389..0000000000
--- a/demo/tanlu-module/build/intermediates/local_only_symbol_list/debug/parseDebugLibraryResources/R-def.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-R_DEF: Internal format may change without notice
-local
-color colorAccent
-color colorPrimary
-color colorPrimaryDark
-color color_171F7FFF
-color color_1E212C
-color color_1F7FFF
-color color_222533
-color color_4B5369
-color color_4d191C25
-color color_99191C25
-color color_9A9A9A
-color color_A2A2A2
-color white
-color white_50
-id demo_module_id_2d3d
-id demo_module_id_add_marker
-id demo_module_id_add_markers
-id demo_module_id_clear
-id demo_module_id_current
-id demo_module_id_day_light
-id demo_module_id_day_night
-id demo_module_id_display_overlay
-id demo_module_id_iw_navi_stop
-id demo_module_id_iw_navito
-id demo_module_id_iw_poi_navito
-id demo_module_id_iw_poi_title
-id demo_module_id_iw_refresh
-id demo_module_id_iw_time
-id demo_module_id_loc
-id demo_module_id_loc_info
-id demo_module_id_navi_mode
-id demo_module_id_reverse_lock
-id demo_module_id_start_navi
-id demo_module_id_stop_navi
-id demo_module_id_traffic
-id demo_module_id_zoom_in
-id demo_module_id_zoom_out
-id icon
-layout tanlu_module_bubble_marker
-layout tanlu_module_card_view
-layout tanlu_module_info_window
-layout tanlu_module_poi_info_window
-string app_name
diff --git a/demo/tanlu-module/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt b/demo/tanlu-module/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
deleted file mode 100644
index f3d81630ee..0000000000
--- a/demo/tanlu-module/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-1
-2
-5
-6 /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
-8 android:targetSdkVersion="22" />
-8-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
-9
-10
diff --git a/demo/tanlu-module/build/intermediates/manifest_merge_blame_file/debugAndroidTest/manifest-merger-blame-debug-androidTest-report.txt b/demo/tanlu-module/build/intermediates/manifest_merge_blame_file/debugAndroidTest/manifest-merger-blame-debug-androidTest-report.txt
deleted file mode 100644
index 8c00daab18..0000000000
--- a/demo/tanlu-module/build/intermediates/manifest_merge_blame_file/debugAndroidTest/manifest-merger-blame-debug-androidTest-report.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-1
-2
-4
-5 /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:5:5-74
-6 android:minSdkVersion="19"
-6-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:5:15-41
-7 android:targetSdkVersion="22" />
-7-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:5:42-71
-8
-9 /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:11:5-15:71
-10 android:name="androidx.test.runner.AndroidJUnitRunner"
-10-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:11:22-76
-11 android:functionalTest="false"
-11-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:14:22-52
-12 android:handleProfiling="false"
-12-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:13:22-53
-13 android:label="Tests for com.zhidao.tanlu.test"
-13-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:15:22-69
-14 android:targetPackage="com.zhidao.tanlu.test" />
-14-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:12:22-67
-15
-16
-16-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:11:5-75
-16-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:11:22-72
-17
-17-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:12:5-74
-17-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:12:22-71
-18
-18-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:13:5-78
-18-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:13:22-75
-19
-19-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:14:5-82
-19-->[com.zhidaoauto.common:service:1.0.4] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/6f35db5c074d2c45fb1a367e20933413/service-1.0.4/AndroidManifest.xml:14:22-79
-20
-20-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:11:5-67
-20-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:11:22-64
-21
-21-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:13:5-81
-21-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:13:22-78
-22
-22-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:15:5-79
-22-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:15:22-76
-23
-23-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:17:5-76
-23-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:17:22-73
-24
-24-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:21:5-81
-24-->[:libraries:mogo-map] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/mogo-map/build/intermediates/library_manifest/debug/AndroidManifest.xml:21:22-78
-25
-25-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:16:5-80
-25-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:16:22-77
-26
-26-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:17:5-79
-26-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:17:22-76
-27
-27-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:18:5-76
-27-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:18:22-73
-28
-28-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:19:5-68
-28-->[com.elegant.analytics:analytics:1.1.19] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/f4667868f2d4830d9222c07d43f1f5e7/jetified-analytics-1.1.19/AndroidManifest.xml:19:22-65
-29
-30 /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:7:5-9:19
-31 android:appComponentFactory="androidx.core.app.CoreComponentFactory"
-31-->[androidx.core:core:1.0.1] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/792eab6592a043223b4e9fdbb11263d5/core-1.0.1/AndroidManifest.xml:22:18-86
-32 android:debuggable="true" >
-32-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:7:18-43
-33
-33-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:8:9-60
-33-->/Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger3783448956662302639.xml:8:23-57
-34
-35 [:libraries:map-amap] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/map-amap/build/intermediates/library_manifest/debug/AndroidManifest.xml:14:9-16:64
-36 android:name="com.amap.api.v2.apikey"
-36-->[:libraries:map-amap] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/map-amap/build/intermediates/library_manifest/debug/AndroidManifest.xml:15:13-50
-37 android:value="a36b9f7b086fa3951bb35338a5a06dd3" />
-37-->[:libraries:map-amap] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/map-amap/build/intermediates/library_manifest/debug/AndroidManifest.xml:16:13-61
-38
-38-->[:libraries:map-amap] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/map-amap/build/intermediates/library_manifest/debug/AndroidManifest.xml:18:9-68
-38-->[:libraries:map-amap] /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/libraries/map-amap/build/intermediates/library_manifest/debug/AndroidManifest.xml:18:18-65
-39
-40 [com.github.bumptech.glide:okhttp3-integration:4.8.0] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/7427658adcabdb17ef6ff27105c7a4fd/jetified-okhttp3-integration-4.8.0/AndroidManifest.xml:11:9-13:43
-41 android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule"
-41-->[com.github.bumptech.glide:okhttp3-integration:4.8.0] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/7427658adcabdb17ef6ff27105c7a4fd/jetified-okhttp3-integration-4.8.0/AndroidManifest.xml:12:13-84
-42 android:value="GlideModule" />
-42-->[com.github.bumptech.glide:okhttp3-integration:4.8.0] /Users/congtaowang/.gradle/caches/transforms-2/files-2.1/7427658adcabdb17ef6ff27105c7a4fd/jetified-okhttp3-integration-4.8.0/AndroidManifest.xml:13:13-40
-43
-44
-45
diff --git a/demo/tanlu-module/build/intermediates/merged_manifests/debug/output.json b/demo/tanlu-module/build/intermediates/merged_manifests/debug/output.json
deleted file mode 100644
index 62002456aa..0000000000
--- a/demo/tanlu-module/build/intermediates/merged_manifests/debug/output.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"","enabled":true,"outputFile":"tanlu-module-debug.aar","fullName":"debug","baseName":"debug"},"path":"../../library_manifest/debug/AndroidManifest.xml","properties":{"packageId":"com.zhidao.tanlu","split":""}}]
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/merged_manifests/debugAndroidTest/AndroidManifest.xml b/demo/tanlu-module/build/intermediates/merged_manifests/debugAndroidTest/AndroidManifest.xml
deleted file mode 100644
index bc5db65d37..0000000000
--- a/demo/tanlu-module/build/intermediates/merged_manifests/debugAndroidTest/AndroidManifest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/merged_manifests/debugAndroidTest/output.json b/demo/tanlu-module/build/intermediates/merged_manifests/debugAndroidTest/output.json
deleted file mode 100644
index 17ce61d076..0000000000
--- a/demo/tanlu-module/build/intermediates/merged_manifests/debugAndroidTest/output.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"","enabled":true,"outputFile":"tanlu-module-debug-androidTest.apk","fullName":"debugAndroidTest","baseName":"debug-androidTest"},"path":"AndroidManifest.xml","properties":{}}]
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_bubble_marker.xml b/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_bubble_marker.xml
deleted file mode 100644
index a062cf73d1..0000000000
--- a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_bubble_marker.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_card_view.xml b/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_card_view.xml
deleted file mode 100644
index 34723f1bc6..0000000000
--- a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_card_view.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_info_window.xml b/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_info_window.xml
deleted file mode 100644
index e173483602..0000000000
--- a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_info_window.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_poi_info_window.xml b/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_poi_info_window.xml
deleted file mode 100644
index c8fe367ddd..0000000000
--- a/demo/tanlu-module/build/intermediates/packaged_res/debug/layout/tanlu_module_poi_info_window.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/packaged_res/debug/values/values.xml b/demo/tanlu-module/build/intermediates/packaged_res/debug/values/values.xml
deleted file mode 100644
index 08d9e7995d..0000000000
--- a/demo/tanlu-module/build/intermediates/packaged_res/debug/values/values.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- #1F7FFF
- #000000
- #000000
- #171F7FFF
- #1E212C
- #1F7FFF
- #222533
- #4B5369
- #4d191C25
- #99191C25
- #9A9A9A
- #A2A2A2
- #FFFFFF
- #80FFFFFF
- tanlu
-
\ No newline at end of file
diff --git a/demo/tanlu-module/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt b/demo/tanlu-module/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
deleted file mode 100644
index 94cca305a5..0000000000
--- a/demo/tanlu-module/build/intermediates/res/symbol-table-with-package/debug/package-aware-r.txt
+++ /dev/null
@@ -1,1372 +0,0 @@
-com.zhidao.tanlu
-anim abc_fade_in
-anim abc_fade_out
-anim abc_grow_fade_in_from_bottom
-anim abc_popup_enter
-anim abc_popup_exit
-anim abc_shrink_fade_out_from_bottom
-anim abc_slide_in_bottom
-anim abc_slide_in_top
-anim abc_slide_out_bottom
-anim abc_slide_out_top
-anim abc_tooltip_enter
-anim abc_tooltip_exit
-attr actionBarDivider
-attr actionBarItemBackground
-attr actionBarPopupTheme
-attr actionBarSize
-attr actionBarSplitStyle
-attr actionBarStyle
-attr actionBarTabBarStyle
-attr actionBarTabStyle
-attr actionBarTabTextStyle
-attr actionBarTheme
-attr actionBarWidgetTheme
-attr actionButtonStyle
-attr actionDropDownStyle
-attr actionLayout
-attr actionMenuTextAppearance
-attr actionMenuTextColor
-attr actionModeBackground
-attr actionModeCloseButtonStyle
-attr actionModeCloseDrawable
-attr actionModeCopyDrawable
-attr actionModeCutDrawable
-attr actionModeFindDrawable
-attr actionModePasteDrawable
-attr actionModePopupWindowStyle
-attr actionModeSelectAllDrawable
-attr actionModeShareDrawable
-attr actionModeSplitBackground
-attr actionModeStyle
-attr actionModeWebSearchDrawable
-attr actionOverflowButtonStyle
-attr actionOverflowMenuStyle
-attr actionProviderClass
-attr actionViewClass
-attr activityChooserViewStyle
-attr actualImageScaleType
-attr actualImageUri
-attr alertDialogButtonGroupStyle
-attr alertDialogCenterButtons
-attr alertDialogStyle
-attr alertDialogTheme
-attr allowStacking
-attr alpha
-attr alphabeticModifiers
-attr arrowHeadLength
-attr arrowShaftLength
-attr autoCompleteTextViewStyle
-attr autoSizeMaxTextSize
-attr autoSizeMinTextSize
-attr autoSizePresetSizes
-attr autoSizeStepGranularity
-attr autoSizeTextType
-attr background
-attr backgroundImage
-attr backgroundSplit
-attr backgroundStacked
-attr backgroundTint
-attr backgroundTintMode
-attr barLength
-attr barrierAllowsGoneWidgets
-attr barrierDirection
-attr borderlessButtonStyle
-attr buttonBarButtonStyle
-attr buttonBarNegativeButtonStyle
-attr buttonBarNeutralButtonStyle
-attr buttonBarPositiveButtonStyle
-attr buttonBarStyle
-attr buttonGravity
-attr buttonIconDimen
-attr buttonPanelSideLayout
-attr buttonStyle
-attr buttonStyleSmall
-attr buttonTint
-attr buttonTintMode
-attr chainUseRtl
-attr checkboxStyle
-attr checkedTextViewStyle
-attr closeIcon
-attr closeItemLayout
-attr collapseContentDescription
-attr collapseIcon
-attr color
-attr colorAccent
-attr colorBackgroundFloating
-attr colorButtonNormal
-attr colorControlActivated
-attr colorControlHighlight
-attr colorControlNormal
-attr colorError
-attr colorPrimary
-attr colorPrimaryDark
-attr colorSwitchThumbNormal
-attr commitIcon
-attr constraintSet
-attr constraint_referenced_ids
-attr content
-attr contentDescription
-attr contentInsetEnd
-attr contentInsetEndWithActions
-attr contentInsetLeft
-attr contentInsetRight
-attr contentInsetStart
-attr contentInsetStartWithNavigation
-attr controlBackground
-attr coordinatorLayoutStyle
-attr customNavigationLayout
-attr defaultQueryHint
-attr dialogCornerRadius
-attr dialogPreferredPadding
-attr dialogTheme
-attr displayOptions
-attr divider
-attr dividerHorizontal
-attr dividerPadding
-attr dividerVertical
-attr drawableSize
-attr drawerArrowStyle
-attr dropDownListViewStyle
-attr dropdownListPreferredItemHeight
-attr editTextBackground
-attr editTextColor
-attr editTextStyle
-attr elevation
-attr emptyVisibility
-attr expandActivityOverflowButtonDrawable
-attr fadeDuration
-attr failureImage
-attr failureImageScaleType
-attr firstBaselineToTopHeight
-attr font
-attr fontFamily
-attr fontProviderAuthority
-attr fontProviderCerts
-attr fontProviderFetchStrategy
-attr fontProviderFetchTimeout
-attr fontProviderPackage
-attr fontProviderQuery
-attr fontStyle
-attr fontVariationSettings
-attr fontWeight
-attr gapBetweenBars
-attr goIcon
-attr height
-attr hideOnContentScroll
-attr homeAsUpIndicator
-attr homeLayout
-attr icon
-attr iconTint
-attr iconTintMode
-attr iconifiedByDefault
-attr imageButtonStyle
-attr indeterminateProgressStyle
-attr initialActivityCount
-attr isLightTheme
-attr itemPadding
-attr keylines
-attr lastBaselineToBottomHeight
-attr layout
-attr layout_anchor
-attr layout_anchorGravity
-attr layout_behavior
-attr layout_constrainedHeight
-attr layout_constrainedWidth
-attr layout_constraintBaseline_creator
-attr layout_constraintBaseline_toBaselineOf
-attr layout_constraintBottom_creator
-attr layout_constraintBottom_toBottomOf
-attr layout_constraintBottom_toTopOf
-attr layout_constraintCircle
-attr layout_constraintCircleAngle
-attr layout_constraintCircleRadius
-attr layout_constraintDimensionRatio
-attr layout_constraintEnd_toEndOf
-attr layout_constraintEnd_toStartOf
-attr layout_constraintGuide_begin
-attr layout_constraintGuide_end
-attr layout_constraintGuide_percent
-attr layout_constraintHeight_default
-attr layout_constraintHeight_max
-attr layout_constraintHeight_min
-attr layout_constraintHeight_percent
-attr layout_constraintHorizontal_bias
-attr layout_constraintHorizontal_chainStyle
-attr layout_constraintHorizontal_weight
-attr layout_constraintLeft_creator
-attr layout_constraintLeft_toLeftOf
-attr layout_constraintLeft_toRightOf
-attr layout_constraintRight_creator
-attr layout_constraintRight_toLeftOf
-attr layout_constraintRight_toRightOf
-attr layout_constraintStart_toEndOf
-attr layout_constraintStart_toStartOf
-attr layout_constraintTop_creator
-attr layout_constraintTop_toBottomOf
-attr layout_constraintTop_toTopOf
-attr layout_constraintVertical_bias
-attr layout_constraintVertical_chainStyle
-attr layout_constraintVertical_weight
-attr layout_constraintWidth_default
-attr layout_constraintWidth_max
-attr layout_constraintWidth_min
-attr layout_constraintWidth_percent
-attr layout_dodgeInsetEdges
-attr layout_editor_absoluteX
-attr layout_editor_absoluteY
-attr layout_goneMarginBottom
-attr layout_goneMarginEnd
-attr layout_goneMarginLeft
-attr layout_goneMarginRight
-attr layout_goneMarginStart
-attr layout_goneMarginTop
-attr layout_insetEdge
-attr layout_keyline
-attr layout_optimizationLevel
-attr lineHeight
-attr listChoiceBackgroundIndicator
-attr listDividerAlertDialog
-attr listItemLayout
-attr listLayout
-attr listMenuViewStyle
-attr listPopupWindowStyle
-attr listPreferredItemHeight
-attr listPreferredItemHeightLarge
-attr listPreferredItemHeightSmall
-attr listPreferredItemPaddingLeft
-attr listPreferredItemPaddingRight
-attr logo
-attr logoDescription
-attr maxButtonHeight
-attr measureWithLargestChild
-attr miv_blurRadius
-attr miv_borderColor
-attr miv_bottomLeftRadius
-attr miv_bottomRightRadius
-attr miv_failureHolder
-attr miv_isBlur
-attr miv_overlayImageId
-attr miv_placeHolder
-attr miv_radius
-attr miv_shape
-attr miv_shapeBorderWidth
-attr miv_topLeftRadius
-attr miv_topRightRadius
-attr multiChoiceItemLayout
-attr navigationContentDescription
-attr navigationIcon
-attr navigationMode
-attr numericModifiers
-attr overlapAnchor
-attr overlayImage
-attr paddingBottomNoButtons
-attr paddingEnd
-attr paddingStart
-attr paddingTopNoTitle
-attr panelBackground
-attr panelMenuListTheme
-attr panelMenuListWidth
-attr placeholderImage
-attr placeholderImageScaleType
-attr popupMenuStyle
-attr popupTheme
-attr popupWindowStyle
-attr preserveIconSpacing
-attr pressedStateOverlayImage
-attr progressBarAutoRotateInterval
-attr progressBarImage
-attr progressBarImageScaleType
-attr progressBarPadding
-attr progressBarStyle
-attr queryBackground
-attr queryHint
-attr radioButtonStyle
-attr ratingBarStyle
-attr ratingBarStyleIndicator
-attr ratingBarStyleSmall
-attr retryImage
-attr retryImageScaleType
-attr roundAsCircle
-attr roundBottomLeft
-attr roundBottomRight
-attr roundTopLeft
-attr roundTopRight
-attr roundWithOverlayColor
-attr roundedCornerRadius
-attr roundingBorderColor
-attr roundingBorderPadding
-attr roundingBorderWidth
-attr searchHintIcon
-attr searchIcon
-attr searchViewStyle
-attr seekBarStyle
-attr selectableItemBackground
-attr selectableItemBackgroundBorderless
-attr showAsAction
-attr showDividers
-attr showText
-attr showTitle
-attr singleChoiceItemLayout
-attr spinBars
-attr spinnerDropDownItemStyle
-attr spinnerStyle
-attr splitTrack
-attr srcCompat
-attr state_above_anchor
-attr statusBarBackground
-attr subMenuArrow
-attr submitBackground
-attr subtitle
-attr subtitleTextAppearance
-attr subtitleTextColor
-attr subtitleTextStyle
-attr suggestionRowLayout
-attr switchMinWidth
-attr switchPadding
-attr switchStyle
-attr switchTextAppearance
-attr textAllCaps
-attr textAppearanceLargePopupMenu
-attr textAppearanceListItem
-attr textAppearanceListItemSecondary
-attr textAppearanceListItemSmall
-attr textAppearancePopupMenuHeader
-attr textAppearanceSearchResultSubtitle
-attr textAppearanceSearchResultTitle
-attr textAppearanceSmallPopupMenu
-attr textColorAlertDialogListItem
-attr textColorSearchUrl
-attr theme
-attr thickness
-attr thumbTextPadding
-attr thumbTint
-attr thumbTintMode
-attr tickMark
-attr tickMarkTint
-attr tickMarkTintMode
-attr tint
-attr tintMode
-attr title
-attr titleMargin
-attr titleMarginBottom
-attr titleMarginEnd
-attr titleMarginStart
-attr titleMarginTop
-attr titleMargins
-attr titleTextAppearance
-attr titleTextColor
-attr titleTextStyle
-attr toolbarNavigationButtonStyle
-attr toolbarStyle
-attr tooltipForegroundColor
-attr tooltipFrameBackground
-attr tooltipText
-attr track
-attr trackTint
-attr trackTintMode
-attr ttcIndex
-attr viewAspectRatio
-attr viewInflaterClass
-attr voiceIcon
-attr windowActionBar
-attr windowActionBarOverlay
-attr windowActionModeOverlay
-attr windowFixedHeightMajor
-attr windowFixedHeightMinor
-attr windowFixedWidthMajor
-attr windowFixedWidthMinor
-attr windowMinWidthMajor
-attr windowMinWidthMinor
-attr windowNoTitle
-bool abc_action_bar_embed_tabs
-bool abc_allow_stacked_button_bar
-bool abc_config_actionMenuItemAllCaps
-bool abc_config_showMenuShortcutsWhenKeyboardPresent
-color abc_background_cache_hint_selector_material_dark
-color abc_background_cache_hint_selector_material_light
-color abc_btn_colored_borderless_text_material
-color abc_btn_colored_text_material
-color abc_color_highlight_material
-color abc_hint_foreground_material_dark
-color abc_hint_foreground_material_light
-color abc_input_method_navigation_guard
-color abc_primary_text_disable_only_material_dark
-color abc_primary_text_disable_only_material_light
-color abc_primary_text_material_dark
-color abc_primary_text_material_light
-color abc_search_url_text
-color abc_search_url_text_normal
-color abc_search_url_text_pressed
-color abc_search_url_text_selected
-color abc_secondary_text_material_dark
-color abc_secondary_text_material_light
-color abc_tint_btn_checkable
-color abc_tint_default
-color abc_tint_edittext
-color abc_tint_seek_thumb
-color abc_tint_spinner
-color abc_tint_switch_track
-color accent_material_dark
-color accent_material_light
-color background_floating_material_dark
-color background_floating_material_light
-color background_material_dark
-color background_material_light
-color bright_foreground_disabled_material_dark
-color bright_foreground_disabled_material_light
-color bright_foreground_inverse_material_dark
-color bright_foreground_inverse_material_light
-color bright_foreground_material_dark
-color bright_foreground_material_light
-color button_material_dark
-color button_material_light
-color colorAccent
-color colorPrimary
-color colorPrimaryDark
-color color_171F7FFF
-color color_1E212C
-color color_1F7FFF
-color color_222533
-color color_4B5369
-color color_4d191C25
-color color_99191C25
-color color_9A9A9A
-color color_A2A2A2
-color dim_foreground_disabled_material_dark
-color dim_foreground_disabled_material_light
-color dim_foreground_material_dark
-color dim_foreground_material_light
-color error_color_material
-color error_color_material_dark
-color error_color_material_light
-color foreground_material_dark
-color foreground_material_light
-color highlighted_text_material_dark
-color highlighted_text_material_light
-color material_blue_grey_800
-color material_blue_grey_900
-color material_blue_grey_950
-color material_deep_teal_200
-color material_deep_teal_500
-color material_grey_100
-color material_grey_300
-color material_grey_50
-color material_grey_600
-color material_grey_800
-color material_grey_850
-color material_grey_900
-color notification_action_color_filter
-color notification_icon_bg_color
-color notification_material_background_media_default_color
-color primary_dark_material_dark
-color primary_dark_material_light
-color primary_material_dark
-color primary_material_light
-color primary_text_default_material_dark
-color primary_text_default_material_light
-color primary_text_disabled_material_dark
-color primary_text_disabled_material_light
-color ripple_material_dark
-color ripple_material_light
-color secondary_text_default_material_dark
-color secondary_text_default_material_light
-color secondary_text_disabled_material_dark
-color secondary_text_disabled_material_light
-color switch_thumb_disabled_material_dark
-color switch_thumb_disabled_material_light
-color switch_thumb_material_dark
-color switch_thumb_material_light
-color switch_thumb_normal_material_dark
-color switch_thumb_normal_material_light
-color tooltip_background_dark
-color tooltip_background_light
-color white
-color white_50
-dimen abc_action_bar_content_inset_material
-dimen abc_action_bar_content_inset_with_nav
-dimen abc_action_bar_default_height_material
-dimen abc_action_bar_default_padding_end_material
-dimen abc_action_bar_default_padding_start_material
-dimen abc_action_bar_elevation_material
-dimen abc_action_bar_icon_vertical_padding_material
-dimen abc_action_bar_overflow_padding_end_material
-dimen abc_action_bar_overflow_padding_start_material
-dimen abc_action_bar_progress_bar_size
-dimen abc_action_bar_stacked_max_height
-dimen abc_action_bar_stacked_tab_max_width
-dimen abc_action_bar_subtitle_bottom_margin_material
-dimen abc_action_bar_subtitle_top_margin_material
-dimen abc_action_button_min_height_material
-dimen abc_action_button_min_width_material
-dimen abc_action_button_min_width_overflow_material
-dimen abc_alert_dialog_button_bar_height
-dimen abc_alert_dialog_button_dimen
-dimen abc_button_inset_horizontal_material
-dimen abc_button_inset_vertical_material
-dimen abc_button_padding_horizontal_material
-dimen abc_button_padding_vertical_material
-dimen abc_cascading_menus_min_smallest_width
-dimen abc_config_prefDialogWidth
-dimen abc_control_corner_material
-dimen abc_control_inset_material
-dimen abc_control_padding_material
-dimen abc_dialog_corner_radius_material
-dimen abc_dialog_fixed_height_major
-dimen abc_dialog_fixed_height_minor
-dimen abc_dialog_fixed_width_major
-dimen abc_dialog_fixed_width_minor
-dimen abc_dialog_list_padding_bottom_no_buttons
-dimen abc_dialog_list_padding_top_no_title
-dimen abc_dialog_min_width_major
-dimen abc_dialog_min_width_minor
-dimen abc_dialog_padding_material
-dimen abc_dialog_padding_top_material
-dimen abc_dialog_title_divider_material
-dimen abc_disabled_alpha_material_dark
-dimen abc_disabled_alpha_material_light
-dimen abc_dropdownitem_icon_width
-dimen abc_dropdownitem_text_padding_left
-dimen abc_dropdownitem_text_padding_right
-dimen abc_edit_text_inset_bottom_material
-dimen abc_edit_text_inset_horizontal_material
-dimen abc_edit_text_inset_top_material
-dimen abc_floating_window_z
-dimen abc_list_item_padding_horizontal_material
-dimen abc_panel_menu_list_width
-dimen abc_progress_bar_height_material
-dimen abc_search_view_preferred_height
-dimen abc_search_view_preferred_width
-dimen abc_seekbar_track_background_height_material
-dimen abc_seekbar_track_progress_height_material
-dimen abc_select_dialog_padding_start_material
-dimen abc_switch_padding
-dimen abc_text_size_body_1_material
-dimen abc_text_size_body_2_material
-dimen abc_text_size_button_material
-dimen abc_text_size_caption_material
-dimen abc_text_size_display_1_material
-dimen abc_text_size_display_2_material
-dimen abc_text_size_display_3_material
-dimen abc_text_size_display_4_material
-dimen abc_text_size_headline_material
-dimen abc_text_size_large_material
-dimen abc_text_size_medium_material
-dimen abc_text_size_menu_header_material
-dimen abc_text_size_menu_material
-dimen abc_text_size_small_material
-dimen abc_text_size_subhead_material
-dimen abc_text_size_subtitle_material_toolbar
-dimen abc_text_size_title_material
-dimen abc_text_size_title_material_toolbar
-dimen compat_button_inset_horizontal_material
-dimen compat_button_inset_vertical_material
-dimen compat_button_padding_horizontal_material
-dimen compat_button_padding_vertical_material
-dimen compat_control_corner_material
-dimen compat_notification_large_icon_max_height
-dimen compat_notification_large_icon_max_width
-dimen disabled_alpha_material_dark
-dimen disabled_alpha_material_light
-dimen highlight_alpha_material_colored
-dimen highlight_alpha_material_dark
-dimen highlight_alpha_material_light
-dimen hint_alpha_material_dark
-dimen hint_alpha_material_light
-dimen hint_pressed_alpha_material_dark
-dimen hint_pressed_alpha_material_light
-dimen notification_action_icon_size
-dimen notification_action_text_size
-dimen notification_big_circle_margin
-dimen notification_content_margin_start
-dimen notification_large_icon_height
-dimen notification_large_icon_width
-dimen notification_main_column_padding_top
-dimen notification_media_narrow_margin
-dimen notification_right_icon_size
-dimen notification_right_side_padding_top
-dimen notification_small_icon_background_padding
-dimen notification_small_icon_size_as_large
-dimen notification_subtext_size
-dimen notification_top_pad
-dimen notification_top_pad_large_text
-dimen subtitle_corner_radius
-dimen subtitle_outline_width
-dimen subtitle_shadow_offset
-dimen subtitle_shadow_radius
-dimen tooltip_corner_radius
-dimen tooltip_horizontal_padding
-dimen tooltip_margin
-dimen tooltip_precise_anchor_extra_offset
-dimen tooltip_precise_anchor_threshold
-dimen tooltip_vertical_padding
-dimen tooltip_y_offset_non_touch
-dimen tooltip_y_offset_touch
-drawable abc_ab_share_pack_mtrl_alpha
-drawable abc_action_bar_item_background_material
-drawable abc_btn_borderless_material
-drawable abc_btn_check_material
-drawable abc_btn_check_to_on_mtrl_000
-drawable abc_btn_check_to_on_mtrl_015
-drawable abc_btn_colored_material
-drawable abc_btn_default_mtrl_shape
-drawable abc_btn_radio_material
-drawable abc_btn_radio_to_on_mtrl_000
-drawable abc_btn_radio_to_on_mtrl_015
-drawable abc_btn_switch_to_on_mtrl_00001
-drawable abc_btn_switch_to_on_mtrl_00012
-drawable abc_cab_background_internal_bg
-drawable abc_cab_background_top_material
-drawable abc_cab_background_top_mtrl_alpha
-drawable abc_control_background_material
-drawable abc_dialog_material_background
-drawable abc_edit_text_material
-drawable abc_ic_ab_back_material
-drawable abc_ic_arrow_drop_right_black_24dp
-drawable abc_ic_clear_material
-drawable abc_ic_commit_search_api_mtrl_alpha
-drawable abc_ic_go_search_api_material
-drawable abc_ic_menu_copy_mtrl_am_alpha
-drawable abc_ic_menu_cut_mtrl_alpha
-drawable abc_ic_menu_overflow_material
-drawable abc_ic_menu_paste_mtrl_am_alpha
-drawable abc_ic_menu_selectall_mtrl_alpha
-drawable abc_ic_menu_share_mtrl_alpha
-drawable abc_ic_search_api_material
-drawable abc_ic_star_black_16dp
-drawable abc_ic_star_black_36dp
-drawable abc_ic_star_black_48dp
-drawable abc_ic_star_half_black_16dp
-drawable abc_ic_star_half_black_36dp
-drawable abc_ic_star_half_black_48dp
-drawable abc_ic_voice_search_api_material
-drawable abc_item_background_holo_dark
-drawable abc_item_background_holo_light
-drawable abc_list_divider_material
-drawable abc_list_divider_mtrl_alpha
-drawable abc_list_focused_holo
-drawable abc_list_longpressed_holo
-drawable abc_list_pressed_holo_dark
-drawable abc_list_pressed_holo_light
-drawable abc_list_selector_background_transition_holo_dark
-drawable abc_list_selector_background_transition_holo_light
-drawable abc_list_selector_disabled_holo_dark
-drawable abc_list_selector_disabled_holo_light
-drawable abc_list_selector_holo_dark
-drawable abc_list_selector_holo_light
-drawable abc_menu_hardkey_panel_mtrl_mult
-drawable abc_popup_background_mtrl_mult
-drawable abc_ratingbar_indicator_material
-drawable abc_ratingbar_material
-drawable abc_ratingbar_small_material
-drawable abc_scrubber_control_off_mtrl_alpha
-drawable abc_scrubber_control_to_pressed_mtrl_000
-drawable abc_scrubber_control_to_pressed_mtrl_005
-drawable abc_scrubber_primary_mtrl_alpha
-drawable abc_scrubber_track_mtrl_alpha
-drawable abc_seekbar_thumb_material
-drawable abc_seekbar_tick_mark_material
-drawable abc_seekbar_track_material
-drawable abc_spinner_mtrl_am_alpha
-drawable abc_spinner_textfield_background_material
-drawable abc_switch_thumb_material
-drawable abc_switch_track_mtrl_alpha
-drawable abc_tab_indicator_material
-drawable abc_tab_indicator_mtrl_alpha
-drawable abc_text_cursor_material
-drawable abc_text_select_handle_left_mtrl_dark
-drawable abc_text_select_handle_left_mtrl_light
-drawable abc_text_select_handle_middle_mtrl_dark
-drawable abc_text_select_handle_middle_mtrl_light
-drawable abc_text_select_handle_right_mtrl_dark
-drawable abc_text_select_handle_right_mtrl_light
-drawable abc_textfield_activated_mtrl_alpha
-drawable abc_textfield_default_mtrl_alpha
-drawable abc_textfield_search_activated_mtrl_alpha
-drawable abc_textfield_search_default_mtrl_alpha
-drawable abc_textfield_search_material
-drawable abc_vector_test
-drawable ic_amap_app_main_current_location_bkg
-drawable ic_amap_app_main_exit_navi_bkg
-drawable ic_amap_app_main_search_bar_bkg
-drawable ic_amap_navi_cursor
-drawable ic_back
-drawable ic_back_dark
-drawable ic_current_location
-drawable ic_current_location_cursor
-drawable ic_delete
-drawable ic_main_setting
-drawable ic_mini_current_position_cursor
-drawable ic_navi_info_bkg
-drawable ic_search
-drawable ic_search_choice_point
-drawable ic_search_company
-drawable ic_search_home
-drawable ic_search_poi_location
-drawable ic_search_unshadow
-drawable notification_action_background
-drawable notification_bg
-drawable notification_bg_low
-drawable notification_bg_low_normal
-drawable notification_bg_low_pressed
-drawable notification_bg_normal
-drawable notification_bg_normal_pressed
-drawable notification_icon_background
-drawable notification_template_icon_bg
-drawable notification_template_icon_low_bg
-drawable notification_tile_bg
-drawable notify_panel_notification_icon_bg
-drawable tooltip_frame_dark
-drawable tooltip_frame_light
-id action0
-id action_bar
-id action_bar_activity_content
-id action_bar_container
-id action_bar_root
-id action_bar_spinner
-id action_bar_subtitle
-id action_bar_title
-id action_container
-id action_context_bar
-id action_divider
-id action_image
-id action_menu_divider
-id action_menu_presenter
-id action_mode_bar
-id action_mode_bar_stub
-id action_mode_close_button
-id action_text
-id actions
-id activity_chooser_view_content
-id add
-id alertTitle
-id async
-id blocking
-id bottom
-id buttonPanel
-id cancel_action
-id center
-id centerCrop
-id centerInside
-id checkbox
-id chronometer
-id circle
-id content
-id contentPanel
-id custom
-id customPanel
-id decor_content_parent
-id default_activity_button
-id demo_module_id_2d3d
-id demo_module_id_add_marker
-id demo_module_id_add_markers
-id demo_module_id_clear
-id demo_module_id_current
-id demo_module_id_day_light
-id demo_module_id_day_night
-id demo_module_id_display_overlay
-id demo_module_id_iw_navi_stop
-id demo_module_id_iw_navito
-id demo_module_id_iw_poi_navito
-id demo_module_id_iw_poi_title
-id demo_module_id_iw_refresh
-id demo_module_id_iw_time
-id demo_module_id_loc
-id demo_module_id_loc_info
-id demo_module_id_navi_mode
-id demo_module_id_reverse_lock
-id demo_module_id_start_navi
-id demo_module_id_stop_navi
-id demo_module_id_traffic
-id demo_module_id_zoom_in
-id demo_module_id_zoom_out
-id edit_query
-id end
-id end_padder
-id expand_activities_button
-id expanded_menu
-id fitCenter
-id fitEnd
-id fitStart
-id fitXY
-id focusCrop
-id forever
-id glide_custom_view_target_tag
-id gone
-id group_divider
-id home
-id icon
-id icon_group
-id image
-id info
-id invisible
-id italic
-id left
-id line1
-id line3
-id listMode
-id list_item
-id media_actions
-id message
-id multiply
-id none
-id normal
-id notification_background
-id notification_main_column
-id notification_main_column_container
-id packed
-id parent
-id parentPanel
-id percent
-id progress_circular
-id progress_horizontal
-id radio
-id right
-id right_icon
-id right_side
-id round
-id screen
-id scrollIndicatorDown
-id scrollIndicatorUp
-id scrollView
-id search_badge
-id search_bar
-id search_button
-id search_close_btn
-id search_edit_frame
-id search_go_btn
-id search_mag_icon
-id search_plate
-id search_src_text
-id search_voice_btn
-id select_dialog_listview
-id shortcut
-id spacer
-id split_action_bar
-id spread
-id spread_inside
-id src_atop
-id src_in
-id src_over
-id start
-id status_bar_latest_event_content
-id submenuarrow
-id submit_area
-id tabMode
-id tag_transition_group
-id tag_unhandled_key_event_manager
-id tag_unhandled_key_listeners
-id text
-id text2
-id textSpacerNoButtons
-id textSpacerNoTitle
-id time
-id title
-id titleDividerNoCustom
-id title_template
-id top
-id topPanel
-id uniform
-id up
-id wrap
-id wrap_content
-integer abc_config_activityDefaultDur
-integer abc_config_activityShortDur
-integer cancel_button_image_alpha
-integer config_tooltipAnimTime
-integer status_bar_notification_info_maxnum
-layout abc_action_bar_title_item
-layout abc_action_bar_up_container
-layout abc_action_menu_item_layout
-layout abc_action_menu_layout
-layout abc_action_mode_bar
-layout abc_action_mode_close_item_material
-layout abc_activity_chooser_view
-layout abc_activity_chooser_view_list_item
-layout abc_alert_dialog_button_bar_material
-layout abc_alert_dialog_material
-layout abc_alert_dialog_title_material
-layout abc_cascading_menu_item_layout
-layout abc_dialog_title_material
-layout abc_expanded_menu_layout
-layout abc_list_menu_item_checkbox
-layout abc_list_menu_item_icon
-layout abc_list_menu_item_layout
-layout abc_list_menu_item_radio
-layout abc_popup_menu_header_item_layout
-layout abc_popup_menu_item_layout
-layout abc_screen_content_include
-layout abc_screen_simple
-layout abc_screen_simple_overlay_action_mode
-layout abc_screen_toolbar
-layout abc_search_dropdown_item_icons_2line
-layout abc_search_view
-layout abc_select_dialog_material
-layout abc_tooltip
-layout notification_action
-layout notification_action_tombstone
-layout notification_media_action
-layout notification_media_cancel_action
-layout notification_template_big_media
-layout notification_template_big_media_custom
-layout notification_template_big_media_narrow
-layout notification_template_big_media_narrow_custom
-layout notification_template_custom_big
-layout notification_template_icon_group
-layout notification_template_lines_media
-layout notification_template_media
-layout notification_template_media_custom
-layout notification_template_part_chronometer
-layout notification_template_part_time
-layout select_dialog_item_material
-layout select_dialog_multichoice_material
-layout select_dialog_singlechoice_material
-layout support_simple_spinner_dropdown_item
-layout tanlu_module_bubble_marker
-layout tanlu_module_card_view
-layout tanlu_module_info_window
-layout tanlu_module_poi_info_window
-string abc_action_bar_home_description
-string abc_action_bar_up_description
-string abc_action_menu_overflow_description
-string abc_action_mode_done
-string abc_activity_chooser_view_see_all
-string abc_activitychooserview_choose_application
-string abc_capital_off
-string abc_capital_on
-string abc_font_family_body_1_material
-string abc_font_family_body_2_material
-string abc_font_family_button_material
-string abc_font_family_caption_material
-string abc_font_family_display_1_material
-string abc_font_family_display_2_material
-string abc_font_family_display_3_material
-string abc_font_family_display_4_material
-string abc_font_family_headline_material
-string abc_font_family_menu_material
-string abc_font_family_subhead_material
-string abc_font_family_title_material
-string abc_menu_alt_shortcut_label
-string abc_menu_ctrl_shortcut_label
-string abc_menu_delete_shortcut_label
-string abc_menu_enter_shortcut_label
-string abc_menu_function_shortcut_label
-string abc_menu_meta_shortcut_label
-string abc_menu_shift_shortcut_label
-string abc_menu_space_shortcut_label
-string abc_menu_sym_shortcut_label
-string abc_prepend_shortcut_label
-string abc_search_hint
-string abc_searchview_description_clear
-string abc_searchview_description_query
-string abc_searchview_description_search
-string abc_searchview_description_submit
-string abc_searchview_description_voice
-string abc_shareactionprovider_share_with
-string abc_shareactionprovider_share_with_application
-string abc_toolbar_collapse_description
-string app_name
-string search_menu_title
-string status_bar_notification_info_overflow
-style AlertDialog_AppCompat
-style AlertDialog_AppCompat_Light
-style Animation_AppCompat_Dialog
-style Animation_AppCompat_DropDownUp
-style Animation_AppCompat_Tooltip
-style Base_AlertDialog_AppCompat
-style Base_AlertDialog_AppCompat_Light
-style Base_Animation_AppCompat_Dialog
-style Base_Animation_AppCompat_DropDownUp
-style Base_Animation_AppCompat_Tooltip
-style Base_DialogWindowTitleBackground_AppCompat
-style Base_DialogWindowTitle_AppCompat
-style Base_TextAppearance_AppCompat
-style Base_TextAppearance_AppCompat_Body1
-style Base_TextAppearance_AppCompat_Body2
-style Base_TextAppearance_AppCompat_Button
-style Base_TextAppearance_AppCompat_Caption
-style Base_TextAppearance_AppCompat_Display1
-style Base_TextAppearance_AppCompat_Display2
-style Base_TextAppearance_AppCompat_Display3
-style Base_TextAppearance_AppCompat_Display4
-style Base_TextAppearance_AppCompat_Headline
-style Base_TextAppearance_AppCompat_Inverse
-style Base_TextAppearance_AppCompat_Large
-style Base_TextAppearance_AppCompat_Large_Inverse
-style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large
-style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small
-style Base_TextAppearance_AppCompat_Medium
-style Base_TextAppearance_AppCompat_Medium_Inverse
-style Base_TextAppearance_AppCompat_Menu
-style Base_TextAppearance_AppCompat_SearchResult
-style Base_TextAppearance_AppCompat_SearchResult_Subtitle
-style Base_TextAppearance_AppCompat_SearchResult_Title
-style Base_TextAppearance_AppCompat_Small
-style Base_TextAppearance_AppCompat_Small_Inverse
-style Base_TextAppearance_AppCompat_Subhead
-style Base_TextAppearance_AppCompat_Subhead_Inverse
-style Base_TextAppearance_AppCompat_Title
-style Base_TextAppearance_AppCompat_Title_Inverse
-style Base_TextAppearance_AppCompat_Tooltip
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Title
-style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse
-style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle
-style Base_TextAppearance_AppCompat_Widget_ActionMode_Title
-style Base_TextAppearance_AppCompat_Widget_Button
-style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored
-style Base_TextAppearance_AppCompat_Widget_Button_Colored
-style Base_TextAppearance_AppCompat_Widget_Button_Inverse
-style Base_TextAppearance_AppCompat_Widget_DropDownItem
-style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header
-style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large
-style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small
-style Base_TextAppearance_AppCompat_Widget_Switch
-style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem
-style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item
-style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle
-style Base_TextAppearance_Widget_AppCompat_Toolbar_Title
-style Base_ThemeOverlay_AppCompat
-style Base_ThemeOverlay_AppCompat_ActionBar
-style Base_ThemeOverlay_AppCompat_Dark
-style Base_ThemeOverlay_AppCompat_Dark_ActionBar
-style Base_ThemeOverlay_AppCompat_Dialog
-style Base_ThemeOverlay_AppCompat_Dialog_Alert
-style Base_ThemeOverlay_AppCompat_Light
-style Base_Theme_AppCompat
-style Base_Theme_AppCompat_CompactMenu
-style Base_Theme_AppCompat_Dialog
-style Base_Theme_AppCompat_DialogWhenLarge
-style Base_Theme_AppCompat_Dialog_Alert
-style Base_Theme_AppCompat_Dialog_FixedSize
-style Base_Theme_AppCompat_Dialog_MinWidth
-style Base_Theme_AppCompat_Light
-style Base_Theme_AppCompat_Light_DarkActionBar
-style Base_Theme_AppCompat_Light_Dialog
-style Base_Theme_AppCompat_Light_DialogWhenLarge
-style Base_Theme_AppCompat_Light_Dialog_Alert
-style Base_Theme_AppCompat_Light_Dialog_FixedSize
-style Base_Theme_AppCompat_Light_Dialog_MinWidth
-style Base_V21_ThemeOverlay_AppCompat_Dialog
-style Base_V21_Theme_AppCompat
-style Base_V21_Theme_AppCompat_Dialog
-style Base_V21_Theme_AppCompat_Light
-style Base_V21_Theme_AppCompat_Light_Dialog
-style Base_V22_Theme_AppCompat
-style Base_V22_Theme_AppCompat_Light
-style Base_V23_Theme_AppCompat
-style Base_V23_Theme_AppCompat_Light
-style Base_V26_Theme_AppCompat
-style Base_V26_Theme_AppCompat_Light
-style Base_V26_Widget_AppCompat_Toolbar
-style Base_V28_Theme_AppCompat
-style Base_V28_Theme_AppCompat_Light
-style Base_V7_ThemeOverlay_AppCompat_Dialog
-style Base_V7_Theme_AppCompat
-style Base_V7_Theme_AppCompat_Dialog
-style Base_V7_Theme_AppCompat_Light
-style Base_V7_Theme_AppCompat_Light_Dialog
-style Base_V7_Widget_AppCompat_AutoCompleteTextView
-style Base_V7_Widget_AppCompat_EditText
-style Base_V7_Widget_AppCompat_Toolbar
-style Base_Widget_AppCompat_ActionBar
-style Base_Widget_AppCompat_ActionBar_Solid
-style Base_Widget_AppCompat_ActionBar_TabBar
-style Base_Widget_AppCompat_ActionBar_TabText
-style Base_Widget_AppCompat_ActionBar_TabView
-style Base_Widget_AppCompat_ActionButton
-style Base_Widget_AppCompat_ActionButton_CloseMode
-style Base_Widget_AppCompat_ActionButton_Overflow
-style Base_Widget_AppCompat_ActionMode
-style Base_Widget_AppCompat_ActivityChooserView
-style Base_Widget_AppCompat_AutoCompleteTextView
-style Base_Widget_AppCompat_Button
-style Base_Widget_AppCompat_ButtonBar
-style Base_Widget_AppCompat_ButtonBar_AlertDialog
-style Base_Widget_AppCompat_Button_Borderless
-style Base_Widget_AppCompat_Button_Borderless_Colored
-style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog
-style Base_Widget_AppCompat_Button_Colored
-style Base_Widget_AppCompat_Button_Small
-style Base_Widget_AppCompat_CompoundButton_CheckBox
-style Base_Widget_AppCompat_CompoundButton_RadioButton
-style Base_Widget_AppCompat_CompoundButton_Switch
-style Base_Widget_AppCompat_DrawerArrowToggle
-style Base_Widget_AppCompat_DrawerArrowToggle_Common
-style Base_Widget_AppCompat_DropDownItem_Spinner
-style Base_Widget_AppCompat_EditText
-style Base_Widget_AppCompat_ImageButton
-style Base_Widget_AppCompat_Light_ActionBar
-style Base_Widget_AppCompat_Light_ActionBar_Solid
-style Base_Widget_AppCompat_Light_ActionBar_TabBar
-style Base_Widget_AppCompat_Light_ActionBar_TabText
-style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse
-style Base_Widget_AppCompat_Light_ActionBar_TabView
-style Base_Widget_AppCompat_Light_PopupMenu
-style Base_Widget_AppCompat_Light_PopupMenu_Overflow
-style Base_Widget_AppCompat_ListMenuView
-style Base_Widget_AppCompat_ListPopupWindow
-style Base_Widget_AppCompat_ListView
-style Base_Widget_AppCompat_ListView_DropDown
-style Base_Widget_AppCompat_ListView_Menu
-style Base_Widget_AppCompat_PopupMenu
-style Base_Widget_AppCompat_PopupMenu_Overflow
-style Base_Widget_AppCompat_PopupWindow
-style Base_Widget_AppCompat_ProgressBar
-style Base_Widget_AppCompat_ProgressBar_Horizontal
-style Base_Widget_AppCompat_RatingBar
-style Base_Widget_AppCompat_RatingBar_Indicator
-style Base_Widget_AppCompat_RatingBar_Small
-style Base_Widget_AppCompat_SearchView
-style Base_Widget_AppCompat_SearchView_ActionBar
-style Base_Widget_AppCompat_SeekBar
-style Base_Widget_AppCompat_SeekBar_Discrete
-style Base_Widget_AppCompat_Spinner
-style Base_Widget_AppCompat_Spinner_Underlined
-style Base_Widget_AppCompat_TextView_SpinnerItem
-style Base_Widget_AppCompat_Toolbar
-style Base_Widget_AppCompat_Toolbar_Button_Navigation
-style Platform_AppCompat
-style Platform_AppCompat_Light
-style Platform_ThemeOverlay_AppCompat
-style Platform_ThemeOverlay_AppCompat_Dark
-style Platform_ThemeOverlay_AppCompat_Light
-style Platform_V21_AppCompat
-style Platform_V21_AppCompat_Light
-style Platform_V25_AppCompat
-style Platform_V25_AppCompat_Light
-style Platform_Widget_AppCompat_Spinner
-style RtlOverlay_DialogWindowTitle_AppCompat
-style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem
-style RtlOverlay_Widget_AppCompat_DialogTitle_Icon
-style RtlOverlay_Widget_AppCompat_PopupMenuItem
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text
-style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title
-style RtlOverlay_Widget_AppCompat_SearchView_MagIcon
-style RtlOverlay_Widget_AppCompat_Search_DropDown
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Query
-style RtlOverlay_Widget_AppCompat_Search_DropDown_Text
-style RtlUnderlay_Widget_AppCompat_ActionButton
-style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow
-style TextAppearance_AppCompat
-style TextAppearance_AppCompat_Body1
-style TextAppearance_AppCompat_Body2
-style TextAppearance_AppCompat_Button
-style TextAppearance_AppCompat_Caption
-style TextAppearance_AppCompat_Display1
-style TextAppearance_AppCompat_Display2
-style TextAppearance_AppCompat_Display3
-style TextAppearance_AppCompat_Display4
-style TextAppearance_AppCompat_Headline
-style TextAppearance_AppCompat_Inverse
-style TextAppearance_AppCompat_Large
-style TextAppearance_AppCompat_Large_Inverse
-style TextAppearance_AppCompat_Light_SearchResult_Subtitle
-style TextAppearance_AppCompat_Light_SearchResult_Title
-style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large
-style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small
-style TextAppearance_AppCompat_Medium
-style TextAppearance_AppCompat_Medium_Inverse
-style TextAppearance_AppCompat_Menu
-style TextAppearance_AppCompat_SearchResult_Subtitle
-style TextAppearance_AppCompat_SearchResult_Title
-style TextAppearance_AppCompat_Small
-style TextAppearance_AppCompat_Small_Inverse
-style TextAppearance_AppCompat_Subhead
-style TextAppearance_AppCompat_Subhead_Inverse
-style TextAppearance_AppCompat_Title
-style TextAppearance_AppCompat_Title_Inverse
-style TextAppearance_AppCompat_Tooltip
-style TextAppearance_AppCompat_Widget_ActionBar_Menu
-style TextAppearance_AppCompat_Widget_ActionBar_Subtitle
-style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse
-style TextAppearance_AppCompat_Widget_ActionBar_Title
-style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse
-style TextAppearance_AppCompat_Widget_ActionMode_Subtitle
-style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse
-style TextAppearance_AppCompat_Widget_ActionMode_Title
-style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse
-style TextAppearance_AppCompat_Widget_Button
-style TextAppearance_AppCompat_Widget_Button_Borderless_Colored
-style TextAppearance_AppCompat_Widget_Button_Colored
-style TextAppearance_AppCompat_Widget_Button_Inverse
-style TextAppearance_AppCompat_Widget_DropDownItem
-style TextAppearance_AppCompat_Widget_PopupMenu_Header
-style TextAppearance_AppCompat_Widget_PopupMenu_Large
-style TextAppearance_AppCompat_Widget_PopupMenu_Small
-style TextAppearance_AppCompat_Widget_Switch
-style TextAppearance_AppCompat_Widget_TextView_SpinnerItem
-style TextAppearance_Compat_Notification
-style TextAppearance_Compat_Notification_Info
-style TextAppearance_Compat_Notification_Info_Media
-style TextAppearance_Compat_Notification_Line2
-style TextAppearance_Compat_Notification_Line2_Media
-style TextAppearance_Compat_Notification_Media
-style TextAppearance_Compat_Notification_Time
-style TextAppearance_Compat_Notification_Time_Media
-style TextAppearance_Compat_Notification_Title
-style TextAppearance_Compat_Notification_Title_Media
-style TextAppearance_Widget_AppCompat_ExpandedMenu_Item
-style TextAppearance_Widget_AppCompat_Toolbar_Subtitle
-style TextAppearance_Widget_AppCompat_Toolbar_Title
-style ThemeOverlay_AppCompat
-style ThemeOverlay_AppCompat_ActionBar
-style ThemeOverlay_AppCompat_Dark
-style ThemeOverlay_AppCompat_Dark_ActionBar
-style ThemeOverlay_AppCompat_Dialog
-style ThemeOverlay_AppCompat_Dialog_Alert
-style ThemeOverlay_AppCompat_Light
-style Theme_AppCompat
-style Theme_AppCompat_CompactMenu
-style Theme_AppCompat_DayNight
-style Theme_AppCompat_DayNight_DarkActionBar
-style Theme_AppCompat_DayNight_Dialog
-style Theme_AppCompat_DayNight_DialogWhenLarge
-style Theme_AppCompat_DayNight_Dialog_Alert
-style Theme_AppCompat_DayNight_Dialog_MinWidth
-style Theme_AppCompat_DayNight_NoActionBar
-style Theme_AppCompat_Dialog
-style Theme_AppCompat_DialogWhenLarge
-style Theme_AppCompat_Dialog_Alert
-style Theme_AppCompat_Dialog_MinWidth
-style Theme_AppCompat_Light
-style Theme_AppCompat_Light_DarkActionBar
-style Theme_AppCompat_Light_Dialog
-style Theme_AppCompat_Light_DialogWhenLarge
-style Theme_AppCompat_Light_Dialog_Alert
-style Theme_AppCompat_Light_Dialog_MinWidth
-style Theme_AppCompat_Light_NoActionBar
-style Theme_AppCompat_NoActionBar
-style Widget_AppCompat_ActionBar
-style Widget_AppCompat_ActionBar_Solid
-style Widget_AppCompat_ActionBar_TabBar
-style Widget_AppCompat_ActionBar_TabText
-style Widget_AppCompat_ActionBar_TabView
-style Widget_AppCompat_ActionButton
-style Widget_AppCompat_ActionButton_CloseMode
-style Widget_AppCompat_ActionButton_Overflow
-style Widget_AppCompat_ActionMode
-style Widget_AppCompat_ActivityChooserView
-style Widget_AppCompat_AutoCompleteTextView
-style Widget_AppCompat_Button
-style Widget_AppCompat_ButtonBar
-style Widget_AppCompat_ButtonBar_AlertDialog
-style Widget_AppCompat_Button_Borderless
-style Widget_AppCompat_Button_Borderless_Colored
-style Widget_AppCompat_Button_ButtonBar_AlertDialog
-style Widget_AppCompat_Button_Colored
-style Widget_AppCompat_Button_Small
-style Widget_AppCompat_CompoundButton_CheckBox
-style Widget_AppCompat_CompoundButton_RadioButton
-style Widget_AppCompat_CompoundButton_Switch
-style Widget_AppCompat_DrawerArrowToggle
-style Widget_AppCompat_DropDownItem_Spinner
-style Widget_AppCompat_EditText
-style Widget_AppCompat_ImageButton
-style Widget_AppCompat_Light_ActionBar
-style Widget_AppCompat_Light_ActionBar_Solid
-style Widget_AppCompat_Light_ActionBar_Solid_Inverse
-style Widget_AppCompat_Light_ActionBar_TabBar
-style Widget_AppCompat_Light_ActionBar_TabBar_Inverse
-style Widget_AppCompat_Light_ActionBar_TabText
-style Widget_AppCompat_Light_ActionBar_TabText_Inverse
-style Widget_AppCompat_Light_ActionBar_TabView
-style Widget_AppCompat_Light_ActionBar_TabView_Inverse
-style Widget_AppCompat_Light_ActionButton
-style Widget_AppCompat_Light_ActionButton_CloseMode
-style Widget_AppCompat_Light_ActionButton_Overflow
-style Widget_AppCompat_Light_ActionMode_Inverse
-style Widget_AppCompat_Light_ActivityChooserView
-style Widget_AppCompat_Light_AutoCompleteTextView
-style Widget_AppCompat_Light_DropDownItem_Spinner
-style Widget_AppCompat_Light_ListPopupWindow
-style Widget_AppCompat_Light_ListView_DropDown
-style Widget_AppCompat_Light_PopupMenu
-style Widget_AppCompat_Light_PopupMenu_Overflow
-style Widget_AppCompat_Light_SearchView
-style Widget_AppCompat_Light_Spinner_DropDown_ActionBar
-style Widget_AppCompat_ListMenuView
-style Widget_AppCompat_ListPopupWindow
-style Widget_AppCompat_ListView
-style Widget_AppCompat_ListView_DropDown
-style Widget_AppCompat_ListView_Menu
-style Widget_AppCompat_PopupMenu
-style Widget_AppCompat_PopupMenu_Overflow
-style Widget_AppCompat_PopupWindow
-style Widget_AppCompat_ProgressBar
-style Widget_AppCompat_ProgressBar_Horizontal
-style Widget_AppCompat_RatingBar
-style Widget_AppCompat_RatingBar_Indicator
-style Widget_AppCompat_RatingBar_Small
-style Widget_AppCompat_SearchView
-style Widget_AppCompat_SearchView_ActionBar
-style Widget_AppCompat_SeekBar
-style Widget_AppCompat_SeekBar_Discrete
-style Widget_AppCompat_Spinner
-style Widget_AppCompat_Spinner_DropDown
-style Widget_AppCompat_Spinner_DropDown_ActionBar
-style Widget_AppCompat_Spinner_Underlined
-style Widget_AppCompat_TextView_SpinnerItem
-style Widget_AppCompat_Toolbar
-style Widget_AppCompat_Toolbar_Button_Navigation
-style Widget_Compat_NotificationActionContainer
-style Widget_Compat_NotificationActionText
-style Widget_Support_CoordinatorLayout
-styleable ActionBar background backgroundSplit backgroundStacked contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation customNavigationLayout displayOptions divider elevation height hideOnContentScroll homeAsUpIndicator homeLayout icon indeterminateProgressStyle itemPadding logo navigationMode popupTheme progressBarPadding progressBarStyle subtitle subtitleTextStyle title titleTextStyle
-styleable ActionBarLayout android_layout_gravity
-styleable ActionMenuItemView android_minWidth
-styleable ActionMenuView
-styleable ActionMode background backgroundSplit closeItemLayout height subtitleTextStyle titleTextStyle
-styleable ActivityChooserView expandActivityOverflowButtonDrawable initialActivityCount
-styleable AlertDialog android_layout buttonIconDimen buttonPanelSideLayout listItemLayout listLayout multiChoiceItemLayout showTitle singleChoiceItemLayout
-styleable AnimatedStateListDrawableCompat android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible
-styleable AnimatedStateListDrawableItem android_drawable android_id
-styleable AnimatedStateListDrawableTransition android_drawable android_fromId android_reversible android_toId
-styleable AppCompatImageView android_src srcCompat tint tintMode
-styleable AppCompatSeekBar android_thumb tickMark tickMarkTint tickMarkTintMode
-styleable AppCompatTextHelper android_drawableBottom android_drawableEnd android_drawableLeft android_drawableRight android_drawableStart android_drawableTop android_textAppearance
-styleable AppCompatTextView android_textAppearance autoSizeMaxTextSize autoSizeMinTextSize autoSizePresetSizes autoSizeStepGranularity autoSizeTextType firstBaselineToTopHeight fontFamily lastBaselineToBottomHeight lineHeight textAllCaps
-styleable AppCompatTheme actionBarDivider actionBarItemBackground actionBarPopupTheme actionBarSize actionBarSplitStyle actionBarStyle actionBarTabBarStyle actionBarTabStyle actionBarTabTextStyle actionBarTheme actionBarWidgetTheme actionButtonStyle actionDropDownStyle actionMenuTextAppearance actionMenuTextColor actionModeBackground actionModeCloseButtonStyle actionModeCloseDrawable actionModeCopyDrawable actionModeCutDrawable actionModeFindDrawable actionModePasteDrawable actionModePopupWindowStyle actionModeSelectAllDrawable actionModeShareDrawable actionModeSplitBackground actionModeStyle actionModeWebSearchDrawable actionOverflowButtonStyle actionOverflowMenuStyle activityChooserViewStyle alertDialogButtonGroupStyle alertDialogCenterButtons alertDialogStyle alertDialogTheme android_windowAnimationStyle android_windowIsFloating autoCompleteTextViewStyle borderlessButtonStyle buttonBarButtonStyle buttonBarNegativeButtonStyle buttonBarNeutralButtonStyle buttonBarPositiveButtonStyle buttonBarStyle buttonStyle buttonStyleSmall checkboxStyle checkedTextViewStyle colorAccent colorBackgroundFloating colorButtonNormal colorControlActivated colorControlHighlight colorControlNormal colorError colorPrimary colorPrimaryDark colorSwitchThumbNormal controlBackground dialogCornerRadius dialogPreferredPadding dialogTheme dividerHorizontal dividerVertical dropDownListViewStyle dropdownListPreferredItemHeight editTextBackground editTextColor editTextStyle homeAsUpIndicator imageButtonStyle listChoiceBackgroundIndicator listDividerAlertDialog listMenuViewStyle listPopupWindowStyle listPreferredItemHeight listPreferredItemHeightLarge listPreferredItemHeightSmall listPreferredItemPaddingLeft listPreferredItemPaddingRight panelBackground panelMenuListTheme panelMenuListWidth popupMenuStyle popupWindowStyle radioButtonStyle ratingBarStyle ratingBarStyleIndicator ratingBarStyleSmall searchViewStyle seekBarStyle selectableItemBackground selectableItemBackgroundBorderless spinnerDropDownItemStyle spinnerStyle switchStyle textAppearanceLargePopupMenu textAppearanceListItem textAppearanceListItemSecondary textAppearanceListItemSmall textAppearancePopupMenuHeader textAppearanceSearchResultSubtitle textAppearanceSearchResultTitle textAppearanceSmallPopupMenu textColorAlertDialogListItem textColorSearchUrl toolbarNavigationButtonStyle toolbarStyle tooltipForegroundColor tooltipFrameBackground viewInflaterClass windowActionBar windowActionBarOverlay windowActionModeOverlay windowFixedHeightMajor windowFixedHeightMinor windowFixedWidthMajor windowFixedWidthMinor windowMinWidthMajor windowMinWidthMinor windowNoTitle
-styleable ButtonBarLayout allowStacking
-styleable ColorStateListItem alpha android_alpha android_color
-styleable CompoundButton android_button buttonTint buttonTintMode
-styleable ConstraintLayout_Layout android_maxHeight android_maxWidth android_minHeight android_minWidth android_orientation barrierAllowsGoneWidgets barrierDirection chainUseRtl constraintSet constraint_referenced_ids layout_constrainedHeight layout_constrainedWidth layout_constraintBaseline_creator layout_constraintBaseline_toBaselineOf layout_constraintBottom_creator layout_constraintBottom_toBottomOf layout_constraintBottom_toTopOf layout_constraintCircle layout_constraintCircleAngle layout_constraintCircleRadius layout_constraintDimensionRatio layout_constraintEnd_toEndOf layout_constraintEnd_toStartOf layout_constraintGuide_begin layout_constraintGuide_end layout_constraintGuide_percent layout_constraintHeight_default layout_constraintHeight_max layout_constraintHeight_min layout_constraintHeight_percent layout_constraintHorizontal_bias layout_constraintHorizontal_chainStyle layout_constraintHorizontal_weight layout_constraintLeft_creator layout_constraintLeft_toLeftOf layout_constraintLeft_toRightOf layout_constraintRight_creator layout_constraintRight_toLeftOf layout_constraintRight_toRightOf layout_constraintStart_toEndOf layout_constraintStart_toStartOf layout_constraintTop_creator layout_constraintTop_toBottomOf layout_constraintTop_toTopOf layout_constraintVertical_bias layout_constraintVertical_chainStyle layout_constraintVertical_weight layout_constraintWidth_default layout_constraintWidth_max layout_constraintWidth_min layout_constraintWidth_percent layout_editor_absoluteX layout_editor_absoluteY layout_goneMarginBottom layout_goneMarginEnd layout_goneMarginLeft layout_goneMarginRight layout_goneMarginStart layout_goneMarginTop layout_optimizationLevel
-styleable ConstraintLayout_placeholder content emptyVisibility
-styleable ConstraintSet android_alpha android_elevation android_id android_layout_height android_layout_marginBottom android_layout_marginEnd android_layout_marginLeft android_layout_marginRight android_layout_marginStart android_layout_marginTop android_layout_width android_maxHeight android_maxWidth android_minHeight android_minWidth android_orientation android_rotation android_rotationX android_rotationY android_scaleX android_scaleY android_transformPivotX android_transformPivotY android_translationX android_translationY android_translationZ android_visibility barrierAllowsGoneWidgets barrierDirection chainUseRtl constraint_referenced_ids layout_constrainedHeight layout_constrainedWidth layout_constraintBaseline_creator layout_constraintBaseline_toBaselineOf layout_constraintBottom_creator layout_constraintBottom_toBottomOf layout_constraintBottom_toTopOf layout_constraintCircle layout_constraintCircleAngle layout_constraintCircleRadius layout_constraintDimensionRatio layout_constraintEnd_toEndOf layout_constraintEnd_toStartOf layout_constraintGuide_begin layout_constraintGuide_end layout_constraintGuide_percent layout_constraintHeight_default layout_constraintHeight_max layout_constraintHeight_min layout_constraintHeight_percent layout_constraintHorizontal_bias layout_constraintHorizontal_chainStyle layout_constraintHorizontal_weight layout_constraintLeft_creator layout_constraintLeft_toLeftOf layout_constraintLeft_toRightOf layout_constraintRight_creator layout_constraintRight_toLeftOf layout_constraintRight_toRightOf layout_constraintStart_toEndOf layout_constraintStart_toStartOf layout_constraintTop_creator layout_constraintTop_toBottomOf layout_constraintTop_toTopOf layout_constraintVertical_bias layout_constraintVertical_chainStyle layout_constraintVertical_weight layout_constraintWidth_default layout_constraintWidth_max layout_constraintWidth_min layout_constraintWidth_percent layout_editor_absoluteX layout_editor_absoluteY layout_goneMarginBottom layout_goneMarginEnd layout_goneMarginLeft layout_goneMarginRight layout_goneMarginStart layout_goneMarginTop
-styleable CoordinatorLayout keylines statusBarBackground
-styleable CoordinatorLayout_Layout android_layout_gravity layout_anchor layout_anchorGravity layout_behavior layout_dodgeInsetEdges layout_insetEdge layout_keyline
-styleable DrawerArrowToggle arrowHeadLength arrowShaftLength barLength color drawableSize gapBetweenBars spinBars thickness
-styleable FontFamily fontProviderAuthority fontProviderCerts fontProviderFetchStrategy fontProviderFetchTimeout fontProviderPackage fontProviderQuery
-styleable FontFamilyFont android_font android_fontStyle android_fontVariationSettings android_fontWeight android_ttcIndex font fontStyle fontVariationSettings fontWeight ttcIndex
-styleable GenericDraweeHierarchy actualImageScaleType backgroundImage fadeDuration failureImage failureImageScaleType overlayImage placeholderImage placeholderImageScaleType pressedStateOverlayImage progressBarAutoRotateInterval progressBarImage progressBarImageScaleType retryImage retryImageScaleType roundAsCircle roundBottomLeft roundBottomRight roundTopLeft roundTopRight roundWithOverlayColor roundedCornerRadius roundingBorderColor roundingBorderPadding roundingBorderWidth viewAspectRatio
-styleable GradientColor android_centerColor android_centerX android_centerY android_endColor android_endX android_endY android_gradientRadius android_startColor android_startX android_startY android_tileMode android_type
-styleable GradientColorItem android_color android_offset
-styleable LinearConstraintLayout android_orientation
-styleable LinearLayoutCompat android_baselineAligned android_baselineAlignedChildIndex android_gravity android_orientation android_weightSum divider dividerPadding measureWithLargestChild showDividers
-styleable LinearLayoutCompat_Layout android_layout_gravity android_layout_height android_layout_weight android_layout_width
-styleable ListPopupWindow android_dropDownHorizontalOffset android_dropDownVerticalOffset
-styleable MenuGroup android_checkableBehavior android_enabled android_id android_menuCategory android_orderInCategory android_visible
-styleable MenuItem actionLayout actionProviderClass actionViewClass alphabeticModifiers android_alphabeticShortcut android_checkable android_checked android_enabled android_icon android_id android_menuCategory android_numericShortcut android_onClick android_orderInCategory android_title android_titleCondensed android_visible contentDescription iconTint iconTintMode numericModifiers showAsAction tooltipText
-styleable MenuView android_headerBackground android_horizontalDivider android_itemBackground android_itemIconDisabledAlpha android_itemTextAppearance android_verticalDivider android_windowAnimationStyle preserveIconSpacing subMenuArrow
-styleable MogoImageView miv_blurRadius miv_borderColor miv_bottomLeftRadius miv_bottomRightRadius miv_failureHolder miv_isBlur miv_overlayImageId miv_placeHolder miv_radius miv_shape miv_shapeBorderWidth miv_topLeftRadius miv_topRightRadius
-styleable PopupWindow android_popupAnimationStyle android_popupBackground overlapAnchor
-styleable PopupWindowBackgroundState state_above_anchor
-styleable RecycleListView paddingBottomNoButtons paddingTopNoTitle
-styleable SearchView android_focusable android_imeOptions android_inputType android_maxWidth closeIcon commitIcon defaultQueryHint goIcon iconifiedByDefault layout queryBackground queryHint searchHintIcon searchIcon submitBackground suggestionRowLayout voiceIcon
-styleable SimpleDraweeView actualImageUri
-styleable Spinner android_dropDownWidth android_entries android_popupBackground android_prompt popupTheme
-styleable StateListDrawable android_constantSize android_dither android_enterFadeDuration android_exitFadeDuration android_variablePadding android_visible
-styleable StateListDrawableItem android_drawable
-styleable SwitchCompat android_textOff android_textOn android_thumb showText splitTrack switchMinWidth switchPadding switchTextAppearance thumbTextPadding thumbTint thumbTintMode track trackTint trackTintMode
-styleable TextAppearance android_fontFamily android_shadowColor android_shadowDx android_shadowDy android_shadowRadius android_textColor android_textColorHint android_textColorLink android_textSize android_textStyle android_typeface fontFamily textAllCaps
-styleable Toolbar android_gravity android_minHeight buttonGravity collapseContentDescription collapseIcon contentInsetEnd contentInsetEndWithActions contentInsetLeft contentInsetRight contentInsetStart contentInsetStartWithNavigation logo logoDescription maxButtonHeight navigationContentDescription navigationIcon popupTheme subtitle subtitleTextAppearance subtitleTextColor title titleMargin titleMarginBottom titleMarginEnd titleMarginStart titleMarginTop titleMargins titleTextAppearance titleTextColor
-styleable View android_focusable android_theme paddingEnd paddingStart theme
-styleable ViewBackgroundHelper android_background backgroundTint backgroundTintMode
-styleable ViewStubCompat android_id android_inflatedId android_layout
diff --git a/demo/tanlu-module/build/intermediates/runtime_library_classes/debug/classes.jar b/demo/tanlu-module/build/intermediates/runtime_library_classes/debug/classes.jar
deleted file mode 100644
index a4e13a3143..0000000000
Binary files a/demo/tanlu-module/build/intermediates/runtime_library_classes/debug/classes.jar and /dev/null differ
diff --git a/demo/tanlu-module/build/intermediates/symbols/debug/R.txt b/demo/tanlu-module/build/intermediates/symbols/debug/R.txt
deleted file mode 100644
index 78d3585d15..0000000000
--- a/demo/tanlu-module/build/intermediates/symbols/debug/R.txt
+++ /dev/null
@@ -1,1968 +0,0 @@
-int anim abc_fade_in 0x7f010001
-int anim abc_fade_out 0x7f010002
-int anim abc_grow_fade_in_from_bottom 0x7f010003
-int anim abc_popup_enter 0x7f010004
-int anim abc_popup_exit 0x7f010005
-int anim abc_shrink_fade_out_from_bottom 0x7f010006
-int anim abc_slide_in_bottom 0x7f010007
-int anim abc_slide_in_top 0x7f010008
-int anim abc_slide_out_bottom 0x7f010009
-int anim abc_slide_out_top 0x7f01000a
-int anim abc_tooltip_enter 0x7f01000b
-int anim abc_tooltip_exit 0x7f01000c
-int attr actionBarDivider 0x7f040001
-int attr actionBarItemBackground 0x7f040002
-int attr actionBarPopupTheme 0x7f040003
-int attr actionBarSize 0x7f040004
-int attr actionBarSplitStyle 0x7f040005
-int attr actionBarStyle 0x7f040006
-int attr actionBarTabBarStyle 0x7f040007
-int attr actionBarTabStyle 0x7f040008
-int attr actionBarTabTextStyle 0x7f040009
-int attr actionBarTheme 0x7f04000a
-int attr actionBarWidgetTheme 0x7f04000b
-int attr actionButtonStyle 0x7f04000c
-int attr actionDropDownStyle 0x7f04000d
-int attr actionLayout 0x7f04000e
-int attr actionMenuTextAppearance 0x7f04000f
-int attr actionMenuTextColor 0x7f040010
-int attr actionModeBackground 0x7f040011
-int attr actionModeCloseButtonStyle 0x7f040012
-int attr actionModeCloseDrawable 0x7f040013
-int attr actionModeCopyDrawable 0x7f040014
-int attr actionModeCutDrawable 0x7f040015
-int attr actionModeFindDrawable 0x7f040016
-int attr actionModePasteDrawable 0x7f040017
-int attr actionModePopupWindowStyle 0x7f040018
-int attr actionModeSelectAllDrawable 0x7f040019
-int attr actionModeShareDrawable 0x7f04001a
-int attr actionModeSplitBackground 0x7f04001b
-int attr actionModeStyle 0x7f04001c
-int attr actionModeWebSearchDrawable 0x7f04001d
-int attr actionOverflowButtonStyle 0x7f04001e
-int attr actionOverflowMenuStyle 0x7f04001f
-int attr actionProviderClass 0x7f040020
-int attr actionViewClass 0x7f040021
-int attr activityChooserViewStyle 0x7f040022
-int attr actualImageScaleType 0x7f040023
-int attr actualImageUri 0x7f040024
-int attr alertDialogButtonGroupStyle 0x7f040025
-int attr alertDialogCenterButtons 0x7f040026
-int attr alertDialogStyle 0x7f040027
-int attr alertDialogTheme 0x7f040028
-int attr allowStacking 0x7f040029
-int attr alpha 0x7f04002a
-int attr alphabeticModifiers 0x7f04002b
-int attr arrowHeadLength 0x7f04002c
-int attr arrowShaftLength 0x7f04002d
-int attr autoCompleteTextViewStyle 0x7f04002e
-int attr autoSizeMaxTextSize 0x7f04002f
-int attr autoSizeMinTextSize 0x7f040030
-int attr autoSizePresetSizes 0x7f040031
-int attr autoSizeStepGranularity 0x7f040032
-int attr autoSizeTextType 0x7f040033
-int attr background 0x7f040034
-int attr backgroundImage 0x7f040035
-int attr backgroundSplit 0x7f040036
-int attr backgroundStacked 0x7f040037
-int attr backgroundTint 0x7f040038
-int attr backgroundTintMode 0x7f040039
-int attr barLength 0x7f04003a
-int attr barrierAllowsGoneWidgets 0x7f04003b
-int attr barrierDirection 0x7f04003c
-int attr borderlessButtonStyle 0x7f04003d
-int attr buttonBarButtonStyle 0x7f04003e
-int attr buttonBarNegativeButtonStyle 0x7f04003f
-int attr buttonBarNeutralButtonStyle 0x7f040040
-int attr buttonBarPositiveButtonStyle 0x7f040041
-int attr buttonBarStyle 0x7f040042
-int attr buttonGravity 0x7f040043
-int attr buttonIconDimen 0x7f040044
-int attr buttonPanelSideLayout 0x7f040045
-int attr buttonStyle 0x7f040046
-int attr buttonStyleSmall 0x7f040047
-int attr buttonTint 0x7f040048
-int attr buttonTintMode 0x7f040049
-int attr chainUseRtl 0x7f04004a
-int attr checkboxStyle 0x7f04004b
-int attr checkedTextViewStyle 0x7f04004c
-int attr closeIcon 0x7f04004d
-int attr closeItemLayout 0x7f04004e
-int attr collapseContentDescription 0x7f04004f
-int attr collapseIcon 0x7f040050
-int attr color 0x7f040051
-int attr colorAccent 0x7f040052
-int attr colorBackgroundFloating 0x7f040053
-int attr colorButtonNormal 0x7f040054
-int attr colorControlActivated 0x7f040055
-int attr colorControlHighlight 0x7f040056
-int attr colorControlNormal 0x7f040057
-int attr colorError 0x7f040058
-int attr colorPrimary 0x7f040059
-int attr colorPrimaryDark 0x7f04005a
-int attr colorSwitchThumbNormal 0x7f04005b
-int attr commitIcon 0x7f04005c
-int attr constraintSet 0x7f04005d
-int attr constraint_referenced_ids 0x7f04005e
-int attr content 0x7f04005f
-int attr contentDescription 0x7f040060
-int attr contentInsetEnd 0x7f040061
-int attr contentInsetEndWithActions 0x7f040062
-int attr contentInsetLeft 0x7f040063
-int attr contentInsetRight 0x7f040064
-int attr contentInsetStart 0x7f040065
-int attr contentInsetStartWithNavigation 0x7f040066
-int attr controlBackground 0x7f040067
-int attr coordinatorLayoutStyle 0x7f040068
-int attr customNavigationLayout 0x7f040069
-int attr defaultQueryHint 0x7f04006a
-int attr dialogCornerRadius 0x7f04006b
-int attr dialogPreferredPadding 0x7f04006c
-int attr dialogTheme 0x7f04006d
-int attr displayOptions 0x7f04006e
-int attr divider 0x7f04006f
-int attr dividerHorizontal 0x7f040070
-int attr dividerPadding 0x7f040071
-int attr dividerVertical 0x7f040072
-int attr drawableSize 0x7f040073
-int attr drawerArrowStyle 0x7f040074
-int attr dropDownListViewStyle 0x7f040075
-int attr dropdownListPreferredItemHeight 0x7f040076
-int attr editTextBackground 0x7f040077
-int attr editTextColor 0x7f040078
-int attr editTextStyle 0x7f040079
-int attr elevation 0x7f04007a
-int attr emptyVisibility 0x7f04007b
-int attr expandActivityOverflowButtonDrawable 0x7f04007c
-int attr fadeDuration 0x7f04007d
-int attr failureImage 0x7f04007e
-int attr failureImageScaleType 0x7f04007f
-int attr firstBaselineToTopHeight 0x7f040080
-int attr font 0x7f040081
-int attr fontFamily 0x7f040082
-int attr fontProviderAuthority 0x7f040083
-int attr fontProviderCerts 0x7f040084
-int attr fontProviderFetchStrategy 0x7f040085
-int attr fontProviderFetchTimeout 0x7f040086
-int attr fontProviderPackage 0x7f040087
-int attr fontProviderQuery 0x7f040088
-int attr fontStyle 0x7f040089
-int attr fontVariationSettings 0x7f04008a
-int attr fontWeight 0x7f04008b
-int attr gapBetweenBars 0x7f04008c
-int attr goIcon 0x7f04008d
-int attr height 0x7f04008e
-int attr hideOnContentScroll 0x7f04008f
-int attr homeAsUpIndicator 0x7f040090
-int attr homeLayout 0x7f040091
-int attr icon 0x7f040092
-int attr iconTint 0x7f040093
-int attr iconTintMode 0x7f040094
-int attr iconifiedByDefault 0x7f040095
-int attr imageButtonStyle 0x7f040096
-int attr indeterminateProgressStyle 0x7f040097
-int attr initialActivityCount 0x7f040098
-int attr isLightTheme 0x7f040099
-int attr itemPadding 0x7f04009a
-int attr keylines 0x7f04009b
-int attr lastBaselineToBottomHeight 0x7f04009c
-int attr layout 0x7f04009d
-int attr layout_anchor 0x7f04009e
-int attr layout_anchorGravity 0x7f04009f
-int attr layout_behavior 0x7f0400a0
-int attr layout_constrainedHeight 0x7f0400a1
-int attr layout_constrainedWidth 0x7f0400a2
-int attr layout_constraintBaseline_creator 0x7f0400a3
-int attr layout_constraintBaseline_toBaselineOf 0x7f0400a4
-int attr layout_constraintBottom_creator 0x7f0400a5
-int attr layout_constraintBottom_toBottomOf 0x7f0400a6
-int attr layout_constraintBottom_toTopOf 0x7f0400a7
-int attr layout_constraintCircle 0x7f0400a8
-int attr layout_constraintCircleAngle 0x7f0400a9
-int attr layout_constraintCircleRadius 0x7f0400aa
-int attr layout_constraintDimensionRatio 0x7f0400ab
-int attr layout_constraintEnd_toEndOf 0x7f0400ac
-int attr layout_constraintEnd_toStartOf 0x7f0400ad
-int attr layout_constraintGuide_begin 0x7f0400ae
-int attr layout_constraintGuide_end 0x7f0400af
-int attr layout_constraintGuide_percent 0x7f0400b0
-int attr layout_constraintHeight_default 0x7f0400b1
-int attr layout_constraintHeight_max 0x7f0400b2
-int attr layout_constraintHeight_min 0x7f0400b3
-int attr layout_constraintHeight_percent 0x7f0400b4
-int attr layout_constraintHorizontal_bias 0x7f0400b5
-int attr layout_constraintHorizontal_chainStyle 0x7f0400b6
-int attr layout_constraintHorizontal_weight 0x7f0400b7
-int attr layout_constraintLeft_creator 0x7f0400b8
-int attr layout_constraintLeft_toLeftOf 0x7f0400b9
-int attr layout_constraintLeft_toRightOf 0x7f0400ba
-int attr layout_constraintRight_creator 0x7f0400bb
-int attr layout_constraintRight_toLeftOf 0x7f0400bc
-int attr layout_constraintRight_toRightOf 0x7f0400bd
-int attr layout_constraintStart_toEndOf 0x7f0400be
-int attr layout_constraintStart_toStartOf 0x7f0400bf
-int attr layout_constraintTop_creator 0x7f0400c0
-int attr layout_constraintTop_toBottomOf 0x7f0400c1
-int attr layout_constraintTop_toTopOf 0x7f0400c2
-int attr layout_constraintVertical_bias 0x7f0400c3
-int attr layout_constraintVertical_chainStyle 0x7f0400c4
-int attr layout_constraintVertical_weight 0x7f0400c5
-int attr layout_constraintWidth_default 0x7f0400c6
-int attr layout_constraintWidth_max 0x7f0400c7
-int attr layout_constraintWidth_min 0x7f0400c8
-int attr layout_constraintWidth_percent 0x7f0400c9
-int attr layout_dodgeInsetEdges 0x7f0400ca
-int attr layout_editor_absoluteX 0x7f0400cb
-int attr layout_editor_absoluteY 0x7f0400cc
-int attr layout_goneMarginBottom 0x7f0400cd
-int attr layout_goneMarginEnd 0x7f0400ce
-int attr layout_goneMarginLeft 0x7f0400cf
-int attr layout_goneMarginRight 0x7f0400d0
-int attr layout_goneMarginStart 0x7f0400d1
-int attr layout_goneMarginTop 0x7f0400d2
-int attr layout_insetEdge 0x7f0400d3
-int attr layout_keyline 0x7f0400d4
-int attr layout_optimizationLevel 0x7f0400d5
-int attr lineHeight 0x7f0400d6
-int attr listChoiceBackgroundIndicator 0x7f0400d7
-int attr listDividerAlertDialog 0x7f0400d8
-int attr listItemLayout 0x7f0400d9
-int attr listLayout 0x7f0400da
-int attr listMenuViewStyle 0x7f0400db
-int attr listPopupWindowStyle 0x7f0400dc
-int attr listPreferredItemHeight 0x7f0400dd
-int attr listPreferredItemHeightLarge 0x7f0400de
-int attr listPreferredItemHeightSmall 0x7f0400df
-int attr listPreferredItemPaddingLeft 0x7f0400e0
-int attr listPreferredItemPaddingRight 0x7f0400e1
-int attr logo 0x7f0400e2
-int attr logoDescription 0x7f0400e3
-int attr maxButtonHeight 0x7f0400e4
-int attr measureWithLargestChild 0x7f0400e5
-int attr miv_blurRadius 0x7f0400e6
-int attr miv_borderColor 0x7f0400e7
-int attr miv_bottomLeftRadius 0x7f0400e8
-int attr miv_bottomRightRadius 0x7f0400e9
-int attr miv_failureHolder 0x7f0400ea
-int attr miv_isBlur 0x7f0400eb
-int attr miv_overlayImageId 0x7f0400ec
-int attr miv_placeHolder 0x7f0400ed
-int attr miv_radius 0x7f0400ee
-int attr miv_shape 0x7f0400ef
-int attr miv_shapeBorderWidth 0x7f0400f0
-int attr miv_topLeftRadius 0x7f0400f1
-int attr miv_topRightRadius 0x7f0400f2
-int attr multiChoiceItemLayout 0x7f0400f3
-int attr navigationContentDescription 0x7f0400f4
-int attr navigationIcon 0x7f0400f5
-int attr navigationMode 0x7f0400f6
-int attr numericModifiers 0x7f0400f7
-int attr overlapAnchor 0x7f0400f8
-int attr overlayImage 0x7f0400f9
-int attr paddingBottomNoButtons 0x7f0400fa
-int attr paddingEnd 0x7f0400fb
-int attr paddingStart 0x7f0400fc
-int attr paddingTopNoTitle 0x7f0400fd
-int attr panelBackground 0x7f0400fe
-int attr panelMenuListTheme 0x7f0400ff
-int attr panelMenuListWidth 0x7f040100
-int attr placeholderImage 0x7f040101
-int attr placeholderImageScaleType 0x7f040102
-int attr popupMenuStyle 0x7f040103
-int attr popupTheme 0x7f040104
-int attr popupWindowStyle 0x7f040105
-int attr preserveIconSpacing 0x7f040106
-int attr pressedStateOverlayImage 0x7f040107
-int attr progressBarAutoRotateInterval 0x7f040108
-int attr progressBarImage 0x7f040109
-int attr progressBarImageScaleType 0x7f04010a
-int attr progressBarPadding 0x7f04010b
-int attr progressBarStyle 0x7f04010c
-int attr queryBackground 0x7f04010d
-int attr queryHint 0x7f04010e
-int attr radioButtonStyle 0x7f04010f
-int attr ratingBarStyle 0x7f040110
-int attr ratingBarStyleIndicator 0x7f040111
-int attr ratingBarStyleSmall 0x7f040112
-int attr retryImage 0x7f040113
-int attr retryImageScaleType 0x7f040114
-int attr roundAsCircle 0x7f040115
-int attr roundBottomLeft 0x7f040116
-int attr roundBottomRight 0x7f040117
-int attr roundTopLeft 0x7f040118
-int attr roundTopRight 0x7f040119
-int attr roundWithOverlayColor 0x7f04011a
-int attr roundedCornerRadius 0x7f04011b
-int attr roundingBorderColor 0x7f04011c
-int attr roundingBorderPadding 0x7f04011d
-int attr roundingBorderWidth 0x7f04011e
-int attr searchHintIcon 0x7f04011f
-int attr searchIcon 0x7f040120
-int attr searchViewStyle 0x7f040121
-int attr seekBarStyle 0x7f040122
-int attr selectableItemBackground 0x7f040123
-int attr selectableItemBackgroundBorderless 0x7f040124
-int attr showAsAction 0x7f040125
-int attr showDividers 0x7f040126
-int attr showText 0x7f040127
-int attr showTitle 0x7f040128
-int attr singleChoiceItemLayout 0x7f040129
-int attr spinBars 0x7f04012a
-int attr spinnerDropDownItemStyle 0x7f04012b
-int attr spinnerStyle 0x7f04012c
-int attr splitTrack 0x7f04012d
-int attr srcCompat 0x7f04012e
-int attr state_above_anchor 0x7f04012f
-int attr statusBarBackground 0x7f040130
-int attr subMenuArrow 0x7f040131
-int attr submitBackground 0x7f040132
-int attr subtitle 0x7f040133
-int attr subtitleTextAppearance 0x7f040134
-int attr subtitleTextColor 0x7f040135
-int attr subtitleTextStyle 0x7f040136
-int attr suggestionRowLayout 0x7f040137
-int attr switchMinWidth 0x7f040138
-int attr switchPadding 0x7f040139
-int attr switchStyle 0x7f04013a
-int attr switchTextAppearance 0x7f04013b
-int attr textAllCaps 0x7f04013c
-int attr textAppearanceLargePopupMenu 0x7f04013d
-int attr textAppearanceListItem 0x7f04013e
-int attr textAppearanceListItemSecondary 0x7f04013f
-int attr textAppearanceListItemSmall 0x7f040140
-int attr textAppearancePopupMenuHeader 0x7f040141
-int attr textAppearanceSearchResultSubtitle 0x7f040142
-int attr textAppearanceSearchResultTitle 0x7f040143
-int attr textAppearanceSmallPopupMenu 0x7f040144
-int attr textColorAlertDialogListItem 0x7f040145
-int attr textColorSearchUrl 0x7f040146
-int attr theme 0x7f040147
-int attr thickness 0x7f040148
-int attr thumbTextPadding 0x7f040149
-int attr thumbTint 0x7f04014a
-int attr thumbTintMode 0x7f04014b
-int attr tickMark 0x7f04014c
-int attr tickMarkTint 0x7f04014d
-int attr tickMarkTintMode 0x7f04014e
-int attr tint 0x7f04014f
-int attr tintMode 0x7f040150
-int attr title 0x7f040151
-int attr titleMargin 0x7f040152
-int attr titleMarginBottom 0x7f040153
-int attr titleMarginEnd 0x7f040154
-int attr titleMarginStart 0x7f040155
-int attr titleMarginTop 0x7f040156
-int attr titleMargins 0x7f040157
-int attr titleTextAppearance 0x7f040158
-int attr titleTextColor 0x7f040159
-int attr titleTextStyle 0x7f04015a
-int attr toolbarNavigationButtonStyle 0x7f04015b
-int attr toolbarStyle 0x7f04015c
-int attr tooltipForegroundColor 0x7f04015d
-int attr tooltipFrameBackground 0x7f04015e
-int attr tooltipText 0x7f04015f
-int attr track 0x7f040160
-int attr trackTint 0x7f040161
-int attr trackTintMode 0x7f040162
-int attr ttcIndex 0x7f040163
-int attr viewAspectRatio 0x7f040164
-int attr viewInflaterClass 0x7f040165
-int attr voiceIcon 0x7f040166
-int attr windowActionBar 0x7f040167
-int attr windowActionBarOverlay 0x7f040168
-int attr windowActionModeOverlay 0x7f040169
-int attr windowFixedHeightMajor 0x7f04016a
-int attr windowFixedHeightMinor 0x7f04016b
-int attr windowFixedWidthMajor 0x7f04016c
-int attr windowFixedWidthMinor 0x7f04016d
-int attr windowMinWidthMajor 0x7f04016e
-int attr windowMinWidthMinor 0x7f04016f
-int attr windowNoTitle 0x7f040170
-int bool abc_action_bar_embed_tabs 0x7f050001
-int bool abc_allow_stacked_button_bar 0x7f050002
-int bool abc_config_actionMenuItemAllCaps 0x7f050003
-int bool abc_config_showMenuShortcutsWhenKeyboardPresent 0x7f050004
-int color abc_background_cache_hint_selector_material_dark 0x7f060001
-int color abc_background_cache_hint_selector_material_light 0x7f060002
-int color abc_btn_colored_borderless_text_material 0x7f060003
-int color abc_btn_colored_text_material 0x7f060004
-int color abc_color_highlight_material 0x7f060005
-int color abc_hint_foreground_material_dark 0x7f060006
-int color abc_hint_foreground_material_light 0x7f060007
-int color abc_input_method_navigation_guard 0x7f060008
-int color abc_primary_text_disable_only_material_dark 0x7f060009
-int color abc_primary_text_disable_only_material_light 0x7f06000a
-int color abc_primary_text_material_dark 0x7f06000b
-int color abc_primary_text_material_light 0x7f06000c
-int color abc_search_url_text 0x7f06000d
-int color abc_search_url_text_normal 0x7f06000e
-int color abc_search_url_text_pressed 0x7f06000f
-int color abc_search_url_text_selected 0x7f060010
-int color abc_secondary_text_material_dark 0x7f060011
-int color abc_secondary_text_material_light 0x7f060012
-int color abc_tint_btn_checkable 0x7f060013
-int color abc_tint_default 0x7f060014
-int color abc_tint_edittext 0x7f060015
-int color abc_tint_seek_thumb 0x7f060016
-int color abc_tint_spinner 0x7f060017
-int color abc_tint_switch_track 0x7f060018
-int color accent_material_dark 0x7f060019
-int color accent_material_light 0x7f06001a
-int color background_floating_material_dark 0x7f06001b
-int color background_floating_material_light 0x7f06001c
-int color background_material_dark 0x7f06001d
-int color background_material_light 0x7f06001e
-int color bright_foreground_disabled_material_dark 0x7f06001f
-int color bright_foreground_disabled_material_light 0x7f060020
-int color bright_foreground_inverse_material_dark 0x7f060021
-int color bright_foreground_inverse_material_light 0x7f060022
-int color bright_foreground_material_dark 0x7f060023
-int color bright_foreground_material_light 0x7f060024
-int color button_material_dark 0x7f060025
-int color button_material_light 0x7f060026
-int color colorAccent 0x7f060027
-int color colorPrimary 0x7f060028
-int color colorPrimaryDark 0x7f060029
-int color color_171F7FFF 0x7f06002a
-int color color_1E212C 0x7f06002b
-int color color_1F7FFF 0x7f06002c
-int color color_222533 0x7f06002d
-int color color_4B5369 0x7f06002e
-int color color_4d191C25 0x7f06002f
-int color color_99191C25 0x7f060030
-int color color_9A9A9A 0x7f060031
-int color color_A2A2A2 0x7f060032
-int color dim_foreground_disabled_material_dark 0x7f060033
-int color dim_foreground_disabled_material_light 0x7f060034
-int color dim_foreground_material_dark 0x7f060035
-int color dim_foreground_material_light 0x7f060036
-int color error_color_material 0x7f060037
-int color error_color_material_dark 0x7f060038
-int color error_color_material_light 0x7f060039
-int color foreground_material_dark 0x7f06003a
-int color foreground_material_light 0x7f06003b
-int color highlighted_text_material_dark 0x7f06003c
-int color highlighted_text_material_light 0x7f06003d
-int color material_blue_grey_800 0x7f06003e
-int color material_blue_grey_900 0x7f06003f
-int color material_blue_grey_950 0x7f060040
-int color material_deep_teal_200 0x7f060041
-int color material_deep_teal_500 0x7f060042
-int color material_grey_100 0x7f060043
-int color material_grey_300 0x7f060044
-int color material_grey_50 0x7f060045
-int color material_grey_600 0x7f060046
-int color material_grey_800 0x7f060047
-int color material_grey_850 0x7f060048
-int color material_grey_900 0x7f060049
-int color notification_action_color_filter 0x7f06004a
-int color notification_icon_bg_color 0x7f06004b
-int color notification_material_background_media_default_color 0x7f06004c
-int color primary_dark_material_dark 0x7f06004d
-int color primary_dark_material_light 0x7f06004e
-int color primary_material_dark 0x7f06004f
-int color primary_material_light 0x7f060050
-int color primary_text_default_material_dark 0x7f060051
-int color primary_text_default_material_light 0x7f060052
-int color primary_text_disabled_material_dark 0x7f060053
-int color primary_text_disabled_material_light 0x7f060054
-int color ripple_material_dark 0x7f060055
-int color ripple_material_light 0x7f060056
-int color secondary_text_default_material_dark 0x7f060057
-int color secondary_text_default_material_light 0x7f060058
-int color secondary_text_disabled_material_dark 0x7f060059
-int color secondary_text_disabled_material_light 0x7f06005a
-int color switch_thumb_disabled_material_dark 0x7f06005b
-int color switch_thumb_disabled_material_light 0x7f06005c
-int color switch_thumb_material_dark 0x7f06005d
-int color switch_thumb_material_light 0x7f06005e
-int color switch_thumb_normal_material_dark 0x7f06005f
-int color switch_thumb_normal_material_light 0x7f060060
-int color tooltip_background_dark 0x7f060061
-int color tooltip_background_light 0x7f060062
-int color white 0x7f060063
-int color white_50 0x7f060064
-int dimen abc_action_bar_content_inset_material 0x7f070001
-int dimen abc_action_bar_content_inset_with_nav 0x7f070002
-int dimen abc_action_bar_default_height_material 0x7f070003
-int dimen abc_action_bar_default_padding_end_material 0x7f070004
-int dimen abc_action_bar_default_padding_start_material 0x7f070005
-int dimen abc_action_bar_elevation_material 0x7f070006
-int dimen abc_action_bar_icon_vertical_padding_material 0x7f070007
-int dimen abc_action_bar_overflow_padding_end_material 0x7f070008
-int dimen abc_action_bar_overflow_padding_start_material 0x7f070009
-int dimen abc_action_bar_progress_bar_size 0x7f07000a
-int dimen abc_action_bar_stacked_max_height 0x7f07000b
-int dimen abc_action_bar_stacked_tab_max_width 0x7f07000c
-int dimen abc_action_bar_subtitle_bottom_margin_material 0x7f07000d
-int dimen abc_action_bar_subtitle_top_margin_material 0x7f07000e
-int dimen abc_action_button_min_height_material 0x7f07000f
-int dimen abc_action_button_min_width_material 0x7f070010
-int dimen abc_action_button_min_width_overflow_material 0x7f070011
-int dimen abc_alert_dialog_button_bar_height 0x7f070012
-int dimen abc_alert_dialog_button_dimen 0x7f070013
-int dimen abc_button_inset_horizontal_material 0x7f070014
-int dimen abc_button_inset_vertical_material 0x7f070015
-int dimen abc_button_padding_horizontal_material 0x7f070016
-int dimen abc_button_padding_vertical_material 0x7f070017
-int dimen abc_cascading_menus_min_smallest_width 0x7f070018
-int dimen abc_config_prefDialogWidth 0x7f070019
-int dimen abc_control_corner_material 0x7f07001a
-int dimen abc_control_inset_material 0x7f07001b
-int dimen abc_control_padding_material 0x7f07001c
-int dimen abc_dialog_corner_radius_material 0x7f07001d
-int dimen abc_dialog_fixed_height_major 0x7f07001e
-int dimen abc_dialog_fixed_height_minor 0x7f07001f
-int dimen abc_dialog_fixed_width_major 0x7f070020
-int dimen abc_dialog_fixed_width_minor 0x7f070021
-int dimen abc_dialog_list_padding_bottom_no_buttons 0x7f070022
-int dimen abc_dialog_list_padding_top_no_title 0x7f070023
-int dimen abc_dialog_min_width_major 0x7f070024
-int dimen abc_dialog_min_width_minor 0x7f070025
-int dimen abc_dialog_padding_material 0x7f070026
-int dimen abc_dialog_padding_top_material 0x7f070027
-int dimen abc_dialog_title_divider_material 0x7f070028
-int dimen abc_disabled_alpha_material_dark 0x7f070029
-int dimen abc_disabled_alpha_material_light 0x7f07002a
-int dimen abc_dropdownitem_icon_width 0x7f07002b
-int dimen abc_dropdownitem_text_padding_left 0x7f07002c
-int dimen abc_dropdownitem_text_padding_right 0x7f07002d
-int dimen abc_edit_text_inset_bottom_material 0x7f07002e
-int dimen abc_edit_text_inset_horizontal_material 0x7f07002f
-int dimen abc_edit_text_inset_top_material 0x7f070030
-int dimen abc_floating_window_z 0x7f070031
-int dimen abc_list_item_padding_horizontal_material 0x7f070032
-int dimen abc_panel_menu_list_width 0x7f070033
-int dimen abc_progress_bar_height_material 0x7f070034
-int dimen abc_search_view_preferred_height 0x7f070035
-int dimen abc_search_view_preferred_width 0x7f070036
-int dimen abc_seekbar_track_background_height_material 0x7f070037
-int dimen abc_seekbar_track_progress_height_material 0x7f070038
-int dimen abc_select_dialog_padding_start_material 0x7f070039
-int dimen abc_switch_padding 0x7f07003a
-int dimen abc_text_size_body_1_material 0x7f07003b
-int dimen abc_text_size_body_2_material 0x7f07003c
-int dimen abc_text_size_button_material 0x7f07003d
-int dimen abc_text_size_caption_material 0x7f07003e
-int dimen abc_text_size_display_1_material 0x7f07003f
-int dimen abc_text_size_display_2_material 0x7f070040
-int dimen abc_text_size_display_3_material 0x7f070041
-int dimen abc_text_size_display_4_material 0x7f070042
-int dimen abc_text_size_headline_material 0x7f070043
-int dimen abc_text_size_large_material 0x7f070044
-int dimen abc_text_size_medium_material 0x7f070045
-int dimen abc_text_size_menu_header_material 0x7f070046
-int dimen abc_text_size_menu_material 0x7f070047
-int dimen abc_text_size_small_material 0x7f070048
-int dimen abc_text_size_subhead_material 0x7f070049
-int dimen abc_text_size_subtitle_material_toolbar 0x7f07004a
-int dimen abc_text_size_title_material 0x7f07004b
-int dimen abc_text_size_title_material_toolbar 0x7f07004c
-int dimen compat_button_inset_horizontal_material 0x7f07004d
-int dimen compat_button_inset_vertical_material 0x7f07004e
-int dimen compat_button_padding_horizontal_material 0x7f07004f
-int dimen compat_button_padding_vertical_material 0x7f070050
-int dimen compat_control_corner_material 0x7f070051
-int dimen compat_notification_large_icon_max_height 0x7f070052
-int dimen compat_notification_large_icon_max_width 0x7f070053
-int dimen disabled_alpha_material_dark 0x7f070054
-int dimen disabled_alpha_material_light 0x7f070055
-int dimen highlight_alpha_material_colored 0x7f070056
-int dimen highlight_alpha_material_dark 0x7f070057
-int dimen highlight_alpha_material_light 0x7f070058
-int dimen hint_alpha_material_dark 0x7f070059
-int dimen hint_alpha_material_light 0x7f07005a
-int dimen hint_pressed_alpha_material_dark 0x7f07005b
-int dimen hint_pressed_alpha_material_light 0x7f07005c
-int dimen notification_action_icon_size 0x7f07005d
-int dimen notification_action_text_size 0x7f07005e
-int dimen notification_big_circle_margin 0x7f07005f
-int dimen notification_content_margin_start 0x7f070060
-int dimen notification_large_icon_height 0x7f070061
-int dimen notification_large_icon_width 0x7f070062
-int dimen notification_main_column_padding_top 0x7f070063
-int dimen notification_media_narrow_margin 0x7f070064
-int dimen notification_right_icon_size 0x7f070065
-int dimen notification_right_side_padding_top 0x7f070066
-int dimen notification_small_icon_background_padding 0x7f070067
-int dimen notification_small_icon_size_as_large 0x7f070068
-int dimen notification_subtext_size 0x7f070069
-int dimen notification_top_pad 0x7f07006a
-int dimen notification_top_pad_large_text 0x7f07006b
-int dimen subtitle_corner_radius 0x7f07006c
-int dimen subtitle_outline_width 0x7f07006d
-int dimen subtitle_shadow_offset 0x7f07006e
-int dimen subtitle_shadow_radius 0x7f07006f
-int dimen tooltip_corner_radius 0x7f070070
-int dimen tooltip_horizontal_padding 0x7f070071
-int dimen tooltip_margin 0x7f070072
-int dimen tooltip_precise_anchor_extra_offset 0x7f070073
-int dimen tooltip_precise_anchor_threshold 0x7f070074
-int dimen tooltip_vertical_padding 0x7f070075
-int dimen tooltip_y_offset_non_touch 0x7f070076
-int dimen tooltip_y_offset_touch 0x7f070077
-int drawable abc_ab_share_pack_mtrl_alpha 0x7f080001
-int drawable abc_action_bar_item_background_material 0x7f080002
-int drawable abc_btn_borderless_material 0x7f080003
-int drawable abc_btn_check_material 0x7f080004
-int drawable abc_btn_check_to_on_mtrl_000 0x7f080005
-int drawable abc_btn_check_to_on_mtrl_015 0x7f080006
-int drawable abc_btn_colored_material 0x7f080007
-int drawable abc_btn_default_mtrl_shape 0x7f080008
-int drawable abc_btn_radio_material 0x7f080009
-int drawable abc_btn_radio_to_on_mtrl_000 0x7f08000a
-int drawable abc_btn_radio_to_on_mtrl_015 0x7f08000b
-int drawable abc_btn_switch_to_on_mtrl_00001 0x7f08000c
-int drawable abc_btn_switch_to_on_mtrl_00012 0x7f08000d
-int drawable abc_cab_background_internal_bg 0x7f08000e
-int drawable abc_cab_background_top_material 0x7f08000f
-int drawable abc_cab_background_top_mtrl_alpha 0x7f080010
-int drawable abc_control_background_material 0x7f080011
-int drawable abc_dialog_material_background 0x7f080012
-int drawable abc_edit_text_material 0x7f080013
-int drawable abc_ic_ab_back_material 0x7f080014
-int drawable abc_ic_arrow_drop_right_black_24dp 0x7f080015
-int drawable abc_ic_clear_material 0x7f080016
-int drawable abc_ic_commit_search_api_mtrl_alpha 0x7f080017
-int drawable abc_ic_go_search_api_material 0x7f080018
-int drawable abc_ic_menu_copy_mtrl_am_alpha 0x7f080019
-int drawable abc_ic_menu_cut_mtrl_alpha 0x7f08001a
-int drawable abc_ic_menu_overflow_material 0x7f08001b
-int drawable abc_ic_menu_paste_mtrl_am_alpha 0x7f08001c
-int drawable abc_ic_menu_selectall_mtrl_alpha 0x7f08001d
-int drawable abc_ic_menu_share_mtrl_alpha 0x7f08001e
-int drawable abc_ic_search_api_material 0x7f08001f
-int drawable abc_ic_star_black_16dp 0x7f080020
-int drawable abc_ic_star_black_36dp 0x7f080021
-int drawable abc_ic_star_black_48dp 0x7f080022
-int drawable abc_ic_star_half_black_16dp 0x7f080023
-int drawable abc_ic_star_half_black_36dp 0x7f080024
-int drawable abc_ic_star_half_black_48dp 0x7f080025
-int drawable abc_ic_voice_search_api_material 0x7f080026
-int drawable abc_item_background_holo_dark 0x7f080027
-int drawable abc_item_background_holo_light 0x7f080028
-int drawable abc_list_divider_material 0x7f080029
-int drawable abc_list_divider_mtrl_alpha 0x7f08002a
-int drawable abc_list_focused_holo 0x7f08002b
-int drawable abc_list_longpressed_holo 0x7f08002c
-int drawable abc_list_pressed_holo_dark 0x7f08002d
-int drawable abc_list_pressed_holo_light 0x7f08002e
-int drawable abc_list_selector_background_transition_holo_dark 0x7f08002f
-int drawable abc_list_selector_background_transition_holo_light 0x7f080030
-int drawable abc_list_selector_disabled_holo_dark 0x7f080031
-int drawable abc_list_selector_disabled_holo_light 0x7f080032
-int drawable abc_list_selector_holo_dark 0x7f080033
-int drawable abc_list_selector_holo_light 0x7f080034
-int drawable abc_menu_hardkey_panel_mtrl_mult 0x7f080035
-int drawable abc_popup_background_mtrl_mult 0x7f080036
-int drawable abc_ratingbar_indicator_material 0x7f080037
-int drawable abc_ratingbar_material 0x7f080038
-int drawable abc_ratingbar_small_material 0x7f080039
-int drawable abc_scrubber_control_off_mtrl_alpha 0x7f08003a
-int drawable abc_scrubber_control_to_pressed_mtrl_000 0x7f08003b
-int drawable abc_scrubber_control_to_pressed_mtrl_005 0x7f08003c
-int drawable abc_scrubber_primary_mtrl_alpha 0x7f08003d
-int drawable abc_scrubber_track_mtrl_alpha 0x7f08003e
-int drawable abc_seekbar_thumb_material 0x7f08003f
-int drawable abc_seekbar_tick_mark_material 0x7f080040
-int drawable abc_seekbar_track_material 0x7f080041
-int drawable abc_spinner_mtrl_am_alpha 0x7f080042
-int drawable abc_spinner_textfield_background_material 0x7f080043
-int drawable abc_switch_thumb_material 0x7f080044
-int drawable abc_switch_track_mtrl_alpha 0x7f080045
-int drawable abc_tab_indicator_material 0x7f080046
-int drawable abc_tab_indicator_mtrl_alpha 0x7f080047
-int drawable abc_text_cursor_material 0x7f080048
-int drawable abc_text_select_handle_left_mtrl_dark 0x7f080049
-int drawable abc_text_select_handle_left_mtrl_light 0x7f08004a
-int drawable abc_text_select_handle_middle_mtrl_dark 0x7f08004b
-int drawable abc_text_select_handle_middle_mtrl_light 0x7f08004c
-int drawable abc_text_select_handle_right_mtrl_dark 0x7f08004d
-int drawable abc_text_select_handle_right_mtrl_light 0x7f08004e
-int drawable abc_textfield_activated_mtrl_alpha 0x7f08004f
-int drawable abc_textfield_default_mtrl_alpha 0x7f080050
-int drawable abc_textfield_search_activated_mtrl_alpha 0x7f080051
-int drawable abc_textfield_search_default_mtrl_alpha 0x7f080052
-int drawable abc_textfield_search_material 0x7f080053
-int drawable abc_vector_test 0x7f080054
-int drawable ic_amap_app_main_current_location_bkg 0x7f080055
-int drawable ic_amap_app_main_exit_navi_bkg 0x7f080056
-int drawable ic_amap_app_main_search_bar_bkg 0x7f080057
-int drawable ic_amap_navi_cursor 0x7f080058
-int drawable ic_back 0x7f080059
-int drawable ic_back_dark 0x7f08005a
-int drawable ic_current_location 0x7f08005b
-int drawable ic_current_location_cursor 0x7f08005c
-int drawable ic_delete 0x7f08005d
-int drawable ic_main_setting 0x7f08005e
-int drawable ic_mini_current_position_cursor 0x7f08005f
-int drawable ic_navi_info_bkg 0x7f080060
-int drawable ic_search 0x7f080061
-int drawable ic_search_choice_point 0x7f080062
-int drawable ic_search_company 0x7f080063
-int drawable ic_search_home 0x7f080064
-int drawable ic_search_poi_location 0x7f080065
-int drawable ic_search_unshadow 0x7f080066
-int drawable notification_action_background 0x7f080067
-int drawable notification_bg 0x7f080068
-int drawable notification_bg_low 0x7f080069
-int drawable notification_bg_low_normal 0x7f08006a
-int drawable notification_bg_low_pressed 0x7f08006b
-int drawable notification_bg_normal 0x7f08006c
-int drawable notification_bg_normal_pressed 0x7f08006d
-int drawable notification_icon_background 0x7f08006e
-int drawable notification_template_icon_bg 0x7f08006f
-int drawable notification_template_icon_low_bg 0x7f080070
-int drawable notification_tile_bg 0x7f080071
-int drawable notify_panel_notification_icon_bg 0x7f080072
-int drawable tooltip_frame_dark 0x7f080073
-int drawable tooltip_frame_light 0x7f080074
-int id action0 0x7f0b0001
-int id action_bar 0x7f0b0002
-int id action_bar_activity_content 0x7f0b0003
-int id action_bar_container 0x7f0b0004
-int id action_bar_root 0x7f0b0005
-int id action_bar_spinner 0x7f0b0006
-int id action_bar_subtitle 0x7f0b0007
-int id action_bar_title 0x7f0b0008
-int id action_container 0x7f0b0009
-int id action_context_bar 0x7f0b000a
-int id action_divider 0x7f0b000b
-int id action_image 0x7f0b000c
-int id action_menu_divider 0x7f0b000d
-int id action_menu_presenter 0x7f0b000e
-int id action_mode_bar 0x7f0b000f
-int id action_mode_bar_stub 0x7f0b0010
-int id action_mode_close_button 0x7f0b0011
-int id action_text 0x7f0b0012
-int id actions 0x7f0b0013
-int id activity_chooser_view_content 0x7f0b0014
-int id add 0x7f0b0015
-int id alertTitle 0x7f0b0016
-int id async 0x7f0b0017
-int id blocking 0x7f0b0018
-int id bottom 0x7f0b0019
-int id buttonPanel 0x7f0b001a
-int id cancel_action 0x7f0b001b
-int id center 0x7f0b001c
-int id centerCrop 0x7f0b001d
-int id centerInside 0x7f0b001e
-int id checkbox 0x7f0b001f
-int id chronometer 0x7f0b0020
-int id circle 0x7f0b0021
-int id content 0x7f0b0022
-int id contentPanel 0x7f0b0023
-int id custom 0x7f0b0024
-int id customPanel 0x7f0b0025
-int id decor_content_parent 0x7f0b0026
-int id default_activity_button 0x7f0b0027
-int id demo_module_id_2d3d 0x7f0b0028
-int id demo_module_id_add_marker 0x7f0b0029
-int id demo_module_id_add_markers 0x7f0b002a
-int id demo_module_id_clear 0x7f0b002b
-int id demo_module_id_current 0x7f0b002c
-int id demo_module_id_day_light 0x7f0b002d
-int id demo_module_id_day_night 0x7f0b002e
-int id demo_module_id_display_overlay 0x7f0b002f
-int id demo_module_id_iw_navi_stop 0x7f0b0030
-int id demo_module_id_iw_navito 0x7f0b0031
-int id demo_module_id_iw_poi_navito 0x7f0b0032
-int id demo_module_id_iw_poi_title 0x7f0b0033
-int id demo_module_id_iw_refresh 0x7f0b0034
-int id demo_module_id_iw_time 0x7f0b0035
-int id demo_module_id_loc 0x7f0b0036
-int id demo_module_id_loc_info 0x7f0b0037
-int id demo_module_id_navi_mode 0x7f0b0038
-int id demo_module_id_reverse_lock 0x7f0b0039
-int id demo_module_id_start_navi 0x7f0b003a
-int id demo_module_id_stop_navi 0x7f0b003b
-int id demo_module_id_traffic 0x7f0b003c
-int id demo_module_id_zoom_in 0x7f0b003d
-int id demo_module_id_zoom_out 0x7f0b003e
-int id edit_query 0x7f0b003f
-int id end 0x7f0b0040
-int id end_padder 0x7f0b0041
-int id expand_activities_button 0x7f0b0042
-int id expanded_menu 0x7f0b0043
-int id fitCenter 0x7f0b0044
-int id fitEnd 0x7f0b0045
-int id fitStart 0x7f0b0046
-int id fitXY 0x7f0b0047
-int id focusCrop 0x7f0b0048
-int id forever 0x7f0b0049
-int id glide_custom_view_target_tag 0x7f0b004a
-int id gone 0x7f0b004b
-int id group_divider 0x7f0b004c
-int id home 0x7f0b004d
-int id icon 0x7f0b004e
-int id icon_group 0x7f0b004f
-int id image 0x7f0b0050
-int id info 0x7f0b0051
-int id invisible 0x7f0b0052
-int id italic 0x7f0b0053
-int id left 0x7f0b0054
-int id line1 0x7f0b0055
-int id line3 0x7f0b0056
-int id listMode 0x7f0b0057
-int id list_item 0x7f0b0058
-int id media_actions 0x7f0b0059
-int id message 0x7f0b005a
-int id multiply 0x7f0b005b
-int id none 0x7f0b005c
-int id normal 0x7f0b005d
-int id notification_background 0x7f0b005e
-int id notification_main_column 0x7f0b005f
-int id notification_main_column_container 0x7f0b0060
-int id packed 0x7f0b0061
-int id parent 0x7f0b0062
-int id parentPanel 0x7f0b0063
-int id percent 0x7f0b0064
-int id progress_circular 0x7f0b0065
-int id progress_horizontal 0x7f0b0066
-int id radio 0x7f0b0067
-int id right 0x7f0b0068
-int id right_icon 0x7f0b0069
-int id right_side 0x7f0b006a
-int id round 0x7f0b006b
-int id screen 0x7f0b006c
-int id scrollIndicatorDown 0x7f0b006d
-int id scrollIndicatorUp 0x7f0b006e
-int id scrollView 0x7f0b006f
-int id search_badge 0x7f0b0070
-int id search_bar 0x7f0b0071
-int id search_button 0x7f0b0072
-int id search_close_btn 0x7f0b0073
-int id search_edit_frame 0x7f0b0074
-int id search_go_btn 0x7f0b0075
-int id search_mag_icon 0x7f0b0076
-int id search_plate 0x7f0b0077
-int id search_src_text 0x7f0b0078
-int id search_voice_btn 0x7f0b0079
-int id select_dialog_listview 0x7f0b007a
-int id shortcut 0x7f0b007b
-int id spacer 0x7f0b007c
-int id split_action_bar 0x7f0b007d
-int id spread 0x7f0b007e
-int id spread_inside 0x7f0b007f
-int id src_atop 0x7f0b0080
-int id src_in 0x7f0b0081
-int id src_over 0x7f0b0082
-int id start 0x7f0b0083
-int id status_bar_latest_event_content 0x7f0b0084
-int id submenuarrow 0x7f0b0085
-int id submit_area 0x7f0b0086
-int id tabMode 0x7f0b0087
-int id tag_transition_group 0x7f0b0088
-int id tag_unhandled_key_event_manager 0x7f0b0089
-int id tag_unhandled_key_listeners 0x7f0b008a
-int id text 0x7f0b008b
-int id text2 0x7f0b008c
-int id textSpacerNoButtons 0x7f0b008d
-int id textSpacerNoTitle 0x7f0b008e
-int id time 0x7f0b008f
-int id title 0x7f0b0090
-int id titleDividerNoCustom 0x7f0b0091
-int id title_template 0x7f0b0092
-int id top 0x7f0b0093
-int id topPanel 0x7f0b0094
-int id uniform 0x7f0b0095
-int id up 0x7f0b0096
-int id wrap 0x7f0b0097
-int id wrap_content 0x7f0b0098
-int integer abc_config_activityDefaultDur 0x7f0c0001
-int integer abc_config_activityShortDur 0x7f0c0002
-int integer cancel_button_image_alpha 0x7f0c0003
-int integer config_tooltipAnimTime 0x7f0c0004
-int integer status_bar_notification_info_maxnum 0x7f0c0005
-int layout abc_action_bar_title_item 0x7f0e0001
-int layout abc_action_bar_up_container 0x7f0e0002
-int layout abc_action_menu_item_layout 0x7f0e0003
-int layout abc_action_menu_layout 0x7f0e0004
-int layout abc_action_mode_bar 0x7f0e0005
-int layout abc_action_mode_close_item_material 0x7f0e0006
-int layout abc_activity_chooser_view 0x7f0e0007
-int layout abc_activity_chooser_view_list_item 0x7f0e0008
-int layout abc_alert_dialog_button_bar_material 0x7f0e0009
-int layout abc_alert_dialog_material 0x7f0e000a
-int layout abc_alert_dialog_title_material 0x7f0e000b
-int layout abc_cascading_menu_item_layout 0x7f0e000c
-int layout abc_dialog_title_material 0x7f0e000d
-int layout abc_expanded_menu_layout 0x7f0e000e
-int layout abc_list_menu_item_checkbox 0x7f0e000f
-int layout abc_list_menu_item_icon 0x7f0e0010
-int layout abc_list_menu_item_layout 0x7f0e0011
-int layout abc_list_menu_item_radio 0x7f0e0012
-int layout abc_popup_menu_header_item_layout 0x7f0e0013
-int layout abc_popup_menu_item_layout 0x7f0e0014
-int layout abc_screen_content_include 0x7f0e0015
-int layout abc_screen_simple 0x7f0e0016
-int layout abc_screen_simple_overlay_action_mode 0x7f0e0017
-int layout abc_screen_toolbar 0x7f0e0018
-int layout abc_search_dropdown_item_icons_2line 0x7f0e0019
-int layout abc_search_view 0x7f0e001a
-int layout abc_select_dialog_material 0x7f0e001b
-int layout abc_tooltip 0x7f0e001c
-int layout notification_action 0x7f0e001d
-int layout notification_action_tombstone 0x7f0e001e
-int layout notification_media_action 0x7f0e001f
-int layout notification_media_cancel_action 0x7f0e0020
-int layout notification_template_big_media 0x7f0e0021
-int layout notification_template_big_media_custom 0x7f0e0022
-int layout notification_template_big_media_narrow 0x7f0e0023
-int layout notification_template_big_media_narrow_custom 0x7f0e0024
-int layout notification_template_custom_big 0x7f0e0025
-int layout notification_template_icon_group 0x7f0e0026
-int layout notification_template_lines_media 0x7f0e0027
-int layout notification_template_media 0x7f0e0028
-int layout notification_template_media_custom 0x7f0e0029
-int layout notification_template_part_chronometer 0x7f0e002a
-int layout notification_template_part_time 0x7f0e002b
-int layout select_dialog_item_material 0x7f0e002c
-int layout select_dialog_multichoice_material 0x7f0e002d
-int layout select_dialog_singlechoice_material 0x7f0e002e
-int layout support_simple_spinner_dropdown_item 0x7f0e002f
-int layout tanlu_module_bubble_marker 0x7f0e0030
-int layout tanlu_module_card_view 0x7f0e0031
-int layout tanlu_module_info_window 0x7f0e0032
-int layout tanlu_module_poi_info_window 0x7f0e0033
-int string abc_action_bar_home_description 0x7f140001
-int string abc_action_bar_up_description 0x7f140002
-int string abc_action_menu_overflow_description 0x7f140003
-int string abc_action_mode_done 0x7f140004
-int string abc_activity_chooser_view_see_all 0x7f140005
-int string abc_activitychooserview_choose_application 0x7f140006
-int string abc_capital_off 0x7f140007
-int string abc_capital_on 0x7f140008
-int string abc_font_family_body_1_material 0x7f140009
-int string abc_font_family_body_2_material 0x7f14000a
-int string abc_font_family_button_material 0x7f14000b
-int string abc_font_family_caption_material 0x7f14000c
-int string abc_font_family_display_1_material 0x7f14000d
-int string abc_font_family_display_2_material 0x7f14000e
-int string abc_font_family_display_3_material 0x7f14000f
-int string abc_font_family_display_4_material 0x7f140010
-int string abc_font_family_headline_material 0x7f140011
-int string abc_font_family_menu_material 0x7f140012
-int string abc_font_family_subhead_material 0x7f140013
-int string abc_font_family_title_material 0x7f140014
-int string abc_menu_alt_shortcut_label 0x7f140015
-int string abc_menu_ctrl_shortcut_label 0x7f140016
-int string abc_menu_delete_shortcut_label 0x7f140017
-int string abc_menu_enter_shortcut_label 0x7f140018
-int string abc_menu_function_shortcut_label 0x7f140019
-int string abc_menu_meta_shortcut_label 0x7f14001a
-int string abc_menu_shift_shortcut_label 0x7f14001b
-int string abc_menu_space_shortcut_label 0x7f14001c
-int string abc_menu_sym_shortcut_label 0x7f14001d
-int string abc_prepend_shortcut_label 0x7f14001e
-int string abc_search_hint 0x7f14001f
-int string abc_searchview_description_clear 0x7f140020
-int string abc_searchview_description_query 0x7f140021
-int string abc_searchview_description_search 0x7f140022
-int string abc_searchview_description_submit 0x7f140023
-int string abc_searchview_description_voice 0x7f140024
-int string abc_shareactionprovider_share_with 0x7f140025
-int string abc_shareactionprovider_share_with_application 0x7f140026
-int string abc_toolbar_collapse_description 0x7f140027
-int string app_name 0x7f140028
-int string search_menu_title 0x7f140029
-int string status_bar_notification_info_overflow 0x7f14002a
-int style AlertDialog_AppCompat 0x7f150001
-int style AlertDialog_AppCompat_Light 0x7f150002
-int style Animation_AppCompat_Dialog 0x7f150003
-int style Animation_AppCompat_DropDownUp 0x7f150004
-int style Animation_AppCompat_Tooltip 0x7f150005
-int style Base_AlertDialog_AppCompat 0x7f150006
-int style Base_AlertDialog_AppCompat_Light 0x7f150007
-int style Base_Animation_AppCompat_Dialog 0x7f150008
-int style Base_Animation_AppCompat_DropDownUp 0x7f150009
-int style Base_Animation_AppCompat_Tooltip 0x7f15000a
-int style Base_DialogWindowTitleBackground_AppCompat 0x7f15000b
-int style Base_DialogWindowTitle_AppCompat 0x7f15000c
-int style Base_TextAppearance_AppCompat 0x7f15000d
-int style Base_TextAppearance_AppCompat_Body1 0x7f15000e
-int style Base_TextAppearance_AppCompat_Body2 0x7f15000f
-int style Base_TextAppearance_AppCompat_Button 0x7f150010
-int style Base_TextAppearance_AppCompat_Caption 0x7f150011
-int style Base_TextAppearance_AppCompat_Display1 0x7f150012
-int style Base_TextAppearance_AppCompat_Display2 0x7f150013
-int style Base_TextAppearance_AppCompat_Display3 0x7f150014
-int style Base_TextAppearance_AppCompat_Display4 0x7f150015
-int style Base_TextAppearance_AppCompat_Headline 0x7f150016
-int style Base_TextAppearance_AppCompat_Inverse 0x7f150017
-int style Base_TextAppearance_AppCompat_Large 0x7f150018
-int style Base_TextAppearance_AppCompat_Large_Inverse 0x7f150019
-int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x7f15001a
-int style Base_TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x7f15001b
-int style Base_TextAppearance_AppCompat_Medium 0x7f15001c
-int style Base_TextAppearance_AppCompat_Medium_Inverse 0x7f15001d
-int style Base_TextAppearance_AppCompat_Menu 0x7f15001e
-int style Base_TextAppearance_AppCompat_SearchResult 0x7f15001f
-int style Base_TextAppearance_AppCompat_SearchResult_Subtitle 0x7f150020
-int style Base_TextAppearance_AppCompat_SearchResult_Title 0x7f150021
-int style Base_TextAppearance_AppCompat_Small 0x7f150022
-int style Base_TextAppearance_AppCompat_Small_Inverse 0x7f150023
-int style Base_TextAppearance_AppCompat_Subhead 0x7f150024
-int style Base_TextAppearance_AppCompat_Subhead_Inverse 0x7f150025
-int style Base_TextAppearance_AppCompat_Title 0x7f150026
-int style Base_TextAppearance_AppCompat_Title_Inverse 0x7f150027
-int style Base_TextAppearance_AppCompat_Tooltip 0x7f150028
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Menu 0x7f150029
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x7f15002a
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x7f15002b
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title 0x7f15002c
-int style Base_TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x7f15002d
-int style Base_TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x7f15002e
-int style Base_TextAppearance_AppCompat_Widget_ActionMode_Title 0x7f15002f
-int style Base_TextAppearance_AppCompat_Widget_Button 0x7f150030
-int style Base_TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x7f150031
-int style Base_TextAppearance_AppCompat_Widget_Button_Colored 0x7f150032
-int style Base_TextAppearance_AppCompat_Widget_Button_Inverse 0x7f150033
-int style Base_TextAppearance_AppCompat_Widget_DropDownItem 0x7f150034
-int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Header 0x7f150035
-int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Large 0x7f150036
-int style Base_TextAppearance_AppCompat_Widget_PopupMenu_Small 0x7f150037
-int style Base_TextAppearance_AppCompat_Widget_Switch 0x7f150038
-int style Base_TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x7f150039
-int style Base_TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x7f15003a
-int style Base_TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x7f15003b
-int style Base_TextAppearance_Widget_AppCompat_Toolbar_Title 0x7f15003c
-int style Base_ThemeOverlay_AppCompat 0x7f15003d
-int style Base_ThemeOverlay_AppCompat_ActionBar 0x7f15003e
-int style Base_ThemeOverlay_AppCompat_Dark 0x7f15003f
-int style Base_ThemeOverlay_AppCompat_Dark_ActionBar 0x7f150040
-int style Base_ThemeOverlay_AppCompat_Dialog 0x7f150041
-int style Base_ThemeOverlay_AppCompat_Dialog_Alert 0x7f150042
-int style Base_ThemeOverlay_AppCompat_Light 0x7f150043
-int style Base_Theme_AppCompat 0x7f150044
-int style Base_Theme_AppCompat_CompactMenu 0x7f150045
-int style Base_Theme_AppCompat_Dialog 0x7f150046
-int style Base_Theme_AppCompat_DialogWhenLarge 0x7f150047
-int style Base_Theme_AppCompat_Dialog_Alert 0x7f150048
-int style Base_Theme_AppCompat_Dialog_FixedSize 0x7f150049
-int style Base_Theme_AppCompat_Dialog_MinWidth 0x7f15004a
-int style Base_Theme_AppCompat_Light 0x7f15004b
-int style Base_Theme_AppCompat_Light_DarkActionBar 0x7f15004c
-int style Base_Theme_AppCompat_Light_Dialog 0x7f15004d
-int style Base_Theme_AppCompat_Light_DialogWhenLarge 0x7f15004e
-int style Base_Theme_AppCompat_Light_Dialog_Alert 0x7f15004f
-int style Base_Theme_AppCompat_Light_Dialog_FixedSize 0x7f150050
-int style Base_Theme_AppCompat_Light_Dialog_MinWidth 0x7f150051
-int style Base_V21_ThemeOverlay_AppCompat_Dialog 0x7f150052
-int style Base_V21_Theme_AppCompat 0x7f150053
-int style Base_V21_Theme_AppCompat_Dialog 0x7f150054
-int style Base_V21_Theme_AppCompat_Light 0x7f150055
-int style Base_V21_Theme_AppCompat_Light_Dialog 0x7f150056
-int style Base_V22_Theme_AppCompat 0x7f150057
-int style Base_V22_Theme_AppCompat_Light 0x7f150058
-int style Base_V23_Theme_AppCompat 0x7f150059
-int style Base_V23_Theme_AppCompat_Light 0x7f15005a
-int style Base_V26_Theme_AppCompat 0x7f15005b
-int style Base_V26_Theme_AppCompat_Light 0x7f15005c
-int style Base_V26_Widget_AppCompat_Toolbar 0x7f15005d
-int style Base_V28_Theme_AppCompat 0x7f15005e
-int style Base_V28_Theme_AppCompat_Light 0x7f15005f
-int style Base_V7_ThemeOverlay_AppCompat_Dialog 0x7f150060
-int style Base_V7_Theme_AppCompat 0x7f150061
-int style Base_V7_Theme_AppCompat_Dialog 0x7f150062
-int style Base_V7_Theme_AppCompat_Light 0x7f150063
-int style Base_V7_Theme_AppCompat_Light_Dialog 0x7f150064
-int style Base_V7_Widget_AppCompat_AutoCompleteTextView 0x7f150065
-int style Base_V7_Widget_AppCompat_EditText 0x7f150066
-int style Base_V7_Widget_AppCompat_Toolbar 0x7f150067
-int style Base_Widget_AppCompat_ActionBar 0x7f150068
-int style Base_Widget_AppCompat_ActionBar_Solid 0x7f150069
-int style Base_Widget_AppCompat_ActionBar_TabBar 0x7f15006a
-int style Base_Widget_AppCompat_ActionBar_TabText 0x7f15006b
-int style Base_Widget_AppCompat_ActionBar_TabView 0x7f15006c
-int style Base_Widget_AppCompat_ActionButton 0x7f15006d
-int style Base_Widget_AppCompat_ActionButton_CloseMode 0x7f15006e
-int style Base_Widget_AppCompat_ActionButton_Overflow 0x7f15006f
-int style Base_Widget_AppCompat_ActionMode 0x7f150070
-int style Base_Widget_AppCompat_ActivityChooserView 0x7f150071
-int style Base_Widget_AppCompat_AutoCompleteTextView 0x7f150072
-int style Base_Widget_AppCompat_Button 0x7f150073
-int style Base_Widget_AppCompat_ButtonBar 0x7f150074
-int style Base_Widget_AppCompat_ButtonBar_AlertDialog 0x7f150075
-int style Base_Widget_AppCompat_Button_Borderless 0x7f150076
-int style Base_Widget_AppCompat_Button_Borderless_Colored 0x7f150077
-int style Base_Widget_AppCompat_Button_ButtonBar_AlertDialog 0x7f150078
-int style Base_Widget_AppCompat_Button_Colored 0x7f150079
-int style Base_Widget_AppCompat_Button_Small 0x7f15007a
-int style Base_Widget_AppCompat_CompoundButton_CheckBox 0x7f15007b
-int style Base_Widget_AppCompat_CompoundButton_RadioButton 0x7f15007c
-int style Base_Widget_AppCompat_CompoundButton_Switch 0x7f15007d
-int style Base_Widget_AppCompat_DrawerArrowToggle 0x7f15007e
-int style Base_Widget_AppCompat_DrawerArrowToggle_Common 0x7f15007f
-int style Base_Widget_AppCompat_DropDownItem_Spinner 0x7f150080
-int style Base_Widget_AppCompat_EditText 0x7f150081
-int style Base_Widget_AppCompat_ImageButton 0x7f150082
-int style Base_Widget_AppCompat_Light_ActionBar 0x7f150083
-int style Base_Widget_AppCompat_Light_ActionBar_Solid 0x7f150084
-int style Base_Widget_AppCompat_Light_ActionBar_TabBar 0x7f150085
-int style Base_Widget_AppCompat_Light_ActionBar_TabText 0x7f150086
-int style Base_Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x7f150087
-int style Base_Widget_AppCompat_Light_ActionBar_TabView 0x7f150088
-int style Base_Widget_AppCompat_Light_PopupMenu 0x7f150089
-int style Base_Widget_AppCompat_Light_PopupMenu_Overflow 0x7f15008a
-int style Base_Widget_AppCompat_ListMenuView 0x7f15008b
-int style Base_Widget_AppCompat_ListPopupWindow 0x7f15008c
-int style Base_Widget_AppCompat_ListView 0x7f15008d
-int style Base_Widget_AppCompat_ListView_DropDown 0x7f15008e
-int style Base_Widget_AppCompat_ListView_Menu 0x7f15008f
-int style Base_Widget_AppCompat_PopupMenu 0x7f150090
-int style Base_Widget_AppCompat_PopupMenu_Overflow 0x7f150091
-int style Base_Widget_AppCompat_PopupWindow 0x7f150092
-int style Base_Widget_AppCompat_ProgressBar 0x7f150093
-int style Base_Widget_AppCompat_ProgressBar_Horizontal 0x7f150094
-int style Base_Widget_AppCompat_RatingBar 0x7f150095
-int style Base_Widget_AppCompat_RatingBar_Indicator 0x7f150096
-int style Base_Widget_AppCompat_RatingBar_Small 0x7f150097
-int style Base_Widget_AppCompat_SearchView 0x7f150098
-int style Base_Widget_AppCompat_SearchView_ActionBar 0x7f150099
-int style Base_Widget_AppCompat_SeekBar 0x7f15009a
-int style Base_Widget_AppCompat_SeekBar_Discrete 0x7f15009b
-int style Base_Widget_AppCompat_Spinner 0x7f15009c
-int style Base_Widget_AppCompat_Spinner_Underlined 0x7f15009d
-int style Base_Widget_AppCompat_TextView_SpinnerItem 0x7f15009e
-int style Base_Widget_AppCompat_Toolbar 0x7f15009f
-int style Base_Widget_AppCompat_Toolbar_Button_Navigation 0x7f1500a0
-int style Platform_AppCompat 0x7f1500a1
-int style Platform_AppCompat_Light 0x7f1500a2
-int style Platform_ThemeOverlay_AppCompat 0x7f1500a3
-int style Platform_ThemeOverlay_AppCompat_Dark 0x7f1500a4
-int style Platform_ThemeOverlay_AppCompat_Light 0x7f1500a5
-int style Platform_V21_AppCompat 0x7f1500a6
-int style Platform_V21_AppCompat_Light 0x7f1500a7
-int style Platform_V25_AppCompat 0x7f1500a8
-int style Platform_V25_AppCompat_Light 0x7f1500a9
-int style Platform_Widget_AppCompat_Spinner 0x7f1500aa
-int style RtlOverlay_DialogWindowTitle_AppCompat 0x7f1500ab
-int style RtlOverlay_Widget_AppCompat_ActionBar_TitleItem 0x7f1500ac
-int style RtlOverlay_Widget_AppCompat_DialogTitle_Icon 0x7f1500ad
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem 0x7f1500ae
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_InternalGroup 0x7f1500af
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Shortcut 0x7f1500b0
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_SubmenuArrow 0x7f1500b1
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Text 0x7f1500b2
-int style RtlOverlay_Widget_AppCompat_PopupMenuItem_Title 0x7f1500b3
-int style RtlOverlay_Widget_AppCompat_SearchView_MagIcon 0x7f1500b4
-int style RtlOverlay_Widget_AppCompat_Search_DropDown 0x7f1500b5
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon1 0x7f1500b6
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Icon2 0x7f1500b7
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Query 0x7f1500b8
-int style RtlOverlay_Widget_AppCompat_Search_DropDown_Text 0x7f1500b9
-int style RtlUnderlay_Widget_AppCompat_ActionButton 0x7f1500ba
-int style RtlUnderlay_Widget_AppCompat_ActionButton_Overflow 0x7f1500bb
-int style TextAppearance_AppCompat 0x7f1500bc
-int style TextAppearance_AppCompat_Body1 0x7f1500bd
-int style TextAppearance_AppCompat_Body2 0x7f1500be
-int style TextAppearance_AppCompat_Button 0x7f1500bf
-int style TextAppearance_AppCompat_Caption 0x7f1500c0
-int style TextAppearance_AppCompat_Display1 0x7f1500c1
-int style TextAppearance_AppCompat_Display2 0x7f1500c2
-int style TextAppearance_AppCompat_Display3 0x7f1500c3
-int style TextAppearance_AppCompat_Display4 0x7f1500c4
-int style TextAppearance_AppCompat_Headline 0x7f1500c5
-int style TextAppearance_AppCompat_Inverse 0x7f1500c6
-int style TextAppearance_AppCompat_Large 0x7f1500c7
-int style TextAppearance_AppCompat_Large_Inverse 0x7f1500c8
-int style TextAppearance_AppCompat_Light_SearchResult_Subtitle 0x7f1500c9
-int style TextAppearance_AppCompat_Light_SearchResult_Title 0x7f1500ca
-int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x7f1500cb
-int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x7f1500cc
-int style TextAppearance_AppCompat_Medium 0x7f1500cd
-int style TextAppearance_AppCompat_Medium_Inverse 0x7f1500ce
-int style TextAppearance_AppCompat_Menu 0x7f1500cf
-int style TextAppearance_AppCompat_SearchResult_Subtitle 0x7f1500d0
-int style TextAppearance_AppCompat_SearchResult_Title 0x7f1500d1
-int style TextAppearance_AppCompat_Small 0x7f1500d2
-int style TextAppearance_AppCompat_Small_Inverse 0x7f1500d3
-int style TextAppearance_AppCompat_Subhead 0x7f1500d4
-int style TextAppearance_AppCompat_Subhead_Inverse 0x7f1500d5
-int style TextAppearance_AppCompat_Title 0x7f1500d6
-int style TextAppearance_AppCompat_Title_Inverse 0x7f1500d7
-int style TextAppearance_AppCompat_Tooltip 0x7f1500d8
-int style TextAppearance_AppCompat_Widget_ActionBar_Menu 0x7f1500d9
-int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x7f1500da
-int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x7f1500db
-int style TextAppearance_AppCompat_Widget_ActionBar_Title 0x7f1500dc
-int style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x7f1500dd
-int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x7f1500de
-int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse 0x7f1500df
-int style TextAppearance_AppCompat_Widget_ActionMode_Title 0x7f1500e0
-int style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse 0x7f1500e1
-int style TextAppearance_AppCompat_Widget_Button 0x7f1500e2
-int style TextAppearance_AppCompat_Widget_Button_Borderless_Colored 0x7f1500e3
-int style TextAppearance_AppCompat_Widget_Button_Colored 0x7f1500e4
-int style TextAppearance_AppCompat_Widget_Button_Inverse 0x7f1500e5
-int style TextAppearance_AppCompat_Widget_DropDownItem 0x7f1500e6
-int style TextAppearance_AppCompat_Widget_PopupMenu_Header 0x7f1500e7
-int style TextAppearance_AppCompat_Widget_PopupMenu_Large 0x7f1500e8
-int style TextAppearance_AppCompat_Widget_PopupMenu_Small 0x7f1500e9
-int style TextAppearance_AppCompat_Widget_Switch 0x7f1500ea
-int style TextAppearance_AppCompat_Widget_TextView_SpinnerItem 0x7f1500eb
-int style TextAppearance_Compat_Notification 0x7f1500ec
-int style TextAppearance_Compat_Notification_Info 0x7f1500ed
-int style TextAppearance_Compat_Notification_Info_Media 0x7f1500ee
-int style TextAppearance_Compat_Notification_Line2 0x7f1500ef
-int style TextAppearance_Compat_Notification_Line2_Media 0x7f1500f0
-int style TextAppearance_Compat_Notification_Media 0x7f1500f1
-int style TextAppearance_Compat_Notification_Time 0x7f1500f2
-int style TextAppearance_Compat_Notification_Time_Media 0x7f1500f3
-int style TextAppearance_Compat_Notification_Title 0x7f1500f4
-int style TextAppearance_Compat_Notification_Title_Media 0x7f1500f5
-int style TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x7f1500f6
-int style TextAppearance_Widget_AppCompat_Toolbar_Subtitle 0x7f1500f7
-int style TextAppearance_Widget_AppCompat_Toolbar_Title 0x7f1500f8
-int style ThemeOverlay_AppCompat 0x7f1500f9
-int style ThemeOverlay_AppCompat_ActionBar 0x7f1500fa
-int style ThemeOverlay_AppCompat_Dark 0x7f1500fb
-int style ThemeOverlay_AppCompat_Dark_ActionBar 0x7f1500fc
-int style ThemeOverlay_AppCompat_Dialog 0x7f1500fd
-int style ThemeOverlay_AppCompat_Dialog_Alert 0x7f1500fe
-int style ThemeOverlay_AppCompat_Light 0x7f1500ff
-int style Theme_AppCompat 0x7f150100
-int style Theme_AppCompat_CompactMenu 0x7f150101
-int style Theme_AppCompat_DayNight 0x7f150102
-int style Theme_AppCompat_DayNight_DarkActionBar 0x7f150103
-int style Theme_AppCompat_DayNight_Dialog 0x7f150104
-int style Theme_AppCompat_DayNight_DialogWhenLarge 0x7f150105
-int style Theme_AppCompat_DayNight_Dialog_Alert 0x7f150106
-int style Theme_AppCompat_DayNight_Dialog_MinWidth 0x7f150107
-int style Theme_AppCompat_DayNight_NoActionBar 0x7f150108
-int style Theme_AppCompat_Dialog 0x7f150109
-int style Theme_AppCompat_DialogWhenLarge 0x7f15010a
-int style Theme_AppCompat_Dialog_Alert 0x7f15010b
-int style Theme_AppCompat_Dialog_MinWidth 0x7f15010c
-int style Theme_AppCompat_Light 0x7f15010d
-int style Theme_AppCompat_Light_DarkActionBar 0x7f15010e
-int style Theme_AppCompat_Light_Dialog 0x7f15010f
-int style Theme_AppCompat_Light_DialogWhenLarge 0x7f150110
-int style Theme_AppCompat_Light_Dialog_Alert 0x7f150111
-int style Theme_AppCompat_Light_Dialog_MinWidth 0x7f150112
-int style Theme_AppCompat_Light_NoActionBar 0x7f150113
-int style Theme_AppCompat_NoActionBar 0x7f150114
-int style Widget_AppCompat_ActionBar 0x7f150115
-int style Widget_AppCompat_ActionBar_Solid 0x7f150116
-int style Widget_AppCompat_ActionBar_TabBar 0x7f150117
-int style Widget_AppCompat_ActionBar_TabText 0x7f150118
-int style Widget_AppCompat_ActionBar_TabView 0x7f150119
-int style Widget_AppCompat_ActionButton 0x7f15011a
-int style Widget_AppCompat_ActionButton_CloseMode 0x7f15011b
-int style Widget_AppCompat_ActionButton_Overflow 0x7f15011c
-int style Widget_AppCompat_ActionMode 0x7f15011d
-int style Widget_AppCompat_ActivityChooserView 0x7f15011e
-int style Widget_AppCompat_AutoCompleteTextView 0x7f15011f
-int style Widget_AppCompat_Button 0x7f150120
-int style Widget_AppCompat_ButtonBar 0x7f150121
-int style Widget_AppCompat_ButtonBar_AlertDialog 0x7f150122
-int style Widget_AppCompat_Button_Borderless 0x7f150123
-int style Widget_AppCompat_Button_Borderless_Colored 0x7f150124
-int style Widget_AppCompat_Button_ButtonBar_AlertDialog 0x7f150125
-int style Widget_AppCompat_Button_Colored 0x7f150126
-int style Widget_AppCompat_Button_Small 0x7f150127
-int style Widget_AppCompat_CompoundButton_CheckBox 0x7f150128
-int style Widget_AppCompat_CompoundButton_RadioButton 0x7f150129
-int style Widget_AppCompat_CompoundButton_Switch 0x7f15012a
-int style Widget_AppCompat_DrawerArrowToggle 0x7f15012b
-int style Widget_AppCompat_DropDownItem_Spinner 0x7f15012c
-int style Widget_AppCompat_EditText 0x7f15012d
-int style Widget_AppCompat_ImageButton 0x7f15012e
-int style Widget_AppCompat_Light_ActionBar 0x7f15012f
-int style Widget_AppCompat_Light_ActionBar_Solid 0x7f150130
-int style Widget_AppCompat_Light_ActionBar_Solid_Inverse 0x7f150131
-int style Widget_AppCompat_Light_ActionBar_TabBar 0x7f150132
-int style Widget_AppCompat_Light_ActionBar_TabBar_Inverse 0x7f150133
-int style Widget_AppCompat_Light_ActionBar_TabText 0x7f150134
-int style Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x7f150135
-int style Widget_AppCompat_Light_ActionBar_TabView 0x7f150136
-int style Widget_AppCompat_Light_ActionBar_TabView_Inverse 0x7f150137
-int style Widget_AppCompat_Light_ActionButton 0x7f150138
-int style Widget_AppCompat_Light_ActionButton_CloseMode 0x7f150139
-int style Widget_AppCompat_Light_ActionButton_Overflow 0x7f15013a
-int style Widget_AppCompat_Light_ActionMode_Inverse 0x7f15013b
-int style Widget_AppCompat_Light_ActivityChooserView 0x7f15013c
-int style Widget_AppCompat_Light_AutoCompleteTextView 0x7f15013d
-int style Widget_AppCompat_Light_DropDownItem_Spinner 0x7f15013e
-int style Widget_AppCompat_Light_ListPopupWindow 0x7f15013f
-int style Widget_AppCompat_Light_ListView_DropDown 0x7f150140
-int style Widget_AppCompat_Light_PopupMenu 0x7f150141
-int style Widget_AppCompat_Light_PopupMenu_Overflow 0x7f150142
-int style Widget_AppCompat_Light_SearchView 0x7f150143
-int style Widget_AppCompat_Light_Spinner_DropDown_ActionBar 0x7f150144
-int style Widget_AppCompat_ListMenuView 0x7f150145
-int style Widget_AppCompat_ListPopupWindow 0x7f150146
-int style Widget_AppCompat_ListView 0x7f150147
-int style Widget_AppCompat_ListView_DropDown 0x7f150148
-int style Widget_AppCompat_ListView_Menu 0x7f150149
-int style Widget_AppCompat_PopupMenu 0x7f15014a
-int style Widget_AppCompat_PopupMenu_Overflow 0x7f15014b
-int style Widget_AppCompat_PopupWindow 0x7f15014c
-int style Widget_AppCompat_ProgressBar 0x7f15014d
-int style Widget_AppCompat_ProgressBar_Horizontal 0x7f15014e
-int style Widget_AppCompat_RatingBar 0x7f15014f
-int style Widget_AppCompat_RatingBar_Indicator 0x7f150150
-int style Widget_AppCompat_RatingBar_Small 0x7f150151
-int style Widget_AppCompat_SearchView 0x7f150152
-int style Widget_AppCompat_SearchView_ActionBar 0x7f150153
-int style Widget_AppCompat_SeekBar 0x7f150154
-int style Widget_AppCompat_SeekBar_Discrete 0x7f150155
-int style Widget_AppCompat_Spinner 0x7f150156
-int style Widget_AppCompat_Spinner_DropDown 0x7f150157
-int style Widget_AppCompat_Spinner_DropDown_ActionBar 0x7f150158
-int style Widget_AppCompat_Spinner_Underlined 0x7f150159
-int style Widget_AppCompat_TextView_SpinnerItem 0x7f15015a
-int style Widget_AppCompat_Toolbar 0x7f15015b
-int style Widget_AppCompat_Toolbar_Button_Navigation 0x7f15015c
-int style Widget_Compat_NotificationActionContainer 0x7f15015d
-int style Widget_Compat_NotificationActionText 0x7f15015e
-int style Widget_Support_CoordinatorLayout 0x7f15015f
-int[] styleable ActionBar { 0x7f040034, 0x7f040036, 0x7f040037, 0x7f040061, 0x7f040062, 0x7f040063, 0x7f040064, 0x7f040065, 0x7f040066, 0x7f040069, 0x7f04006e, 0x7f04006f, 0x7f04007a, 0x7f04008e, 0x7f04008f, 0x7f040090, 0x7f040091, 0x7f040092, 0x7f040097, 0x7f04009a, 0x7f0400e2, 0x7f0400f6, 0x7f040104, 0x7f04010b, 0x7f04010c, 0x7f040133, 0x7f040136, 0x7f040151, 0x7f04015a }
-int styleable ActionBar_background 0
-int styleable ActionBar_backgroundSplit 1
-int styleable ActionBar_backgroundStacked 2
-int styleable ActionBar_contentInsetEnd 3
-int styleable ActionBar_contentInsetEndWithActions 4
-int styleable ActionBar_contentInsetLeft 5
-int styleable ActionBar_contentInsetRight 6
-int styleable ActionBar_contentInsetStart 7
-int styleable ActionBar_contentInsetStartWithNavigation 8
-int styleable ActionBar_customNavigationLayout 9
-int styleable ActionBar_displayOptions 10
-int styleable ActionBar_divider 11
-int styleable ActionBar_elevation 12
-int styleable ActionBar_height 13
-int styleable ActionBar_hideOnContentScroll 14
-int styleable ActionBar_homeAsUpIndicator 15
-int styleable ActionBar_homeLayout 16
-int styleable ActionBar_icon 17
-int styleable ActionBar_indeterminateProgressStyle 18
-int styleable ActionBar_itemPadding 19
-int styleable ActionBar_logo 20
-int styleable ActionBar_navigationMode 21
-int styleable ActionBar_popupTheme 22
-int styleable ActionBar_progressBarPadding 23
-int styleable ActionBar_progressBarStyle 24
-int styleable ActionBar_subtitle 25
-int styleable ActionBar_subtitleTextStyle 26
-int styleable ActionBar_title 27
-int styleable ActionBar_titleTextStyle 28
-int[] styleable ActionBarLayout { 0x10100b3 }
-int styleable ActionBarLayout_android_layout_gravity 0
-int[] styleable ActionMenuItemView { 0x101013f }
-int styleable ActionMenuItemView_android_minWidth 0
-int[] styleable ActionMenuView { }
-int[] styleable ActionMode { 0x7f040034, 0x7f040036, 0x7f04004e, 0x7f04008e, 0x7f040136, 0x7f04015a }
-int styleable ActionMode_background 0
-int styleable ActionMode_backgroundSplit 1
-int styleable ActionMode_closeItemLayout 2
-int styleable ActionMode_height 3
-int styleable ActionMode_subtitleTextStyle 4
-int styleable ActionMode_titleTextStyle 5
-int[] styleable ActivityChooserView { 0x7f04007c, 0x7f040098 }
-int styleable ActivityChooserView_expandActivityOverflowButtonDrawable 0
-int styleable ActivityChooserView_initialActivityCount 1
-int[] styleable AlertDialog { 0x10100f2, 0x7f040044, 0x7f040045, 0x7f0400d9, 0x7f0400da, 0x7f0400f3, 0x7f040128, 0x7f040129 }
-int styleable AlertDialog_android_layout 0
-int styleable AlertDialog_buttonIconDimen 1
-int styleable AlertDialog_buttonPanelSideLayout 2
-int styleable AlertDialog_listItemLayout 3
-int styleable AlertDialog_listLayout 4
-int styleable AlertDialog_multiChoiceItemLayout 5
-int styleable AlertDialog_showTitle 6
-int styleable AlertDialog_singleChoiceItemLayout 7
-int[] styleable AnimatedStateListDrawableCompat { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 }
-int styleable AnimatedStateListDrawableCompat_android_constantSize 0
-int styleable AnimatedStateListDrawableCompat_android_dither 1
-int styleable AnimatedStateListDrawableCompat_android_enterFadeDuration 2
-int styleable AnimatedStateListDrawableCompat_android_exitFadeDuration 3
-int styleable AnimatedStateListDrawableCompat_android_variablePadding 4
-int styleable AnimatedStateListDrawableCompat_android_visible 5
-int[] styleable AnimatedStateListDrawableItem { 0x1010199, 0x10100d0 }
-int styleable AnimatedStateListDrawableItem_android_drawable 0
-int styleable AnimatedStateListDrawableItem_android_id 1
-int[] styleable AnimatedStateListDrawableTransition { 0x1010199, 0x101044a, 0x101044b, 0x1010449 }
-int styleable AnimatedStateListDrawableTransition_android_drawable 0
-int styleable AnimatedStateListDrawableTransition_android_fromId 1
-int styleable AnimatedStateListDrawableTransition_android_reversible 2
-int styleable AnimatedStateListDrawableTransition_android_toId 3
-int[] styleable AppCompatImageView { 0x1010119, 0x7f04012e, 0x7f04014f, 0x7f040150 }
-int styleable AppCompatImageView_android_src 0
-int styleable AppCompatImageView_srcCompat 1
-int styleable AppCompatImageView_tint 2
-int styleable AppCompatImageView_tintMode 3
-int[] styleable AppCompatSeekBar { 0x1010142, 0x7f04014c, 0x7f04014d, 0x7f04014e }
-int styleable AppCompatSeekBar_android_thumb 0
-int styleable AppCompatSeekBar_tickMark 1
-int styleable AppCompatSeekBar_tickMarkTint 2
-int styleable AppCompatSeekBar_tickMarkTintMode 3
-int[] styleable AppCompatTextHelper { 0x101016e, 0x1010393, 0x101016f, 0x1010170, 0x1010392, 0x101016d, 0x1010034 }
-int styleable AppCompatTextHelper_android_drawableBottom 0
-int styleable AppCompatTextHelper_android_drawableEnd 1
-int styleable AppCompatTextHelper_android_drawableLeft 2
-int styleable AppCompatTextHelper_android_drawableRight 3
-int styleable AppCompatTextHelper_android_drawableStart 4
-int styleable AppCompatTextHelper_android_drawableTop 5
-int styleable AppCompatTextHelper_android_textAppearance 6
-int[] styleable AppCompatTextView { 0x1010034, 0x7f04002f, 0x7f040030, 0x7f040031, 0x7f040032, 0x7f040033, 0x7f040080, 0x7f040082, 0x7f04009c, 0x7f0400d6, 0x7f04013c }
-int styleable AppCompatTextView_android_textAppearance 0
-int styleable AppCompatTextView_autoSizeMaxTextSize 1
-int styleable AppCompatTextView_autoSizeMinTextSize 2
-int styleable AppCompatTextView_autoSizePresetSizes 3
-int styleable AppCompatTextView_autoSizeStepGranularity 4
-int styleable AppCompatTextView_autoSizeTextType 5
-int styleable AppCompatTextView_firstBaselineToTopHeight 6
-int styleable AppCompatTextView_fontFamily 7
-int styleable AppCompatTextView_lastBaselineToBottomHeight 8
-int styleable AppCompatTextView_lineHeight 9
-int styleable AppCompatTextView_textAllCaps 10
-int[] styleable AppCompatTheme { 0x7f040001, 0x7f040002, 0x7f040003, 0x7f040004, 0x7f040005, 0x7f040006, 0x7f040007, 0x7f040008, 0x7f040009, 0x7f04000a, 0x7f04000b, 0x7f04000c, 0x7f04000d, 0x7f04000f, 0x7f040010, 0x7f040011, 0x7f040012, 0x7f040013, 0x7f040014, 0x7f040015, 0x7f040016, 0x7f040017, 0x7f040018, 0x7f040019, 0x7f04001a, 0x7f04001b, 0x7f04001c, 0x7f04001d, 0x7f04001e, 0x7f04001f, 0x7f040022, 0x7f040025, 0x7f040026, 0x7f040027, 0x7f040028, 0x10100ae, 0x1010057, 0x7f04002e, 0x7f04003d, 0x7f04003e, 0x7f04003f, 0x7f040040, 0x7f040041, 0x7f040042, 0x7f040046, 0x7f040047, 0x7f04004b, 0x7f04004c, 0x7f040052, 0x7f040053, 0x7f040054, 0x7f040055, 0x7f040056, 0x7f040057, 0x7f040058, 0x7f040059, 0x7f04005a, 0x7f04005b, 0x7f040067, 0x7f04006b, 0x7f04006c, 0x7f04006d, 0x7f040070, 0x7f040072, 0x7f040075, 0x7f040076, 0x7f040077, 0x7f040078, 0x7f040079, 0x7f040090, 0x7f040096, 0x7f0400d7, 0x7f0400d8, 0x7f0400db, 0x7f0400dc, 0x7f0400dd, 0x7f0400de, 0x7f0400df, 0x7f0400e0, 0x7f0400e1, 0x7f0400fe, 0x7f0400ff, 0x7f040100, 0x7f040103, 0x7f040105, 0x7f04010f, 0x7f040110, 0x7f040111, 0x7f040112, 0x7f040121, 0x7f040122, 0x7f040123, 0x7f040124, 0x7f04012b, 0x7f04012c, 0x7f04013a, 0x7f04013d, 0x7f04013e, 0x7f04013f, 0x7f040140, 0x7f040141, 0x7f040142, 0x7f040143, 0x7f040144, 0x7f040145, 0x7f040146, 0x7f04015b, 0x7f04015c, 0x7f04015d, 0x7f04015e, 0x7f040165, 0x7f040167, 0x7f040168, 0x7f040169, 0x7f04016a, 0x7f04016b, 0x7f04016c, 0x7f04016d, 0x7f04016e, 0x7f04016f, 0x7f040170 }
-int styleable AppCompatTheme_actionBarDivider 0
-int styleable AppCompatTheme_actionBarItemBackground 1
-int styleable AppCompatTheme_actionBarPopupTheme 2
-int styleable AppCompatTheme_actionBarSize 3
-int styleable AppCompatTheme_actionBarSplitStyle 4
-int styleable AppCompatTheme_actionBarStyle 5
-int styleable AppCompatTheme_actionBarTabBarStyle 6
-int styleable AppCompatTheme_actionBarTabStyle 7
-int styleable AppCompatTheme_actionBarTabTextStyle 8
-int styleable AppCompatTheme_actionBarTheme 9
-int styleable AppCompatTheme_actionBarWidgetTheme 10
-int styleable AppCompatTheme_actionButtonStyle 11
-int styleable AppCompatTheme_actionDropDownStyle 12
-int styleable AppCompatTheme_actionMenuTextAppearance 13
-int styleable AppCompatTheme_actionMenuTextColor 14
-int styleable AppCompatTheme_actionModeBackground 15
-int styleable AppCompatTheme_actionModeCloseButtonStyle 16
-int styleable AppCompatTheme_actionModeCloseDrawable 17
-int styleable AppCompatTheme_actionModeCopyDrawable 18
-int styleable AppCompatTheme_actionModeCutDrawable 19
-int styleable AppCompatTheme_actionModeFindDrawable 20
-int styleable AppCompatTheme_actionModePasteDrawable 21
-int styleable AppCompatTheme_actionModePopupWindowStyle 22
-int styleable AppCompatTheme_actionModeSelectAllDrawable 23
-int styleable AppCompatTheme_actionModeShareDrawable 24
-int styleable AppCompatTheme_actionModeSplitBackground 25
-int styleable AppCompatTheme_actionModeStyle 26
-int styleable AppCompatTheme_actionModeWebSearchDrawable 27
-int styleable AppCompatTheme_actionOverflowButtonStyle 28
-int styleable AppCompatTheme_actionOverflowMenuStyle 29
-int styleable AppCompatTheme_activityChooserViewStyle 30
-int styleable AppCompatTheme_alertDialogButtonGroupStyle 31
-int styleable AppCompatTheme_alertDialogCenterButtons 32
-int styleable AppCompatTheme_alertDialogStyle 33
-int styleable AppCompatTheme_alertDialogTheme 34
-int styleable AppCompatTheme_android_windowAnimationStyle 35
-int styleable AppCompatTheme_android_windowIsFloating 36
-int styleable AppCompatTheme_autoCompleteTextViewStyle 37
-int styleable AppCompatTheme_borderlessButtonStyle 38
-int styleable AppCompatTheme_buttonBarButtonStyle 39
-int styleable AppCompatTheme_buttonBarNegativeButtonStyle 40
-int styleable AppCompatTheme_buttonBarNeutralButtonStyle 41
-int styleable AppCompatTheme_buttonBarPositiveButtonStyle 42
-int styleable AppCompatTheme_buttonBarStyle 43
-int styleable AppCompatTheme_buttonStyle 44
-int styleable AppCompatTheme_buttonStyleSmall 45
-int styleable AppCompatTheme_checkboxStyle 46
-int styleable AppCompatTheme_checkedTextViewStyle 47
-int styleable AppCompatTheme_colorAccent 48
-int styleable AppCompatTheme_colorBackgroundFloating 49
-int styleable AppCompatTheme_colorButtonNormal 50
-int styleable AppCompatTheme_colorControlActivated 51
-int styleable AppCompatTheme_colorControlHighlight 52
-int styleable AppCompatTheme_colorControlNormal 53
-int styleable AppCompatTheme_colorError 54
-int styleable AppCompatTheme_colorPrimary 55
-int styleable AppCompatTheme_colorPrimaryDark 56
-int styleable AppCompatTheme_colorSwitchThumbNormal 57
-int styleable AppCompatTheme_controlBackground 58
-int styleable AppCompatTheme_dialogCornerRadius 59
-int styleable AppCompatTheme_dialogPreferredPadding 60
-int styleable AppCompatTheme_dialogTheme 61
-int styleable AppCompatTheme_dividerHorizontal 62
-int styleable AppCompatTheme_dividerVertical 63
-int styleable AppCompatTheme_dropDownListViewStyle 64
-int styleable AppCompatTheme_dropdownListPreferredItemHeight 65
-int styleable AppCompatTheme_editTextBackground 66
-int styleable AppCompatTheme_editTextColor 67
-int styleable AppCompatTheme_editTextStyle 68
-int styleable AppCompatTheme_homeAsUpIndicator 69
-int styleable AppCompatTheme_imageButtonStyle 70
-int styleable AppCompatTheme_listChoiceBackgroundIndicator 71
-int styleable AppCompatTheme_listDividerAlertDialog 72
-int styleable AppCompatTheme_listMenuViewStyle 73
-int styleable AppCompatTheme_listPopupWindowStyle 74
-int styleable AppCompatTheme_listPreferredItemHeight 75
-int styleable AppCompatTheme_listPreferredItemHeightLarge 76
-int styleable AppCompatTheme_listPreferredItemHeightSmall 77
-int styleable AppCompatTheme_listPreferredItemPaddingLeft 78
-int styleable AppCompatTheme_listPreferredItemPaddingRight 79
-int styleable AppCompatTheme_panelBackground 80
-int styleable AppCompatTheme_panelMenuListTheme 81
-int styleable AppCompatTheme_panelMenuListWidth 82
-int styleable AppCompatTheme_popupMenuStyle 83
-int styleable AppCompatTheme_popupWindowStyle 84
-int styleable AppCompatTheme_radioButtonStyle 85
-int styleable AppCompatTheme_ratingBarStyle 86
-int styleable AppCompatTheme_ratingBarStyleIndicator 87
-int styleable AppCompatTheme_ratingBarStyleSmall 88
-int styleable AppCompatTheme_searchViewStyle 89
-int styleable AppCompatTheme_seekBarStyle 90
-int styleable AppCompatTheme_selectableItemBackground 91
-int styleable AppCompatTheme_selectableItemBackgroundBorderless 92
-int styleable AppCompatTheme_spinnerDropDownItemStyle 93
-int styleable AppCompatTheme_spinnerStyle 94
-int styleable AppCompatTheme_switchStyle 95
-int styleable AppCompatTheme_textAppearanceLargePopupMenu 96
-int styleable AppCompatTheme_textAppearanceListItem 97
-int styleable AppCompatTheme_textAppearanceListItemSecondary 98
-int styleable AppCompatTheme_textAppearanceListItemSmall 99
-int styleable AppCompatTheme_textAppearancePopupMenuHeader 100
-int styleable AppCompatTheme_textAppearanceSearchResultSubtitle 101
-int styleable AppCompatTheme_textAppearanceSearchResultTitle 102
-int styleable AppCompatTheme_textAppearanceSmallPopupMenu 103
-int styleable AppCompatTheme_textColorAlertDialogListItem 104
-int styleable AppCompatTheme_textColorSearchUrl 105
-int styleable AppCompatTheme_toolbarNavigationButtonStyle 106
-int styleable AppCompatTheme_toolbarStyle 107
-int styleable AppCompatTheme_tooltipForegroundColor 108
-int styleable AppCompatTheme_tooltipFrameBackground 109
-int styleable AppCompatTheme_viewInflaterClass 110
-int styleable AppCompatTheme_windowActionBar 111
-int styleable AppCompatTheme_windowActionBarOverlay 112
-int styleable AppCompatTheme_windowActionModeOverlay 113
-int styleable AppCompatTheme_windowFixedHeightMajor 114
-int styleable AppCompatTheme_windowFixedHeightMinor 115
-int styleable AppCompatTheme_windowFixedWidthMajor 116
-int styleable AppCompatTheme_windowFixedWidthMinor 117
-int styleable AppCompatTheme_windowMinWidthMajor 118
-int styleable AppCompatTheme_windowMinWidthMinor 119
-int styleable AppCompatTheme_windowNoTitle 120
-int[] styleable ButtonBarLayout { 0x7f040029 }
-int styleable ButtonBarLayout_allowStacking 0
-int[] styleable ColorStateListItem { 0x7f04002a, 0x101031f, 0x10101a5 }
-int styleable ColorStateListItem_alpha 0
-int styleable ColorStateListItem_android_alpha 1
-int styleable ColorStateListItem_android_color 2
-int[] styleable CompoundButton { 0x1010107, 0x7f040048, 0x7f040049 }
-int styleable CompoundButton_android_button 0
-int styleable CompoundButton_buttonTint 1
-int styleable CompoundButton_buttonTintMode 2
-int[] styleable ConstraintLayout_Layout { 0x1010120, 0x101011f, 0x1010140, 0x101013f, 0x10100c4, 0x7f04003b, 0x7f04003c, 0x7f04004a, 0x7f04005d, 0x7f04005e, 0x7f0400a1, 0x7f0400a2, 0x7f0400a3, 0x7f0400a4, 0x7f0400a5, 0x7f0400a6, 0x7f0400a7, 0x7f0400a8, 0x7f0400a9, 0x7f0400aa, 0x7f0400ab, 0x7f0400ac, 0x7f0400ad, 0x7f0400ae, 0x7f0400af, 0x7f0400b0, 0x7f0400b1, 0x7f0400b2, 0x7f0400b3, 0x7f0400b4, 0x7f0400b5, 0x7f0400b6, 0x7f0400b7, 0x7f0400b8, 0x7f0400b9, 0x7f0400ba, 0x7f0400bb, 0x7f0400bc, 0x7f0400bd, 0x7f0400be, 0x7f0400bf, 0x7f0400c0, 0x7f0400c1, 0x7f0400c2, 0x7f0400c3, 0x7f0400c4, 0x7f0400c5, 0x7f0400c6, 0x7f0400c7, 0x7f0400c8, 0x7f0400c9, 0x7f0400cb, 0x7f0400cc, 0x7f0400cd, 0x7f0400ce, 0x7f0400cf, 0x7f0400d0, 0x7f0400d1, 0x7f0400d2, 0x7f0400d5 }
-int styleable ConstraintLayout_Layout_android_maxHeight 0
-int styleable ConstraintLayout_Layout_android_maxWidth 1
-int styleable ConstraintLayout_Layout_android_minHeight 2
-int styleable ConstraintLayout_Layout_android_minWidth 3
-int styleable ConstraintLayout_Layout_android_orientation 4
-int styleable ConstraintLayout_Layout_barrierAllowsGoneWidgets 5
-int styleable ConstraintLayout_Layout_barrierDirection 6
-int styleable ConstraintLayout_Layout_chainUseRtl 7
-int styleable ConstraintLayout_Layout_constraintSet 8
-int styleable ConstraintLayout_Layout_constraint_referenced_ids 9
-int styleable ConstraintLayout_Layout_layout_constrainedHeight 10
-int styleable ConstraintLayout_Layout_layout_constrainedWidth 11
-int styleable ConstraintLayout_Layout_layout_constraintBaseline_creator 12
-int styleable ConstraintLayout_Layout_layout_constraintBaseline_toBaselineOf 13
-int styleable ConstraintLayout_Layout_layout_constraintBottom_creator 14
-int styleable ConstraintLayout_Layout_layout_constraintBottom_toBottomOf 15
-int styleable ConstraintLayout_Layout_layout_constraintBottom_toTopOf 16
-int styleable ConstraintLayout_Layout_layout_constraintCircle 17
-int styleable ConstraintLayout_Layout_layout_constraintCircleAngle 18
-int styleable ConstraintLayout_Layout_layout_constraintCircleRadius 19
-int styleable ConstraintLayout_Layout_layout_constraintDimensionRatio 20
-int styleable ConstraintLayout_Layout_layout_constraintEnd_toEndOf 21
-int styleable ConstraintLayout_Layout_layout_constraintEnd_toStartOf 22
-int styleable ConstraintLayout_Layout_layout_constraintGuide_begin 23
-int styleable ConstraintLayout_Layout_layout_constraintGuide_end 24
-int styleable ConstraintLayout_Layout_layout_constraintGuide_percent 25
-int styleable ConstraintLayout_Layout_layout_constraintHeight_default 26
-int styleable ConstraintLayout_Layout_layout_constraintHeight_max 27
-int styleable ConstraintLayout_Layout_layout_constraintHeight_min 28
-int styleable ConstraintLayout_Layout_layout_constraintHeight_percent 29
-int styleable ConstraintLayout_Layout_layout_constraintHorizontal_bias 30
-int styleable ConstraintLayout_Layout_layout_constraintHorizontal_chainStyle 31
-int styleable ConstraintLayout_Layout_layout_constraintHorizontal_weight 32
-int styleable ConstraintLayout_Layout_layout_constraintLeft_creator 33
-int styleable ConstraintLayout_Layout_layout_constraintLeft_toLeftOf 34
-int styleable ConstraintLayout_Layout_layout_constraintLeft_toRightOf 35
-int styleable ConstraintLayout_Layout_layout_constraintRight_creator 36
-int styleable ConstraintLayout_Layout_layout_constraintRight_toLeftOf 37
-int styleable ConstraintLayout_Layout_layout_constraintRight_toRightOf 38
-int styleable ConstraintLayout_Layout_layout_constraintStart_toEndOf 39
-int styleable ConstraintLayout_Layout_layout_constraintStart_toStartOf 40
-int styleable ConstraintLayout_Layout_layout_constraintTop_creator 41
-int styleable ConstraintLayout_Layout_layout_constraintTop_toBottomOf 42
-int styleable ConstraintLayout_Layout_layout_constraintTop_toTopOf 43
-int styleable ConstraintLayout_Layout_layout_constraintVertical_bias 44
-int styleable ConstraintLayout_Layout_layout_constraintVertical_chainStyle 45
-int styleable ConstraintLayout_Layout_layout_constraintVertical_weight 46
-int styleable ConstraintLayout_Layout_layout_constraintWidth_default 47
-int styleable ConstraintLayout_Layout_layout_constraintWidth_max 48
-int styleable ConstraintLayout_Layout_layout_constraintWidth_min 49
-int styleable ConstraintLayout_Layout_layout_constraintWidth_percent 50
-int styleable ConstraintLayout_Layout_layout_editor_absoluteX 51
-int styleable ConstraintLayout_Layout_layout_editor_absoluteY 52
-int styleable ConstraintLayout_Layout_layout_goneMarginBottom 53
-int styleable ConstraintLayout_Layout_layout_goneMarginEnd 54
-int styleable ConstraintLayout_Layout_layout_goneMarginLeft 55
-int styleable ConstraintLayout_Layout_layout_goneMarginRight 56
-int styleable ConstraintLayout_Layout_layout_goneMarginStart 57
-int styleable ConstraintLayout_Layout_layout_goneMarginTop 58
-int styleable ConstraintLayout_Layout_layout_optimizationLevel 59
-int[] styleable ConstraintLayout_placeholder { 0x7f04005f, 0x7f04007b }
-int styleable ConstraintLayout_placeholder_content 0
-int styleable ConstraintLayout_placeholder_emptyVisibility 1
-int[] styleable ConstraintSet { 0x101031f, 0x1010440, 0x10100d0, 0x10100f5, 0x10100fa, 0x10103b6, 0x10100f7, 0x10100f9, 0x10103b5, 0x10100f8, 0x10100f4, 0x1010120, 0x101011f, 0x1010140, 0x101013f, 0x10100c4, 0x1010326, 0x1010327, 0x1010328, 0x1010324, 0x1010325, 0x1010320, 0x1010321, 0x1010322, 0x1010323, 0x10103fa, 0x10100dc, 0x7f04003b, 0x7f04003c, 0x7f04004a, 0x7f04005e, 0x7f0400a1, 0x7f0400a2, 0x7f0400a3, 0x7f0400a4, 0x7f0400a5, 0x7f0400a6, 0x7f0400a7, 0x7f0400a8, 0x7f0400a9, 0x7f0400aa, 0x7f0400ab, 0x7f0400ac, 0x7f0400ad, 0x7f0400ae, 0x7f0400af, 0x7f0400b0, 0x7f0400b1, 0x7f0400b2, 0x7f0400b3, 0x7f0400b4, 0x7f0400b5, 0x7f0400b6, 0x7f0400b7, 0x7f0400b8, 0x7f0400b9, 0x7f0400ba, 0x7f0400bb, 0x7f0400bc, 0x7f0400bd, 0x7f0400be, 0x7f0400bf, 0x7f0400c0, 0x7f0400c1, 0x7f0400c2, 0x7f0400c3, 0x7f0400c4, 0x7f0400c5, 0x7f0400c6, 0x7f0400c7, 0x7f0400c8, 0x7f0400c9, 0x7f0400cb, 0x7f0400cc, 0x7f0400cd, 0x7f0400ce, 0x7f0400cf, 0x7f0400d0, 0x7f0400d1, 0x7f0400d2 }
-int styleable ConstraintSet_android_alpha 0
-int styleable ConstraintSet_android_elevation 1
-int styleable ConstraintSet_android_id 2
-int styleable ConstraintSet_android_layout_height 3
-int styleable ConstraintSet_android_layout_marginBottom 4
-int styleable ConstraintSet_android_layout_marginEnd 5
-int styleable ConstraintSet_android_layout_marginLeft 6
-int styleable ConstraintSet_android_layout_marginRight 7
-int styleable ConstraintSet_android_layout_marginStart 8
-int styleable ConstraintSet_android_layout_marginTop 9
-int styleable ConstraintSet_android_layout_width 10
-int styleable ConstraintSet_android_maxHeight 11
-int styleable ConstraintSet_android_maxWidth 12
-int styleable ConstraintSet_android_minHeight 13
-int styleable ConstraintSet_android_minWidth 14
-int styleable ConstraintSet_android_orientation 15
-int styleable ConstraintSet_android_rotation 16
-int styleable ConstraintSet_android_rotationX 17
-int styleable ConstraintSet_android_rotationY 18
-int styleable ConstraintSet_android_scaleX 19
-int styleable ConstraintSet_android_scaleY 20
-int styleable ConstraintSet_android_transformPivotX 21
-int styleable ConstraintSet_android_transformPivotY 22
-int styleable ConstraintSet_android_translationX 23
-int styleable ConstraintSet_android_translationY 24
-int styleable ConstraintSet_android_translationZ 25
-int styleable ConstraintSet_android_visibility 26
-int styleable ConstraintSet_barrierAllowsGoneWidgets 27
-int styleable ConstraintSet_barrierDirection 28
-int styleable ConstraintSet_chainUseRtl 29
-int styleable ConstraintSet_constraint_referenced_ids 30
-int styleable ConstraintSet_layout_constrainedHeight 31
-int styleable ConstraintSet_layout_constrainedWidth 32
-int styleable ConstraintSet_layout_constraintBaseline_creator 33
-int styleable ConstraintSet_layout_constraintBaseline_toBaselineOf 34
-int styleable ConstraintSet_layout_constraintBottom_creator 35
-int styleable ConstraintSet_layout_constraintBottom_toBottomOf 36
-int styleable ConstraintSet_layout_constraintBottom_toTopOf 37
-int styleable ConstraintSet_layout_constraintCircle 38
-int styleable ConstraintSet_layout_constraintCircleAngle 39
-int styleable ConstraintSet_layout_constraintCircleRadius 40
-int styleable ConstraintSet_layout_constraintDimensionRatio 41
-int styleable ConstraintSet_layout_constraintEnd_toEndOf 42
-int styleable ConstraintSet_layout_constraintEnd_toStartOf 43
-int styleable ConstraintSet_layout_constraintGuide_begin 44
-int styleable ConstraintSet_layout_constraintGuide_end 45
-int styleable ConstraintSet_layout_constraintGuide_percent 46
-int styleable ConstraintSet_layout_constraintHeight_default 47
-int styleable ConstraintSet_layout_constraintHeight_max 48
-int styleable ConstraintSet_layout_constraintHeight_min 49
-int styleable ConstraintSet_layout_constraintHeight_percent 50
-int styleable ConstraintSet_layout_constraintHorizontal_bias 51
-int styleable ConstraintSet_layout_constraintHorizontal_chainStyle 52
-int styleable ConstraintSet_layout_constraintHorizontal_weight 53
-int styleable ConstraintSet_layout_constraintLeft_creator 54
-int styleable ConstraintSet_layout_constraintLeft_toLeftOf 55
-int styleable ConstraintSet_layout_constraintLeft_toRightOf 56
-int styleable ConstraintSet_layout_constraintRight_creator 57
-int styleable ConstraintSet_layout_constraintRight_toLeftOf 58
-int styleable ConstraintSet_layout_constraintRight_toRightOf 59
-int styleable ConstraintSet_layout_constraintStart_toEndOf 60
-int styleable ConstraintSet_layout_constraintStart_toStartOf 61
-int styleable ConstraintSet_layout_constraintTop_creator 62
-int styleable ConstraintSet_layout_constraintTop_toBottomOf 63
-int styleable ConstraintSet_layout_constraintTop_toTopOf 64
-int styleable ConstraintSet_layout_constraintVertical_bias 65
-int styleable ConstraintSet_layout_constraintVertical_chainStyle 66
-int styleable ConstraintSet_layout_constraintVertical_weight 67
-int styleable ConstraintSet_layout_constraintWidth_default 68
-int styleable ConstraintSet_layout_constraintWidth_max 69
-int styleable ConstraintSet_layout_constraintWidth_min 70
-int styleable ConstraintSet_layout_constraintWidth_percent 71
-int styleable ConstraintSet_layout_editor_absoluteX 72
-int styleable ConstraintSet_layout_editor_absoluteY 73
-int styleable ConstraintSet_layout_goneMarginBottom 74
-int styleable ConstraintSet_layout_goneMarginEnd 75
-int styleable ConstraintSet_layout_goneMarginLeft 76
-int styleable ConstraintSet_layout_goneMarginRight 77
-int styleable ConstraintSet_layout_goneMarginStart 78
-int styleable ConstraintSet_layout_goneMarginTop 79
-int[] styleable CoordinatorLayout { 0x7f04009b, 0x7f040130 }
-int styleable CoordinatorLayout_keylines 0
-int styleable CoordinatorLayout_statusBarBackground 1
-int[] styleable CoordinatorLayout_Layout { 0x10100b3, 0x7f04009e, 0x7f04009f, 0x7f0400a0, 0x7f0400ca, 0x7f0400d3, 0x7f0400d4 }
-int styleable CoordinatorLayout_Layout_android_layout_gravity 0
-int styleable CoordinatorLayout_Layout_layout_anchor 1
-int styleable CoordinatorLayout_Layout_layout_anchorGravity 2
-int styleable CoordinatorLayout_Layout_layout_behavior 3
-int styleable CoordinatorLayout_Layout_layout_dodgeInsetEdges 4
-int styleable CoordinatorLayout_Layout_layout_insetEdge 5
-int styleable CoordinatorLayout_Layout_layout_keyline 6
-int[] styleable DrawerArrowToggle { 0x7f04002c, 0x7f04002d, 0x7f04003a, 0x7f040051, 0x7f040073, 0x7f04008c, 0x7f04012a, 0x7f040148 }
-int styleable DrawerArrowToggle_arrowHeadLength 0
-int styleable DrawerArrowToggle_arrowShaftLength 1
-int styleable DrawerArrowToggle_barLength 2
-int styleable DrawerArrowToggle_color 3
-int styleable DrawerArrowToggle_drawableSize 4
-int styleable DrawerArrowToggle_gapBetweenBars 5
-int styleable DrawerArrowToggle_spinBars 6
-int styleable DrawerArrowToggle_thickness 7
-int[] styleable FontFamily { 0x7f040083, 0x7f040084, 0x7f040085, 0x7f040086, 0x7f040087, 0x7f040088 }
-int styleable FontFamily_fontProviderAuthority 0
-int styleable FontFamily_fontProviderCerts 1
-int styleable FontFamily_fontProviderFetchStrategy 2
-int styleable FontFamily_fontProviderFetchTimeout 3
-int styleable FontFamily_fontProviderPackage 4
-int styleable FontFamily_fontProviderQuery 5
-int[] styleable FontFamilyFont { 0x1010532, 0x101053f, 0x1010570, 0x1010533, 0x101056f, 0x7f040081, 0x7f040089, 0x7f04008a, 0x7f04008b, 0x7f040163 }
-int styleable FontFamilyFont_android_font 0
-int styleable FontFamilyFont_android_fontStyle 1
-int styleable FontFamilyFont_android_fontVariationSettings 2
-int styleable FontFamilyFont_android_fontWeight 3
-int styleable FontFamilyFont_android_ttcIndex 4
-int styleable FontFamilyFont_font 5
-int styleable FontFamilyFont_fontStyle 6
-int styleable FontFamilyFont_fontVariationSettings 7
-int styleable FontFamilyFont_fontWeight 8
-int styleable FontFamilyFont_ttcIndex 9
-int[] styleable GenericDraweeHierarchy { 0x7f040023, 0x7f040035, 0x7f04007d, 0x7f04007e, 0x7f04007f, 0x7f0400f9, 0x7f040101, 0x7f040102, 0x7f040107, 0x7f040108, 0x7f040109, 0x7f04010a, 0x7f040113, 0x7f040114, 0x7f040115, 0x7f040116, 0x7f040117, 0x7f040118, 0x7f040119, 0x7f04011a, 0x7f04011b, 0x7f04011c, 0x7f04011d, 0x7f04011e, 0x7f040164 }
-int styleable GenericDraweeHierarchy_actualImageScaleType 0
-int styleable GenericDraweeHierarchy_backgroundImage 1
-int styleable GenericDraweeHierarchy_fadeDuration 2
-int styleable GenericDraweeHierarchy_failureImage 3
-int styleable GenericDraweeHierarchy_failureImageScaleType 4
-int styleable GenericDraweeHierarchy_overlayImage 5
-int styleable GenericDraweeHierarchy_placeholderImage 6
-int styleable GenericDraweeHierarchy_placeholderImageScaleType 7
-int styleable GenericDraweeHierarchy_pressedStateOverlayImage 8
-int styleable GenericDraweeHierarchy_progressBarAutoRotateInterval 9
-int styleable GenericDraweeHierarchy_progressBarImage 10
-int styleable GenericDraweeHierarchy_progressBarImageScaleType 11
-int styleable GenericDraweeHierarchy_retryImage 12
-int styleable GenericDraweeHierarchy_retryImageScaleType 13
-int styleable GenericDraweeHierarchy_roundAsCircle 14
-int styleable GenericDraweeHierarchy_roundBottomLeft 15
-int styleable GenericDraweeHierarchy_roundBottomRight 16
-int styleable GenericDraweeHierarchy_roundTopLeft 17
-int styleable GenericDraweeHierarchy_roundTopRight 18
-int styleable GenericDraweeHierarchy_roundWithOverlayColor 19
-int styleable GenericDraweeHierarchy_roundedCornerRadius 20
-int styleable GenericDraweeHierarchy_roundingBorderColor 21
-int styleable GenericDraweeHierarchy_roundingBorderPadding 22
-int styleable GenericDraweeHierarchy_roundingBorderWidth 23
-int styleable GenericDraweeHierarchy_viewAspectRatio 24
-int[] styleable GradientColor { 0x101020b, 0x10101a2, 0x10101a3, 0x101019e, 0x1010512, 0x1010513, 0x10101a4, 0x101019d, 0x1010510, 0x1010511, 0x1010201, 0x10101a1 }
-int styleable GradientColor_android_centerColor 0
-int styleable GradientColor_android_centerX 1
-int styleable GradientColor_android_centerY 2
-int styleable GradientColor_android_endColor 3
-int styleable GradientColor_android_endX 4
-int styleable GradientColor_android_endY 5
-int styleable GradientColor_android_gradientRadius 6
-int styleable GradientColor_android_startColor 7
-int styleable GradientColor_android_startX 8
-int styleable GradientColor_android_startY 9
-int styleable GradientColor_android_tileMode 10
-int styleable GradientColor_android_type 11
-int[] styleable GradientColorItem { 0x10101a5, 0x1010514 }
-int styleable GradientColorItem_android_color 0
-int styleable GradientColorItem_android_offset 1
-int[] styleable LinearConstraintLayout { 0x10100c4 }
-int styleable LinearConstraintLayout_android_orientation 0
-int[] styleable LinearLayoutCompat { 0x1010126, 0x1010127, 0x10100af, 0x10100c4, 0x1010128, 0x7f04006f, 0x7f040071, 0x7f0400e5, 0x7f040126 }
-int styleable LinearLayoutCompat_android_baselineAligned 0
-int styleable LinearLayoutCompat_android_baselineAlignedChildIndex 1
-int styleable LinearLayoutCompat_android_gravity 2
-int styleable LinearLayoutCompat_android_orientation 3
-int styleable LinearLayoutCompat_android_weightSum 4
-int styleable LinearLayoutCompat_divider 5
-int styleable LinearLayoutCompat_dividerPadding 6
-int styleable LinearLayoutCompat_measureWithLargestChild 7
-int styleable LinearLayoutCompat_showDividers 8
-int[] styleable LinearLayoutCompat_Layout { 0x10100b3, 0x10100f5, 0x1010181, 0x10100f4 }
-int styleable LinearLayoutCompat_Layout_android_layout_gravity 0
-int styleable LinearLayoutCompat_Layout_android_layout_height 1
-int styleable LinearLayoutCompat_Layout_android_layout_weight 2
-int styleable LinearLayoutCompat_Layout_android_layout_width 3
-int[] styleable ListPopupWindow { 0x10102ac, 0x10102ad }
-int styleable ListPopupWindow_android_dropDownHorizontalOffset 0
-int styleable ListPopupWindow_android_dropDownVerticalOffset 1
-int[] styleable MenuGroup { 0x10101e0, 0x101000e, 0x10100d0, 0x10101de, 0x10101df, 0x1010194 }
-int styleable MenuGroup_android_checkableBehavior 0
-int styleable MenuGroup_android_enabled 1
-int styleable MenuGroup_android_id 2
-int styleable MenuGroup_android_menuCategory 3
-int styleable MenuGroup_android_orderInCategory 4
-int styleable MenuGroup_android_visible 5
-int[] styleable MenuItem { 0x7f04000e, 0x7f040020, 0x7f040021, 0x7f04002b, 0x10101e3, 0x10101e5, 0x1010106, 0x101000e, 0x1010002, 0x10100d0, 0x10101de, 0x10101e4, 0x101026f, 0x10101df, 0x10101e1, 0x10101e2, 0x1010194, 0x7f040060, 0x7f040093, 0x7f040094, 0x7f0400f7, 0x7f040125, 0x7f04015f }
-int styleable MenuItem_actionLayout 0
-int styleable MenuItem_actionProviderClass 1
-int styleable MenuItem_actionViewClass 2
-int styleable MenuItem_alphabeticModifiers 3
-int styleable MenuItem_android_alphabeticShortcut 4
-int styleable MenuItem_android_checkable 5
-int styleable MenuItem_android_checked 6
-int styleable MenuItem_android_enabled 7
-int styleable MenuItem_android_icon 8
-int styleable MenuItem_android_id 9
-int styleable MenuItem_android_menuCategory 10
-int styleable MenuItem_android_numericShortcut 11
-int styleable MenuItem_android_onClick 12
-int styleable MenuItem_android_orderInCategory 13
-int styleable MenuItem_android_title 14
-int styleable MenuItem_android_titleCondensed 15
-int styleable MenuItem_android_visible 16
-int styleable MenuItem_contentDescription 17
-int styleable MenuItem_iconTint 18
-int styleable MenuItem_iconTintMode 19
-int styleable MenuItem_numericModifiers 20
-int styleable MenuItem_showAsAction 21
-int styleable MenuItem_tooltipText 22
-int[] styleable MenuView { 0x101012f, 0x101012d, 0x1010130, 0x1010131, 0x101012c, 0x101012e, 0x10100ae, 0x7f040106, 0x7f040131 }
-int styleable MenuView_android_headerBackground 0
-int styleable MenuView_android_horizontalDivider 1
-int styleable MenuView_android_itemBackground 2
-int styleable MenuView_android_itemIconDisabledAlpha 3
-int styleable MenuView_android_itemTextAppearance 4
-int styleable MenuView_android_verticalDivider 5
-int styleable MenuView_android_windowAnimationStyle 6
-int styleable MenuView_preserveIconSpacing 7
-int styleable MenuView_subMenuArrow 8
-int[] styleable MogoImageView { 0x7f0400e6, 0x7f0400e7, 0x7f0400e8, 0x7f0400e9, 0x7f0400ea, 0x7f0400eb, 0x7f0400ec, 0x7f0400ed, 0x7f0400ee, 0x7f0400ef, 0x7f0400f0, 0x7f0400f1, 0x7f0400f2 }
-int styleable MogoImageView_miv_blurRadius 0
-int styleable MogoImageView_miv_borderColor 1
-int styleable MogoImageView_miv_bottomLeftRadius 2
-int styleable MogoImageView_miv_bottomRightRadius 3
-int styleable MogoImageView_miv_failureHolder 4
-int styleable MogoImageView_miv_isBlur 5
-int styleable MogoImageView_miv_overlayImageId 6
-int styleable MogoImageView_miv_placeHolder 7
-int styleable MogoImageView_miv_radius 8
-int styleable MogoImageView_miv_shape 9
-int styleable MogoImageView_miv_shapeBorderWidth 10
-int styleable MogoImageView_miv_topLeftRadius 11
-int styleable MogoImageView_miv_topRightRadius 12
-int[] styleable PopupWindow { 0x10102c9, 0x1010176, 0x7f0400f8 }
-int styleable PopupWindow_android_popupAnimationStyle 0
-int styleable PopupWindow_android_popupBackground 1
-int styleable PopupWindow_overlapAnchor 2
-int[] styleable PopupWindowBackgroundState { 0x7f04012f }
-int styleable PopupWindowBackgroundState_state_above_anchor 0
-int[] styleable RecycleListView { 0x7f0400fa, 0x7f0400fd }
-int styleable RecycleListView_paddingBottomNoButtons 0
-int styleable RecycleListView_paddingTopNoTitle 1
-int[] styleable SearchView { 0x10100da, 0x1010264, 0x1010220, 0x101011f, 0x7f04004d, 0x7f04005c, 0x7f04006a, 0x7f04008d, 0x7f040095, 0x7f04009d, 0x7f04010d, 0x7f04010e, 0x7f04011f, 0x7f040120, 0x7f040132, 0x7f040137, 0x7f040166 }
-int styleable SearchView_android_focusable 0
-int styleable SearchView_android_imeOptions 1
-int styleable SearchView_android_inputType 2
-int styleable SearchView_android_maxWidth 3
-int styleable SearchView_closeIcon 4
-int styleable SearchView_commitIcon 5
-int styleable SearchView_defaultQueryHint 6
-int styleable SearchView_goIcon 7
-int styleable SearchView_iconifiedByDefault 8
-int styleable SearchView_layout 9
-int styleable SearchView_queryBackground 10
-int styleable SearchView_queryHint 11
-int styleable SearchView_searchHintIcon 12
-int styleable SearchView_searchIcon 13
-int styleable SearchView_submitBackground 14
-int styleable SearchView_suggestionRowLayout 15
-int styleable SearchView_voiceIcon 16
-int[] styleable SimpleDraweeView { 0x7f040024 }
-int styleable SimpleDraweeView_actualImageUri 0
-int[] styleable Spinner { 0x1010262, 0x10100b2, 0x1010176, 0x101017b, 0x7f040104 }
-int styleable Spinner_android_dropDownWidth 0
-int styleable Spinner_android_entries 1
-int styleable Spinner_android_popupBackground 2
-int styleable Spinner_android_prompt 3
-int styleable Spinner_popupTheme 4
-int[] styleable StateListDrawable { 0x1010196, 0x101011c, 0x101030c, 0x101030d, 0x1010195, 0x1010194 }
-int styleable StateListDrawable_android_constantSize 0
-int styleable StateListDrawable_android_dither 1
-int styleable StateListDrawable_android_enterFadeDuration 2
-int styleable StateListDrawable_android_exitFadeDuration 3
-int styleable StateListDrawable_android_variablePadding 4
-int styleable StateListDrawable_android_visible 5
-int[] styleable StateListDrawableItem { 0x1010199 }
-int styleable StateListDrawableItem_android_drawable 0
-int[] styleable SwitchCompat { 0x1010125, 0x1010124, 0x1010142, 0x7f040127, 0x7f04012d, 0x7f040138, 0x7f040139, 0x7f04013b, 0x7f040149, 0x7f04014a, 0x7f04014b, 0x7f040160, 0x7f040161, 0x7f040162 }
-int styleable SwitchCompat_android_textOff 0
-int styleable SwitchCompat_android_textOn 1
-int styleable SwitchCompat_android_thumb 2
-int styleable SwitchCompat_showText 3
-int styleable SwitchCompat_splitTrack 4
-int styleable SwitchCompat_switchMinWidth 5
-int styleable SwitchCompat_switchPadding 6
-int styleable SwitchCompat_switchTextAppearance 7
-int styleable SwitchCompat_thumbTextPadding 8
-int styleable SwitchCompat_thumbTint 9
-int styleable SwitchCompat_thumbTintMode 10
-int styleable SwitchCompat_track 11
-int styleable SwitchCompat_trackTint 12
-int styleable SwitchCompat_trackTintMode 13
-int[] styleable TextAppearance { 0x10103ac, 0x1010161, 0x1010162, 0x1010163, 0x1010164, 0x1010098, 0x101009a, 0x101009b, 0x1010095, 0x1010097, 0x1010096, 0x7f040082, 0x7f04013c }
-int styleable TextAppearance_android_fontFamily 0
-int styleable TextAppearance_android_shadowColor 1
-int styleable TextAppearance_android_shadowDx 2
-int styleable TextAppearance_android_shadowDy 3
-int styleable TextAppearance_android_shadowRadius 4
-int styleable TextAppearance_android_textColor 5
-int styleable TextAppearance_android_textColorHint 6
-int styleable TextAppearance_android_textColorLink 7
-int styleable TextAppearance_android_textSize 8
-int styleable TextAppearance_android_textStyle 9
-int styleable TextAppearance_android_typeface 10
-int styleable TextAppearance_fontFamily 11
-int styleable TextAppearance_textAllCaps 12
-int[] styleable Toolbar { 0x10100af, 0x1010140, 0x7f040043, 0x7f04004f, 0x7f040050, 0x7f040061, 0x7f040062, 0x7f040063, 0x7f040064, 0x7f040065, 0x7f040066, 0x7f0400e2, 0x7f0400e3, 0x7f0400e4, 0x7f0400f4, 0x7f0400f5, 0x7f040104, 0x7f040133, 0x7f040134, 0x7f040135, 0x7f040151, 0x7f040152, 0x7f040153, 0x7f040154, 0x7f040155, 0x7f040156, 0x7f040157, 0x7f040158, 0x7f040159 }
-int styleable Toolbar_android_gravity 0
-int styleable Toolbar_android_minHeight 1
-int styleable Toolbar_buttonGravity 2
-int styleable Toolbar_collapseContentDescription 3
-int styleable Toolbar_collapseIcon 4
-int styleable Toolbar_contentInsetEnd 5
-int styleable Toolbar_contentInsetEndWithActions 6
-int styleable Toolbar_contentInsetLeft 7
-int styleable Toolbar_contentInsetRight 8
-int styleable Toolbar_contentInsetStart 9
-int styleable Toolbar_contentInsetStartWithNavigation 10
-int styleable Toolbar_logo 11
-int styleable Toolbar_logoDescription 12
-int styleable Toolbar_maxButtonHeight 13
-int styleable Toolbar_navigationContentDescription 14
-int styleable Toolbar_navigationIcon 15
-int styleable Toolbar_popupTheme 16
-int styleable Toolbar_subtitle 17
-int styleable Toolbar_subtitleTextAppearance 18
-int styleable Toolbar_subtitleTextColor 19
-int styleable Toolbar_title 20
-int styleable Toolbar_titleMargin 21
-int styleable Toolbar_titleMarginBottom 22
-int styleable Toolbar_titleMarginEnd 23
-int styleable Toolbar_titleMarginStart 24
-int styleable Toolbar_titleMarginTop 25
-int styleable Toolbar_titleMargins 26
-int styleable Toolbar_titleTextAppearance 27
-int styleable Toolbar_titleTextColor 28
-int[] styleable View { 0x10100da, 0x1010000, 0x7f0400fb, 0x7f0400fc, 0x7f040147 }
-int styleable View_android_focusable 0
-int styleable View_android_theme 1
-int styleable View_paddingEnd 2
-int styleable View_paddingStart 3
-int styleable View_theme 4
-int[] styleable ViewBackgroundHelper { 0x10100d4, 0x7f040038, 0x7f040039 }
-int styleable ViewBackgroundHelper_android_background 0
-int styleable ViewBackgroundHelper_backgroundTint 1
-int styleable ViewBackgroundHelper_backgroundTintMode 2
-int[] styleable ViewStubCompat { 0x10100d0, 0x10100f3, 0x10100f2 }
-int styleable ViewStubCompat_android_id 0
-int styleable ViewStubCompat_android_inflatedId 1
-int styleable ViewStubCompat_android_layout 2
diff --git a/demo/tanlu-module/build/outputs/logs/manifest-merger-debug-report.txt b/demo/tanlu-module/build/outputs/logs/manifest-merger-debug-report.txt
deleted file mode 100644
index 666fa994ad..0000000000
--- a/demo/tanlu-module/build/outputs/logs/manifest-merger-debug-report.txt
+++ /dev/null
@@ -1,31 +0,0 @@
--- Merging decision tree log ---
-manifest
-ADDED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:1-2:34
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:1-2:34
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:1-2:34
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:1-2:34
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:1-2:34
- package
- ADDED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:2:5-31
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- android:versionCode
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- ADDED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:1-2:34
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- xmlns:android
- ADDED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml:1:11-69
-uses-sdk
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml reason: use-sdk injection requested
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
-INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- android:targetSdkVersion
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- ADDED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- android:minSdkVersion
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- ADDED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
- INJECTED from /Users/congtaowang/Public/AndroidStudioProjects/zhidao/yycp/MogoLauncher/demo/tanlu-module/src/main/AndroidManifest.xml
diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle
index c91181acd7..9064279c30 100644
--- a/foudations/mogo-commons/build.gradle
+++ b/foudations/mogo-commons/build.gradle
@@ -36,10 +36,14 @@ dependencies {
api rootProject.ext.dependencies.analytics
implementation rootProject.ext.dependencies.arouter
annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ implementation rootProject.ext.dependencies.rxjava
+ implementation rootProject.ext.dependencies.accountsdk
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogoutils
+ compileOnly rootProject.ext.dependencies.mogomapapi
} else {
implementation project(":foudations:mogo-utils")
+ compileOnly project(":libraries:mogo-map-api")
}
}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java
index c858cac83c..da9686570a 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java
@@ -1,12 +1,32 @@
package com.mogo.commons;
import android.app.Application;
+import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
+import com.bumptech.glide.load.model.GlideUrl;
import com.elegant.analytics.Analytics;
import com.elegant.analytics.AnalyticsConfig;
import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.AllAllowedHostnameVerifier;
+import com.mogo.commons.network.Constants;
+import com.mogo.commons.network.ParamsUtil;
+import com.mogo.commons.network.X509TrustManagerImpl;
+import com.mogo.commons.storage.SpStorage;
import com.mogo.utils.TipToast;
+import com.mogo.utils.glide.GlideApp;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.NetConfig;
+import com.zhidao.account.sdk.AccountClientManager;
+import com.zhidao.account.sdk.callback.TicketInfoCallback;
+
+import java.io.InputStream;
+import java.security.SecureRandom;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+
+import okhttp3.OkHttpClient;
/**
* @author congtaowang
@@ -16,6 +36,8 @@ import com.mogo.utils.TipToast;
*/
public class AbsMogoApplication extends Application {
+ private static final String TAG = "AbsMogoApplication";
+
private static Application sApp;
public static Application getApp() {
@@ -48,6 +70,50 @@ public class AbsMogoApplication extends Application {
// 初始化toast
TipToast.init( sApp, null );
+
+ initNetConfig();
+// initAccountSdk();
}
+ private static void initNetConfig() {
+
+ try {
+ SSLContext sc = getSslContext();
+ NetConfig.instance().setSslContext( sc );
+ } catch ( Exception e ) {
+ }
+
+ NetConfig.instance().setSignaturePrefix( Constants.SIGN_PREFIX )
+ .setPublicParams( ParamsUtil.getStaticParams() )
+ .setHostnameVerifier( new AllAllowedHostnameVerifier() )
+ .setLoggable( DebugConfig.isDebug() );
+ }
+
+ /**
+ * 忽略 https 验证
+ *
+ * @return
+ * @throws Exception
+ */
+ private static SSLContext getSslContext() throws Exception {
+ SSLContext sc = null;
+ sc = SSLContext.getInstance( "SSL" );
+ sc.init( null, new TrustManager[]{new X509TrustManagerImpl()}, new SecureRandom() );
+ return sc;
+ }
+
+ private static void initAccountSdk() {
+ AccountClientManager.init( sApp, 1, "os2.0-launcher" );
+ AccountClientManager.getTicket( new TicketInfoCallback() {
+ @Override
+ public void onSuccess( String ticket ) {
+ SpStorage.setTicket( ticket );
+ }
+
+ @Override
+ public void onFailure( int code, String msg ) {
+ Logger.w( TAG, "request ticket error code = %d, msg = %s", code, msg );
+ }
+ } );
+ }
}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/analytics/AnalyticsUtils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/analytics/AnalyticsUtils.java
index 9471ea7619..599f0271ae 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/analytics/AnalyticsUtils.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/analytics/AnalyticsUtils.java
@@ -1,7 +1,7 @@
package com.mogo.commons.analytics;
import com.elegant.analytics.Analytics;
-import com.mogo.commons.network.ParamUtils;
+import com.mogo.commons.network.ParamsUtil;
import java.util.Map;
@@ -20,7 +20,7 @@ public class AnalyticsUtils {
* @param properties 事件参数
*/
public static void track( String event, Map< String, Object > properties ) {
- Analytics.getInstance().setCustomParams( ParamUtils.getAnalyticsParameters() );
+ Analytics.getInstance().setCustomParams( ParamsUtil.getAnalyticsCustomParams() );
Analytics.getInstance().track( event, properties );
}
}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java
index e2f8337b2e..88bfc71289 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java
@@ -27,4 +27,44 @@ public class DebugConfig {
public static void setDebug( boolean sDebug ) {
DebugConfig.sDebug = sDebug;
}
+
+ /**
+ * 研发环境
+ */
+ public static final int NET_MODE_DEV = 1;
+
+ /**
+ * 测试环境
+ */
+ public static final int NET_MODE_QA = 2;
+
+ /**
+ * 生产环境
+ */
+ public static final int NET_MODE_RELEASE = 3;
+
+
+ private static int sNetMode = NET_MODE_RELEASE;
+
+ /**
+ * 获取网络环境类型
+ *
+ * @return {@link #NET_MODE_DEV}
+ * {@link #NET_MODE_QA}
+ * {@link #NET_MODE_RELEASE}
+ */
+ public static int getNetMode() {
+ return sNetMode;
+ }
+
+ /**
+ * 设置网络环境类型
+ *
+ * @param netMode {@link #NET_MODE_DEV}
+ * {@link #NET_MODE_QA}
+ * {@link #NET_MODE_RELEASE}
+ */
+ public static void setNetMode( int netMode ) {
+ DebugConfig.sNetMode = netMode;
+ }
}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Constants.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Constants.java
new file mode 100644
index 0000000000..9597a405b2
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Constants.java
@@ -0,0 +1,27 @@
+package com.mogo.commons.network;
+
+public interface Constants {
+
+ String UTF_8 = "UTF-8";
+
+ String KEY_PHONE = "user_phone";
+ String KEY_TOKEN = "user_token ";
+ String KEY_USER_ID = "userId";
+ String KEY_DISPLAY_NAME = "displayName";
+ String KEY_SN = "sn";
+
+ String OS = "Android-Car";
+
+ String KEY_SOURCE = ServerParam.SOURCE;
+ String DEFAULT_SOURCE = "appLauncher";
+
+ // 车机已绑定状态
+ int STATUS_BIND = 1;
+
+ String KEY_TICKET = "ticket";
+
+ /**
+ * sign,salt
+ */
+ String SIGN_PREFIX = "JGjZx6";
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/HttpParamsEx.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/HttpParamsEx.java
new file mode 100644
index 0000000000..59d3043332
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/HttpParamsEx.java
@@ -0,0 +1,27 @@
+package com.mogo.commons.network;
+
+import android.text.TextUtils;
+
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.BaseParams;
+import com.mogo.utils.network.HttpParams;
+
+
+/**
+ * Created by congtaowang on 2018/10/21.
+ */
+public class HttpParamsEx extends HttpParams {
+
+ private static final String TAG = "HttpParamsEx";
+
+ @Override
+ public BaseParams put( String key, Object value ) {
+
+ if ( !TextUtils.isEmpty( key ) ) {
+ if ( value == null ) {
+ Logger.e( TAG, "%s with illegal value", key );
+ }
+ }
+ return super.put( key, value );
+ }
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/LocationHelper.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/LocationHelper.java
new file mode 100644
index 0000000000..0e7cebcdff
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/LocationHelper.java
@@ -0,0 +1,42 @@
+package com.mogo.commons.network;
+
+import com.mogo.map.location.MogoLocation;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-02
+ *
+ * 缓存当前经纬度位置,便于接口请求
+ */
+public class LocationHelper {
+
+ private static volatile LocationHelper sInstance;
+
+ private LocationHelper() {
+ }
+
+ public static LocationHelper getInstance() {
+ if ( sInstance == null ) {
+ synchronized ( LocationHelper.class ) {
+ if ( sInstance == null ) {
+ sInstance = new LocationHelper();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ public synchronized void release() {
+ sInstance = null;
+ }
+
+ private MogoLocation mMogoLocation;
+
+ public MogoLocation getMogoLocation() {
+ return mMogoLocation;
+ }
+
+ public void setMogoLocation( MogoLocation mogoLocation ) {
+ this.mMogoLocation = mogoLocation;
+ }
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamUtils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamUtils.java
deleted file mode 100644
index f4544ed960..0000000000
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamUtils.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mogo.commons.network;
-
-import java.util.Map;
-
-/**
- * @author congtaowang
- * @since 2019-12-23
- *
- * 描述
- */
-public class ParamUtils {
-
- public static Map< String, Object > getAnalyticsParameters() {
- return null;
- }
-}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsProvider.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsProvider.java
new file mode 100644
index 0000000000..c09ad6d2f1
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsProvider.java
@@ -0,0 +1,72 @@
+package com.mogo.commons.network;
+
+import android.content.Context;
+
+import com.mogo.utils.CheckUtils;
+import com.mogo.utils.network.HttpParams;
+import com.mogo.utils.network.NetConfig;
+import com.mogo.utils.network.ServerParam;
+import com.mogo.utils.network.utils.SignUtil;
+
+import java.util.Map;
+import java.util.Set;
+
+public class ParamsProvider {
+
+ private static Map< String, Object > getParams( Context context ) {
+ return getParams( context, new HttpParams(), Constants.SIGN_PREFIX );
+ }
+
+ private static Map< String, Object > getParams( Context context, HttpParams httpParams, String salt ) {
+ final Map< String, Object > publicParams = NetConfig.instance().getPublicParams();
+ if ( !CheckUtils.isEmpty( publicParams ) ) {
+ for ( Map.Entry< String, Object > entry : publicParams.entrySet() ) {
+ httpParams.put( entry.getKey(), entry.getValue() );
+ }
+ }
+
+ final Map< String, Object > dynamicParams = ParamsUtil.getDynamicParams();
+ if ( !CheckUtils.isEmpty( dynamicParams ) ) {
+ for ( Map.Entry< String, Object > entry : dynamicParams.entrySet() ) {
+ httpParams.put( entry.getKey(), entry.getValue() );
+ }
+ }
+
+ httpParams.put( ServerParam.SIGNATURE, SignUtil.createSign( httpParams.getParamsMap(), salt ) );
+ return httpParams.getParamsMap();
+ }
+
+ public static final class Builder {
+ private HttpParams mHttpParams;
+ private Context mContext;
+
+ public Builder( Context context ) {
+ this.mHttpParams = new HttpParamsEx();
+ this.mContext = context;
+ }
+
+ public Builder append( String key, Object value ) {
+ mHttpParams.put( key, value );
+ return this;
+ }
+
+ public Builder append( Map< String, Object > keyValuePairs ) {
+ if ( keyValuePairs != null && !keyValuePairs.isEmpty() ) {
+ final Set< Map.Entry< String, Object > > entries = keyValuePairs.entrySet();
+ for ( Map.Entry< String, Object > entry : entries ) {
+ this.append( entry.getKey(), entry.getValue() );
+ }
+ }
+ return this;
+ }
+
+ public Map< String, Object > build() {
+ return build( Constants.SIGN_PREFIX );
+ }
+
+ public Map< String, Object > build( String salt ) {
+ return getParams( mContext, mHttpParams, salt );
+ }
+ }
+
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java
new file mode 100644
index 0000000000..79ca7b4f74
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java
@@ -0,0 +1,155 @@
+package com.mogo.commons.network;
+
+import android.os.Build;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.collection.ArrayMap;
+
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.storage.SpStorage;
+import com.mogo.map.location.MogoLocation;
+import com.mogo.utils.CommonUtils;
+import com.mogo.utils.DeviceIdUtils;
+import com.mogo.utils.WindowUtils;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.zhidao.auto.platform.util.DeviceUtil;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Map;
+import java.util.Set;
+
+import okhttp3.RequestBody;
+
+public class ParamsUtil {
+
+ private static final String TAG = "ParamsUtil";
+
+ public static Map< String, Object > getDynamicParams() {
+ Map< String, Object > params = new ArrayMap();
+
+ final MogoLocation location = LocationHelper.getInstance().getMogoLocation();
+ if ( location != null ) {
+ params.put( ServerParam.CITY_CODE, location.getCityCode() );
+ params.put( ServerParam.AD_CODE, location.getAdCode() );
+ params.put( ServerParam.LAT, location.getLatitude() );
+ params.put( ServerParam.LNG, location.getLongitude() );
+ }
+ params.put( ServerParam.NET_TYPE, CommonUtils.getNetworkType( AbsMogoApplication.getApp() ) );
+ params.put( ServerParam.CELL_ID, Utils.getCellId( AbsMogoApplication.getApp() ) );
+
+ params.put( ServerParam.DISPLAY_ID, DeviceUtil.getSystemVersion() );
+ params.put( ServerParam.SN, Utils.getSn() );
+ params.put( ServerParam.TICKET, SpStorage.getTicket() );
+
+ return params;
+ }
+
+ private static final Map< String, Object > STATIC_PARAMS = new ArrayMap<>();
+
+ static {
+ STATIC_PARAMS.put( ServerParam.BRAND, Build.BRAND );
+ STATIC_PARAMS.put( ServerParam.MANUFACTURER, Build.MANUFACTURER );
+ STATIC_PARAMS.put( ServerParam.MODEL, Build.MODEL );
+ STATIC_PARAMS.put( ServerParam.PRODUCT, Build.PRODUCT );
+ STATIC_PARAMS.put( ServerParam.OS, Constants.OS );
+ STATIC_PARAMS.put( ServerParam.OS_VERSION, Build.VERSION.RELEASE );
+ STATIC_PARAMS.put( ServerParam.MOBILE_MODEL, CommonUtils.getModel() );
+ STATIC_PARAMS.put( ServerParam.VERSION_CODE, CommonUtils.getVersionCode( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.VERSION_NAME, CommonUtils.getVersionName( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.SCREEN_PIXELS, WindowUtils.getScreenPixels( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.ANDROID_ID, CommonUtils.getAndroidID( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.DEVICE_ID, DeviceIdUtils.getDeviceId( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.IMEI, CommonUtils.getIMEI( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.IMSI, CommonUtils.getIMSI( AbsMogoApplication.getApp() ) );
+ STATIC_PARAMS.put( ServerParam.END_POINT, ServerParam.END_POINT_CAR );
+ }
+
+ public static Map< String, Object > getStaticParams() {
+ return STATIC_PARAMS;
+ }
+
+ public static Map< String, Object > getAnalyticsCustomParams() {
+ Map< String, Object > map = new ArrayMap<>();
+ map.put( "debug", DebugConfig.isDebug() ? 1 : 0 );
+ return map;
+ }
+
+ public static RequestBody convert( Map< String, Object > map ) {
+ String json = GsonUtil.getGson().toJson( map );
+ Logger.d( TAG, "request params: %s", json );
+ RequestBody requestBody = RequestBody.create( okhttp3.MediaType.parse( "application/json; charset=utf-8" ), json );
+ return requestBody;
+ }
+
+ /**
+ * post 请求only
+ *
+ * @param url 地址
+ * @param params 参数 (公共+业务+签名)
+ * @param businessParams query 串中不需要保留的参数,一般为业务参数
+ * @return
+ */
+ public static String toQueryUrl( @NonNull String url, Map< String, Object > params, Map< String, Object > businessParams ) {
+
+ if ( TextUtils.isEmpty( url ) ) {
+ return url;
+ }
+
+ params = diff( params, businessParams );
+ if ( params == null || params.isEmpty() ) {
+ return url;
+ }
+ final Set< String > keys = params.keySet();
+ StringBuilder builder = new StringBuilder();
+ for ( String key : keys ) {
+ if ( TextUtils.isEmpty( key ) ) {
+ Logger.w( TAG, "key is illegal" );
+ continue;
+ }
+
+ final Object value = params.get( key );
+ if ( value == null ) {
+ Logger.w( TAG, "%s - value is illegal", key );
+ continue;
+ }
+ String targetValue = value.toString();
+ try {
+ targetValue = URLEncoder.encode( targetValue, "utf-8" );
+ } catch ( UnsupportedEncodingException e ) {
+ targetValue = value.toString();
+ }
+ builder.append( key ).append( "=" ).append( targetValue ).append( "&" );
+ }
+ String queryString = builder.toString();
+ if ( queryString.endsWith( "&" ) ) {
+ queryString = queryString.substring( 0, queryString.length() - 1 );
+ }
+
+ if ( !url.endsWith( "?" ) ) {
+ url += "?";
+ }
+ return url + queryString;
+ }
+
+ /**
+ * @param parent 全部参数
+ * @param child 业务参数
+ * @return
+ */
+ public static Map< String, Object > diff( Map< String, Object > parent, Map< String, Object > child ) {
+ if ( parent == null || parent.isEmpty() || child == null || child.isEmpty() ) {
+ return parent;
+ }
+ for ( String key : child.keySet() ) {
+ if ( TextUtils.isEmpty( key ) || TextUtils.equals( "extra_id", key ) ) {
+ continue;
+ }
+ parent.remove( key );
+ }
+ return parent;
+ }
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ServerParam.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ServerParam.java
new file mode 100644
index 0000000000..b7f699f297
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ServerParam.java
@@ -0,0 +1,45 @@
+package com.mogo.commons.network;
+
+class ServerParam {
+
+ public static final String LAT = "lat";
+ public static final String LNG = "lng";
+ public static final String CITY_CODE = "cityCode";
+ public static final String AD_CODE = "adCode";
+ public static final String SELECTED_AD_CODE = "selectedAdCode";
+
+ // 用户名
+ public static final String DISPLAY_NAME = "displayName";
+
+ public static final String OS = "os";
+ public static final String BRAND = "brand";
+ public static final String MANUFACTURER = "manufacturer";
+ public static final String MODEL = "model";
+ public static final String OS_VERSION = "osVersion";
+ public static final String PRODUCT = "product";
+ // 系统版本号
+ public static final String DISPLAY_ID = "displayId";
+
+ public static final String MOBILE_MODEL = "hardWareModel";
+ public static final String CELL_ID = "cellId";
+ public static final String IMEI = "imei";
+ public static final String IMSI = "imsi";
+ public static final String SOURCE = "source";
+ public static final String NET_TYPE = "netType";
+ public static final String VERSION_CODE = "appVersionCode";
+ public static final String VERSION_NAME = "appVersion";
+ public static final String SCREEN_PIXELS = "pixels";
+ public static final String ANDROID_ID = "androidId";
+ public static final String DEVICE_ID = "deviceId";
+ public static final String SN = "sn";
+ public static final String CHANNEL = "channel";
+
+ public static final String USER_ID = "userId";
+ public static final String FILE = "file";
+ public static final String END_POINT = "endPoint";
+ public static final String END_POINT_CAR = "CAR";
+
+ public static final String PHONE = "phone";
+ public static final String TICKET = "ticket";
+
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
new file mode 100644
index 0000000000..819701d8b4
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
@@ -0,0 +1,80 @@
+package com.mogo.commons.network;
+
+import com.mogo.commons.data.BaseData;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.mogo.utils.network.utils.Util;
+
+import io.reactivex.Observer;
+import io.reactivex.disposables.Disposable;
+
+
+/**
+ * Created by congtaowang on 2018/10/14.
+ */
+public abstract class SubscribeImpl< T extends BaseData > implements Observer< T > {
+
+ protected final RequestOptions mRequestOptions;
+
+ private static final String TAG = "SubscribeImpl";
+ private boolean mAutoTipMsg = true;
+
+ public SubscribeImpl( RequestOptions requestOptions ) {
+ mRequestOptions = requestOptions;
+ }
+
+ public SubscribeImpl( RequestOptions requestOptions, boolean autoTipMsg ) {
+ this( requestOptions );
+ mAutoTipMsg = autoTipMsg;
+ }
+
+ private void onFinish() {
+ if ( !Util.checkAlive( mRequestOptions.getCaller() ) ) {
+ }
+ }
+
+ @Override
+ public void onError( Throwable e ) {
+ onFinish();
+ Logger.e( TAG, e, "occur when net request." );
+ }
+
+ @Override
+ public void onNext( T o ) {
+ if ( o != null ) {
+ if ( o.code != 0 ) {
+ onError( o.msg, o.code );
+ } else {
+ onSuccess( o );
+ }
+ } else {
+ onError( "", -1 );
+ }
+ }
+
+
+ @Override
+ public void onSubscribe( Disposable d ) {
+
+ }
+
+ @Override
+ public void onComplete() {
+ onFinish();
+ }
+
+ public void onSuccess( T o ) {
+ Logger.e( TAG, GsonUtil.jsonFromObject( o ) );
+ }
+
+ public void onError( String message, int code ) {
+ Logger.e( TAG, "%d - %s", code, message );
+ }
+
+ private static boolean isTicketUpdated = false;
+
+ private void onUpdateTicket() {
+
+ }
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java
new file mode 100644
index 0000000000..7d6ec4242a
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java
@@ -0,0 +1,79 @@
+package com.mogo.commons.network;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.CellLocation;
+import android.telephony.TelephonyManager;
+import android.telephony.cdma.CdmaCellLocation;
+import android.telephony.gsm.GsmCellLocation;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Created by congtaowang on 2018/3/29.
+ */
+
+class Utils {
+
+ public static String getCellId( Context context ) {
+ TelephonyManager tm = ( TelephonyManager ) context.getSystemService( Context.TELEPHONY_SERVICE );
+ if ( tm == null ) {
+ return "";
+ }
+
+ PackageManager pm = context.getPackageManager();
+ boolean accessCoarseLocationPermission = ( PackageManager.PERMISSION_GRANTED ==
+ pm.checkPermission( Manifest.permission.ACCESS_COARSE_LOCATION, context.getPackageName() ) );
+ boolean accessFineLocationPermission = ( PackageManager.PERMISSION_GRANTED ==
+ pm.checkPermission( Manifest.permission.ACCESS_FINE_LOCATION, context.getPackageName() ) );
+ if ( !accessCoarseLocationPermission || !accessFineLocationPermission )
+ return "noPermission";
+
+ CellLocation location = null;
+ try {
+ location = tm.getCellLocation();
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ if ( location != null ) {
+ // Gsm网络 , 联通移动的网络属于这一套
+ if ( location instanceof GsmCellLocation ) {
+ GsmCellLocation gsmLoc = ( GsmCellLocation ) location;
+ int cellid = gsmLoc.getCid();
+ return String.valueOf( cellid );
+ // Cdma网络 , 电信网络属于这一种
+ } else if ( location instanceof CdmaCellLocation ) {
+ CdmaCellLocation cdmaLoc = ( CdmaCellLocation ) location;
+ return String.valueOf( cdmaLoc.getBaseStationId() );
+ }
+ }
+ return "";
+ }
+
+
+ public static final String GET = "get";
+ public static final String GSM_SERIAL = "gsm.serial";
+ public static final String PROPERTIES = "android.os.SystemProperties";
+
+ public static String getSn() {
+ String serial = "";
+
+ try {
+ Class< ? > c = Class.forName( PROPERTIES );
+ Method get = c.getMethod( GET, String.class );
+ serial = ( String ) get.invoke( c, GSM_SERIAL );
+ } catch ( ClassNotFoundException var3 ) {
+ var3.printStackTrace();
+ } catch ( NoSuchMethodException var4 ) {
+ var4.printStackTrace();
+ } catch ( InvocationTargetException var5 ) {
+ var5.printStackTrace();
+ } catch ( IllegalAccessException var6 ) {
+ var6.printStackTrace();
+ }
+
+ return serial;
+ }
+}
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java
new file mode 100644
index 0000000000..0fbca06a32
--- /dev/null
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/storage/SpStorage.java
@@ -0,0 +1,21 @@
+package com.mogo.commons.storage;
+
+import com.mogo.commons.AbsMogoApplication;
+import com.mogo.utils.storage.SharedPrefsMgr;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * sp 公共缓存区域
+ */
+public class SpStorage {
+
+ public static String getTicket() {
+ return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "ticket" );
+ }
+
+ public static void setTicket( String ticket ) {
+ SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).putString( "ticket", ticket );
+ }
+}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java
index d0bae21535..d5d050cd7c 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RequestOptions.java
@@ -17,7 +17,7 @@ public class RequestOptions {
private Context context;
private Map< String, Object > parameter;
private CharSequence loadingMessage;
- private boolean loading;
+ private boolean loading = false;
private boolean cancelable;
private boolean cancelableOnTouchOutside;
@@ -65,7 +65,7 @@ public class RequestOptions {
/**
* Mutator for indicating whether loading message should be displayed while request is ongoing
*/
- public RequestOptions loading( boolean loading ) {
+ private RequestOptions loading( boolean loading ) {
this.loading = loading;
return this;
}
@@ -73,7 +73,7 @@ public class RequestOptions {
/**
* Mutator for loading message
*/
- public RequestOptions loadingMessage( CharSequence loadingMessage ) {
+ private RequestOptions loadingMessage( CharSequence loadingMessage ) {
this.loading = true;
this.loadingMessage = loadingMessage;
return this;
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RetrofitFactory.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RetrofitFactory.java
index 575c6bb8ea..4d079a013b 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RetrofitFactory.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/RetrofitFactory.java
@@ -6,7 +6,7 @@ import androidx.collection.ArrayMap;
import java.util.Map;
import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public final class RetrofitFactory {
@@ -21,7 +21,7 @@ public final class RetrofitFactory {
target = new Retrofit.Builder().
client(OkHttpFactory.getInstance()).
baseUrl(baseUrl).
- addCallAdapterFactory(RxJavaCallAdapterFactory.create()).
+ addCallAdapterFactory( RxJava2CallAdapterFactory.create()).
addConverterFactory(GsonConverterFactory.create()).
build();
sRpcServiceMap.put(baseUrl,target);
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/SubscriberEx.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/SubscriberEx.java
deleted file mode 100644
index 158c431852..0000000000
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/SubscriberEx.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.mogo.utils.network;
-
-
-import androidx.annotation.CallSuper;
-
-
-import com.mogo.utils.network.ui.ProgressDialog;
-import com.mogo.utils.network.utils.Util;
-
-import rx.Subscriber;
-
-
-/**
- *
- * Extension of {@link Subscriber}. For better extension and customization, client can extend this
- * class to override the default behaviours such as loading appearance on each lifecycle method
- * of network callback.
- */
-
-public abstract class SubscriberEx< T > extends Subscriber< T > {
- protected final RequestOptions mRequestOptions;
- private ProgressDialog mProgressDialog;
-
- public SubscriberEx( RequestOptions requestOptions ) {
- if ( requestOptions == null ) {
- throw new IllegalArgumentException( "RequestOptions cannot be null" );
- }
- this.mRequestOptions = requestOptions;
- if ( mRequestOptions.isLoading() ) {
- this.mProgressDialog = new ProgressDialog();
- }
- }
-
- /**
- * This method must be called if you want to use the default loading dialog in case of override.
- * Otherwise you can ignore it.
- */
- @Override
- @CallSuper
- public void onStart() {
- super.onStart();
- if ( !Util.checkAlive( mRequestOptions.getCaller() ) ) {
- unsubscribe();
- return;
- }
- if ( mRequestOptions.isLoading() && mProgressDialog != null ) {
- mProgressDialog.showLoadingDialog( mRequestOptions.getContext(), mRequestOptions.getLoadingMessage(), mRequestOptions.isCancelable(), mRequestOptions.isCancelableOnTouchOutside() );
- }
- }
-
- /**
- * This method must be called if you want to use the default loading dialog in case of override.
- * Otherwise you can ignore it.
- */
- private void onFinish() {
- if ( mRequestOptions.isLoading() && mProgressDialog != null ) {
- mProgressDialog.removeLoadingDialog();
- mProgressDialog = null;
- }
- if ( !Util.checkAlive( mRequestOptions.getCaller() ) ) {
- unsubscribe();
- }
- }
-
- /**
- * This method must be called if you want to use the default loading dialog in case of override.
- * Otherwise you can ignore it.
- */
- @Override
- @CallSuper
- public void onCompleted() {
- onFinish();
- }
-
- /**
- * This method must be called if you want to use the default loading dialog in case of override.
- * Otherwise you can ignore it.
- */
- @Override
- @CallSuper
- public void onError( Throwable e ) {
- onFinish();
- }
-
- /**
- * This method must be override if you care about the result of request.
- *
- * @param o The result of network request
- */
- @Override
- @CallSuper
- public void onNext( T o ) {
- }
-
-}
diff --git a/gradle.properties b/gradle.properties
index ac1785fca2..9db77184f3 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -17,12 +17,14 @@ org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
+
+## maven 配置
RELEASE_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-releases/
SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/
USERNAME=xintai
PASSWORD=xintai2018
# 编译模式: false - 依赖本地版本, true - 依赖 maven 版本
-RELEASE=false
+RELEASE=true
# 模块版本
DEMO_MODULE_MAP_VERSION=1.0.0-SNAPSHOT
DEMO_MODULE_MAP2_VERSION=1.0.0-SNAPSHOT
@@ -40,4 +42,6 @@ MOGO_SERVICE_API_VERSION=1.0.0-SNAPSHOT
MOGO_MODULE_APPS_VERSION=1.0.0-SNAPSHOT
MOGO_CONNECTION_VERSION=1.0.0-SNAPSHOT
MOGO_MODULE_NAVI_VERSION=1.0.0-SNAPSHOT
+MOGO_MODULE_SERVICE_VERSION=1.0.0-SNAPSHOT
+MOGO_MODULE_EXTENSIONS_VERSION=1.0.0-SNAPSHOT
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
index 45c218fb95..829c6338e5 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
@@ -10,6 +10,7 @@ import android.view.View;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.model.BitmapDescriptorFactory;
+import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MyLocationStyle;
@@ -37,7 +38,8 @@ import com.mogo.utils.logger.Logger;
*
* 代理高德导航地图
*/
-public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController,
+public class AMapNaviViewWrapper implements IMogoMapView,
+ IMogoMapUIController,
AMap.OnMarkerClickListener,
AMap.OnMapLoadedListener,
AMap.OnMapTouchListener,
@@ -45,7 +47,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController,
AMap.OnMapClickListener,
AMap.OnPolylineClickListener,
AMapNaviViewListener,
- AMapMessageListener {
+ AMapMessageListener,
+ AMap.OnCameraChangeListener {
private static final String TAG = "AMapNaviViewWrapper";
@@ -136,9 +139,13 @@ public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController,
mMapView.setOnMapTouchListener( this );
mMapView.setOnPolylineClickListener( this );
mMapView.setAMapNaviViewListener( this );
- if ( mMapView.getMap() != null ) {
- mMapView.getMap().setOnPOIClickListener( this );
- mMapView.getMap().setOnMapClickListener( this );
+ mMapView.setOnCameraChangeListener( this );
+
+ final AMap aMap = mMapView.getMap();
+ if ( aMap != null ) {
+ aMap.setOnPOIClickListener( this );
+ aMap.setOnMapClickListener( this );
+ aMap.setOnCameraChangeListener( this );
}
AMapMessageManager.getInstance().registerAMapMessageListener( this );
}
@@ -425,6 +432,11 @@ public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController,
return getMap().getScalePerPixel();
}
+ @Override
+ public float getZoomLevel() {
+ return getMap().getZoomLevel();
+ }
+
@Override
public void onNaviStarted() {
if ( checkAMapView() ) {
@@ -443,4 +455,35 @@ public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController,
public void onNaviInfoUpdat( NaviInfo naviInfo ) {
}
+
+ @Override
+ public void onCameraChange( CameraPosition cameraPosition ) {
+ }
+
+ @Override
+ public void onCameraChangeFinish( CameraPosition cameraPosition ) {
+ if ( cameraPosition != null ) {
+ MogoMapListenerHandler.getInstance().onMapChanged( ObjectUtils.fromAMap( cameraPosition.target ), cameraPosition.zoom, cameraPosition.tilt, cameraPosition.bearing );
+ }
+ }
+
+ @Override
+ public MogoLatLng getCameraNorthEastPosition() {
+ try {
+ return ObjectUtils.fromAMap( mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.northeast );
+ } catch ( Exception e ) {
+
+ }
+ return null;
+ }
+
+ @Override
+ public MogoLatLng getCameraSouthWestPosition() {
+ try {
+ return ObjectUtils.fromAMap( mMapView.getMap().getProjection().getVisibleRegion().latLngBounds.southwest );
+ } catch ( Exception e ) {
+
+ }
+ return null;
+ }
}
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
index 24479dcd0c..9b73bf10ab 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java
@@ -11,6 +11,7 @@ import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoUiSettings;
import com.mogo.map.impl.amap.marker.AMapInfoWindowAdapter;
import com.mogo.map.impl.amap.marker.AMapMarkerWrapper;
+import com.mogo.map.impl.amap.uicontroller.AMapUIController;
import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
@@ -43,6 +44,7 @@ public class AMapWrapper implements IMogoMap {
mUIcontroller = controller;
// 设置实现自定义 info window
mAMap.setInfoWindowAdapter( new AMapInfoWindowAdapter() );
+ AMapUIController.getInstance().initClient( mUIcontroller );
}
public static AMap getAMap() {
@@ -205,6 +207,18 @@ public class AMapWrapper implements IMogoMap {
}
}
+ @Override
+ public float getZoomLevel() {
+ if ( checkAMap() ) {
+ try {
+ return mAMap.getCameraPosition().zoom;
+ } catch ( Exception e ) {
+
+ }
+ }
+ return 0;
+ }
+
private boolean checkAMap() {
if ( mAMap == null ) {
Logger.e( TAG, "高德map实例为空,请检查" );
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java
index c6ab59eb1c..aaba68efe3 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java
@@ -21,11 +21,6 @@ public class AMapUIController implements IMogoMapUIController {
private IMogoMapUIController mClient;
private AMapUIController() {
- try {
- mClient = MogoMap.getInstance().getMogoMap().getUIController();
- } catch ( Exception e ) {
- Logger.e( TAG, "获取UI控制实例失败", e );
- }
}
public static AMapUIController getInstance() {
@@ -39,6 +34,10 @@ public class AMapUIController implements IMogoMapUIController {
return sInstance;
}
+ public void initClient( IMogoMapUIController client ) {
+ this.mClient = client;
+ }
+
public synchronized void release() {
sInstance = null;
}
@@ -74,7 +73,7 @@ public class AMapUIController implements IMogoMapUIController {
@Override
public void moveToCenter( MogoLatLng latLng ) {
if ( mClient != null ) {
- mClient.moveToCenter(latLng);
+ mClient.moveToCenter( latLng );
}
}
@@ -106,4 +105,28 @@ public class AMapUIController implements IMogoMapUIController {
}
return 0;
}
+
+ @Override
+ public float getZoomLevel() {
+ if ( mClient != null ) {
+ return mClient.getZoomLevel();
+ }
+ return 0;
+ }
+
+ @Override
+ public MogoLatLng getCameraNorthEastPosition() {
+ if ( mClient != null ) {
+ return mClient.getCameraNorthEastPosition();
+ }
+ return null;
+ }
+
+ @Override
+ public MogoLatLng getCameraSouthWestPosition() {
+ if ( mClient != null ) {
+ return mClient.getCameraSouthWestPosition();
+ }
+ return null;
+ }
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java
index 224c3db20c..f306f0f4cb 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java
@@ -114,5 +114,17 @@ public interface IMogoMap {
*/
float getScalePerPixel();
- void changeZoom(float zoom);
+ /**
+ * 改变地图缩放级别
+ *
+ * @param zoom
+ */
+ void changeZoom( float zoom );
+
+ /**
+ * 获取缩放比例
+ *
+ * @return
+ */
+ float getZoomLevel();
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java
index 3627800744..1ec4ae76c0 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java
@@ -54,4 +54,12 @@ public class MogoLatLng implements Parcelable {
return new MogoLatLng[size];
}
};
+
+ @Override
+ public String toString() {
+ return "MogoLatLng{" +
+ "lat=" + lat +
+ ", lng=" + lng +
+ '}';
+ }
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java
index b66379e1a8..13f5e3ac4a 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java
@@ -3,8 +3,8 @@ package com.mogo.map.listener;
import android.view.MotionEvent;
import com.mogo.map.MogoLatLng;
+import com.mogo.map.location.MogoLocation;
import com.mogo.map.model.MogoPoi;
-import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.uicontroller.EnumMapUI;
/**
@@ -54,4 +54,12 @@ public interface IMogoMapListener {
* @param ui
*/
void onMapModeChanged( EnumMapUI ui );
+
+ /**
+ * @param latLng 中点的经纬度
+ * @param zoom 缩放大小
+ * @param tilt 倾斜度
+ * @param bearing 旋转角度
+ */
+ void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing );
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java
index 01de8f6d06..5c90b7de00 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java
@@ -3,6 +3,7 @@ package com.mogo.map.listener;
import android.view.MotionEvent;
import com.mogo.map.MogoLatLng;
+import com.mogo.map.location.MogoLocation;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.uicontroller.EnumMapUI;
@@ -103,4 +104,13 @@ public class MogoMapListenerHandler implements IMogoMapListener, IMogoMapListene
}
}
}
+
+ @Override
+ public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
+ if ( mDelegateListener != null ) {
+ synchronized ( mDelegateListener ) {
+ mDelegateListener.onMapChanged( location, zoom, tilt, bearing );
+ }
+ }
+ }
}
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
index ba4a89ff28..e0f5e57790 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
@@ -66,4 +66,25 @@ public interface IMogoMapUIController {
* @return 当前缩放级别下,地图上1像素点对应的长度,单位米
*/
float getScalePerPixel();
+
+ /**
+ * 获取缩放比例
+ *
+ * @return
+ */
+ float getZoomLevel();
+
+ /**
+ * 获取视图东北角坐标
+ *
+ * @return
+ */
+ MogoLatLng getCameraNorthEastPosition();
+
+ /**
+ * 获取视图西南角坐标
+ *
+ * @return
+ */
+ MogoLatLng getCameraSouthWestPosition();
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
index b45c6a4086..3c58121cd9 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
@@ -98,4 +98,28 @@ public class MogoMapUIController implements IMogoMapUIController {
}
return 0;
}
+
+ @Override
+ public float getZoomLevel() {
+ if ( mDelegate != null ) {
+ return mDelegate.getZoomLevel();
+ }
+ return 0;
+ }
+
+ @Override
+ public MogoLatLng getCameraNorthEastPosition() {
+ if ( mDelegate != null ) {
+ return mDelegate.getCameraNorthEastPosition();
+ }
+ return null;
+ }
+
+ @Override
+ public MogoLatLng getCameraSouthWestPosition() {
+ if ( mDelegate != null ) {
+ return mDelegate.getCameraSouthWestPosition();
+ }
+ return null;
+ }
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java
index d719cea766..03e8970e62 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragmentProvider.java
@@ -14,6 +14,7 @@ import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.module.ModuleType;
/**
* @author congtaowang
@@ -57,7 +58,7 @@ public class AppsFragmentProvider implements IMogoModuleProvider {
@Override
public int getType() {
- return IMogoModuleProvider.TYPE_FRAGMENT;
+ return ModuleType.TYPE_APP_LIST;
}
@Override
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
index 59a55b2827..d2d41058b9 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps.xml
@@ -9,6 +9,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:behavior_hideable="false"
- app:behavior_peekHeight="50dp"
+ app:behavior_peekHeight="76dp"
app:layout_behavior="@string/bottom_sheet_behavior" />
\ No newline at end of file
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml
index 9434eb0e3a..3f995c1085 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app.xml
@@ -7,8 +7,8 @@
+ android:layout_width="60dp"
+ android:layout_height="60dp" />
+ * 模块类型
+ */
+public interface ModuleType {
+
+ /**
+ * 卡片类型 - fragment
+ */
+ int TYPE_CARD_FRAGMENT = 1;
+
+ /**
+ * 卡片类型 - view
+ */
+ @Deprecated
+ int TYPE_CARD_VIEW = 2;
+
+ /**
+ * 服务类型的模块
+ */
+ int TYPE_SERVICE = 3;
+
+ /**
+ * APP 列表模块
+ */
+ int TYPE_APP_LIST = 4;
+
+ /**
+ * 小智语音形象
+ */
+ int TYPE_VOICE = 5;
+
+ /**
+ * 地图模块
+ */
+ int TYPE_MAP = 6;
+
+ /**
+ * 导航模块
+ */
+ int TYPE_NAVI = 7;
+
+ /**
+ * 小智、天气、时间等
+ */
+ int TYPE_EXTENSION = 8;
+}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModule.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModule.java
index b79a997069..5a4f67162a 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModule.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModule.java
@@ -18,6 +18,10 @@ public class MogoModule {
*/
private String mName;
+ /**
+ * @param path 模块加载路径
+ * @param name 模块名称
+ */
public MogoModule( String path, String name ) {
this.mPath = path;
this.mName = name;
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java
index f149cecb4b..fa3d730363 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java
@@ -29,22 +29,26 @@ public class MogoModulePaths {
@Keep
public static final String PATH_MODULE_APPS = "/appslist/ui";
-
+ /**
+ * 添加卡片模块
+ *
+ * @param path
+ */
+ @Deprecated
+ public static void addModule( String path ) {
+ throw new IllegalArgumentException( "this method can't be invoked." );
+ }
/**
* 搜索页面模块实例化路径
*/
@Keep
public static final String PATH_MODULE_SEARCH= "navi/search/ui";
-
-
- public static void addModule( String path ) {
- if ( TextUtils.isEmpty( path.replace( " ", "" ) ) ) {
- throw new IllegalArgumentException( "module path can't be empty or null or blank" );
- }
- mMogoModules.add( new MogoModule( path, "" ) );
- }
-
+ /**
+ * 添加卡片模块
+ *
+ * @param module
+ */
public static void addModule( MogoModule module ) {
if ( module == null || TextUtils.isEmpty( module.getPath().replace( " ", "" ) ) ) {
throw new IllegalArgumentException( "module path can't be empty or null or blank" );
diff --git a/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml
new file mode 100644
index 0000000000..b524c9d277
--- /dev/null
+++ b/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml
@@ -0,0 +1,1046 @@
+
+
+ @dimen/dp_15
+ -30.0000px
+ -15.0000px
+ -10.0000px
+ -6.0000px
+ -5.0000px
+ -4.0000px
+ -2.5000px
+ -1.0000px
+ -0.5000px
+ 0.0000px
+ 0.0500px
+ 0.2500px
+ 0.5000px
+ 0.7500px
+ 1.0000px
+ 1.2500px
+ 1.5000px
+ 1.7500px
+ 2.0000px
+ 2.2500px
+ 2.5000px
+ 3.0000px
+ 3.5000px
+ 3.7500px
+ 4.0000px
+ 4.5000px
+ 5.0000px
+ 5.5000px
+ 6.0000px
+ 6.5000px
+ 7.0000px
+ 7.5000px
+ 8.0000px
+ 8.5000px
+ 9.0000px
+ 9.5000px
+ 10.0000px
+ 10.5000px
+ 11.0000px
+ 11.5000px
+ 12.0000px
+ 12.5000px
+ 13.0000px
+ 13.5000px
+ 14.0000px
+ 14.5000px
+ 15.0000px
+ 15.5000px
+ 16.0000px
+ 16.5000px
+ 17.0000px
+ 17.5000px
+ 18.0000px
+ 18.5000px
+ 19.0000px
+ 19.5000px
+ 20.0000px
+ 20.5000px
+ 21.0000px
+ 21.5000px
+ 22.0000px
+ 22.5000px
+ 23.0000px
+ 23.5000px
+ 24.0000px
+ 24.5000px
+ 25.0000px
+ 25.5000px
+ 26.0000px
+ 26.5000px
+ 27.0000px
+ 27.5000px
+ 28.0000px
+ 28.5000px
+ 29.0000px
+ 29.5000px
+ 30.0000px
+ 30.5000px
+ 31.0000px
+ 31.5000px
+ 32.0000px
+ 32.5000px
+ 33.0000px
+ 33.5000px
+ 34.0000px
+ 34.5000px
+ 35.0000px
+ 35.5000px
+ 36.0000px
+ 36.5000px
+ 37.0000px
+ 37.5000px
+ 38.0000px
+ 38.5000px
+ 39.0000px
+ 39.5000px
+ 40.0000px
+ 40.5000px
+ 41.0000px
+ 41.5000px
+ 42.0000px
+ 42.5000px
+ 43.0000px
+ 43.5000px
+ 44.0000px
+ 44.5000px
+ 45.0000px
+ 45.5000px
+ 46.0000px
+ 46.5000px
+ 47.0000px
+ 47.5000px
+ 48.0000px
+ 48.5000px
+ 49.0000px
+ 49.5000px
+ 50.0000px
+ 50.5000px
+ 51.0000px
+ 51.5000px
+ 52.0000px
+ 52.2500px
+ 52.5000px
+ 53.0000px
+ 53.5000px
+ 54.0000px
+ 54.5000px
+ 55.0000px
+ 55.5000px
+ 56.0000px
+ 56.5000px
+ 57.0000px
+ 57.5000px
+ 58.0000px
+ 58.5000px
+ 59.0000px
+ 59.5000px
+ 60.0000px
+ 60.5000px
+ 61.0000px
+ 61.5000px
+ 62.0000px
+ 62.5000px
+ 63.0000px
+ 63.5000px
+ 64.0000px
+ 64.5000px
+ 65.0000px
+ 65.5000px
+ 66.0000px
+ 66.5000px
+ 67.0000px
+ 67.2500px
+ 67.5000px
+ 68.0000px
+ 68.5000px
+ 69.0000px
+ 69.5000px
+ 70.0000px
+ 70.5000px
+ 71.0000px
+ 71.5000px
+ 72.0000px
+ 72.5000px
+ 73.0000px
+ 73.5000px
+ 74.0000px
+ 74.5000px
+ 75.0000px
+ 75.5000px
+ 76.0000px
+ 76.5000px
+ 77.0000px
+ 77.5000px
+ 78.0000px
+ 78.5000px
+ 79.0000px
+ 79.5000px
+ 80.0000px
+ 80.5000px
+ 81.0000px
+ 81.5000px
+ 82.0000px
+ 82.5000px
+ 83.0000px
+ 83.5000px
+ 84.0000px
+ 84.5000px
+ 85.0000px
+ 85.5000px
+ 86.0000px
+ 86.5000px
+ 87.0000px
+ 87.5000px
+ 88.0000px
+ 88.5000px
+ 89.0000px
+ 89.5000px
+ 90.0000px
+ 90.5000px
+ 91.0000px
+ 91.5000px
+ 92.0000px
+ 92.5000px
+ 93.0000px
+ 93.5000px
+ 94.0000px
+ 94.5000px
+ 95.0000px
+ 95.5000px
+ 95.6250px
+ 96.0000px
+ 96.5000px
+ 97.0000px
+ 97.5000px
+ 98.0000px
+ 98.5000px
+ 99.0000px
+ 99.5000px
+ 100.0000px
+ 100.5000px
+ 101.0000px
+ 101.5000px
+ 102.0000px
+ 102.5000px
+ 103.0000px
+ 103.5000px
+ 104.0000px
+ 104.5000px
+ 105.0000px
+ 105.5000px
+ 106.0000px
+ 106.5000px
+ 107.0000px
+ 107.5000px
+ 108.0000px
+ 108.5000px
+ 109.0000px
+ 109.5000px
+ 110.0000px
+ 110.5000px
+ 111.0000px
+ 111.5000px
+ 112.0000px
+ 112.5000px
+ 113.0000px
+ 113.5000px
+ 114.0000px
+ 114.5000px
+ 115.0000px
+ 115.5000px
+ 116.0000px
+ 116.5000px
+ 117.0000px
+ 117.5000px
+ 118.0000px
+ 118.5000px
+ 119.0000px
+ 119.5000px
+ 120.0000px
+ 120.5000px
+ 121.0000px
+ 121.5000px
+ 122.0000px
+ 122.5000px
+ 123.0000px
+ 123.5000px
+ 124.0000px
+ 124.5000px
+ 125.0000px
+ 125.5000px
+ 126.0000px
+ 126.5000px
+ 127.0000px
+ 127.5000px
+ 128.0000px
+ 128.5000px
+ 129.0000px
+ 129.5000px
+ 130.0000px
+ 130.5000px
+ 131.0000px
+ 131.5000px
+ 132.0000px
+ 132.5000px
+ 133.0000px
+ 133.5000px
+ 134.0000px
+ 134.5000px
+ 135.0000px
+ 135.5000px
+ 136.0000px
+ 136.5000px
+ 137.0000px
+ 137.5000px
+ 138.0000px
+ 138.5000px
+ 139.0000px
+ 139.5000px
+ 140.0000px
+ 140.5000px
+ 141.0000px
+ 141.5000px
+ 142.0000px
+ 142.5000px
+ 143.0000px
+ 143.5000px
+ 144.0000px
+ 144.5000px
+ 145.0000px
+ 145.5000px
+ 146.0000px
+ 146.5000px
+ 147.0000px
+ 147.5000px
+ 148.0000px
+ 148.5000px
+ 149.0000px
+ 149.5000px
+ 150.0000px
+ 150.5000px
+ 151.0000px
+ 151.5000px
+ 152.0000px
+ 152.5000px
+ 153.0000px
+ 153.5000px
+ 154.0000px
+ 154.5000px
+ 155.0000px
+ 155.5000px
+ 156.0000px
+ 156.5000px
+ 157.0000px
+ 157.5000px
+ 158.0000px
+ 158.5000px
+ 159.0000px
+ 159.5000px
+ 160.0000px
+ 160.5000px
+ 161.0000px
+ 161.5000px
+ 162.0000px
+ 162.5000px
+ 163.0000px
+ 163.5000px
+ 164.0000px
+ 164.5000px
+ 165.0000px
+ 165.5000px
+ 166.0000px
+ 166.5000px
+ 167.0000px
+ 167.5000px
+ 168.0000px
+ 168.5000px
+ 169.0000px
+ 169.5000px
+ 170.0000px
+ 170.5000px
+ 171.0000px
+ 171.5000px
+ 172.0000px
+ 172.5000px
+ 173.0000px
+ 173.5000px
+ 174.0000px
+ 174.5000px
+ 175.0000px
+ 175.5000px
+ 176.0000px
+ 176.5000px
+ 177.0000px
+ 177.5000px
+ 178.0000px
+ 178.5000px
+ 179.0000px
+ 179.5000px
+ 183.0000px
+ 183.5000px
+ 184.0000px
+ 184.5000px
+ 185.0000px
+ 185.5000px
+ 186.0000px
+ 186.5000px
+ 187.0000px
+ 187.5000px
+ 188.0000px
+ 188.5000px
+ 189.0000px
+ 189.5000px
+ 190.0000px
+ 190.5000px
+ 191.0000px
+ 191.5000px
+ 192.0000px
+ 192.5000px
+ 193.0000px
+ 193.5000px
+ 194.0000px
+ 194.5000px
+ 195.0000px
+ 195.5000px
+ 196.0000px
+ 196.5000px
+ 197.0000px
+ 197.5000px
+ 198.0000px
+ 198.5000px
+ 199.0000px
+ 199.5000px
+ 200.0000px
+ 200.5000px
+ 201.0000px
+ 201.5000px
+ 202.0000px
+ 202.5000px
+ 203.0000px
+ 203.5000px
+ 204.0000px
+ 204.5000px
+ 205.0000px
+ 205.5000px
+ 206.0000px
+ 206.5000px
+ 207.0000px
+ 207.5000px
+ 208.0000px
+ 208.5000px
+ 209.0000px
+ 209.5000px
+ 210.0000px
+ 210.5000px
+ 211.0000px
+ 211.5000px
+ 212.0000px
+ 212.5000px
+ 213.0000px
+ 213.5000px
+ 214.0000px
+ 214.5000px
+ 215.0000px
+ 215.5000px
+ 216.0000px
+ 216.5000px
+ 217.0000px
+ 217.5000px
+ 218.0000px
+ 218.5000px
+ 219.0000px
+ 219.5000px
+ 220.0000px
+ 220.5000px
+ 221.0000px
+ 221.5000px
+ 222.0000px
+ 222.5000px
+ 223.0000px
+ 223.5000px
+ 224.0000px
+ 224.5000px
+ 225.0000px
+ 225.5000px
+ 226.0000px
+ 226.5000px
+ 227.0000px
+ 227.5000px
+ 228.0000px
+ 228.5000px
+ 229.0000px
+ 229.5000px
+ 230.0000px
+ 230.5000px
+ 231.0000px
+ 231.5000px
+ 232.0000px
+ 232.5000px
+ 233.0000px
+ 233.5000px
+ 234.0000px
+ 234.5000px
+ 235.0000px
+ 235.5000px
+ 236.0000px
+ 236.5000px
+ 237.0000px
+ 237.5000px
+ 238.0000px
+ 238.5000px
+ 239.0000px
+ 239.5000px
+ 240.0000px
+ 240.5000px
+ 241.0000px
+ 241.5000px
+ 242.0000px
+ 242.5000px
+ 243.0000px
+ 243.5000px
+ 244.0000px
+ 244.5000px
+ 245.0000px
+ 245.5000px
+ 246.0000px
+ 246.5000px
+ 247.0000px
+ 247.5000px
+ 248.0000px
+ 248.5000px
+ 249.0000px
+ 249.5000px
+ 250.0000px
+ 250.5000px
+ 251.0000px
+ 251.5000px
+ 252.0000px
+ 252.5000px
+ 253.0000px
+ 253.5000px
+ 254.0000px
+ 254.5000px
+ 255.0000px
+ 255.5000px
+ 256.0000px
+ 256.5000px
+ 257.0000px
+ 257.5000px
+ 258.0000px
+ 258.5000px
+ 259.0000px
+ 259.5000px
+ 260.0000px
+ 260.5000px
+ 261.0000px
+ 261.5000px
+ 262.0000px
+ 262.5000px
+ 263.0000px
+ 263.5000px
+ 264.0000px
+ 264.5000px
+ 265.0000px
+ 265.5000px
+ 266.0000px
+ 266.5000px
+ 267.0000px
+ 267.5000px
+ 268.0000px
+ 268.5000px
+ 269.0000px
+ 269.5000px
+ 270.0000px
+ 270.5000px
+ 271.0000px
+ 271.5000px
+ 272.0000px
+ 272.5000px
+ 273.0000px
+ 273.5000px
+ 274.0000px
+ 274.5000px
+ 275.0000px
+ 275.5000px
+ 276.0000px
+ 276.5000px
+ 277.0000px
+ 277.5000px
+ 278.0000px
+ 278.5000px
+ 279.0000px
+ 279.5000px
+ 280.0000px
+ 280.5000px
+ 281.0000px
+ 281.5000px
+ 282.0000px
+ 282.5000px
+ 283.0000px
+ 283.5000px
+ 284.0000px
+ 284.5000px
+ 285.0000px
+ 285.5000px
+ 286.0000px
+ 286.5000px
+ 287.0000px
+ 287.5000px
+ 288.0000px
+ 288.5000px
+ 289.0000px
+ 289.5000px
+ 290.0000px
+ 290.5000px
+ 291.0000px
+ 291.5000px
+ 292.0000px
+ 292.5000px
+ 293.0000px
+ 293.5000px
+ 294.0000px
+ 294.5000px
+ 295.0000px
+ 295.5000px
+ 296.0000px
+ 296.5000px
+ 297.0000px
+ 297.5000px
+ 298.0000px
+ 298.5000px
+ 299.0000px
+ 299.5000px
+ 300.0000px
+ 300.5000px
+ 301.0000px
+ 301.5000px
+ 302.0000px
+ 302.5000px
+ 303.0000px
+ 303.5000px
+ 304.0000px
+ 304.5000px
+ 305.0000px
+ 305.5000px
+ 306.0000px
+ 306.5000px
+ 307.0000px
+ 307.5000px
+ 308.0000px
+ 308.5000px
+ 309.0000px
+ 309.5000px
+ 310.0000px
+ 310.5000px
+ 311.0000px
+ 311.5000px
+ 312.0000px
+ 312.5000px
+ 313.0000px
+ 313.5000px
+ 314.0000px
+ 314.5000px
+ 315.0000px
+ 315.5000px
+ 316.0000px
+ 316.5000px
+ 317.0000px
+ 317.5000px
+ 318.0000px
+ 318.5000px
+ 319.0000px
+ 319.5000px
+ 320.0000px
+ 320.5000px
+ 321.0000px
+ 321.5000px
+ 322.0000px
+ 322.5000px
+ 323.0000px
+ 323.5000px
+ 324.0000px
+ 324.5000px
+ 325.0000px
+ 325.5000px
+ 326.0000px
+ 326.5000px
+ 327.0000px
+ 327.5000px
+ 328.0000px
+ 328.5000px
+ 329.0000px
+ 329.5000px
+ 330.0000px
+ 330.5000px
+ 331.0000px
+ 331.5000px
+ 332.0000px
+ 332.5000px
+ 333.0000px
+ 333.5000px
+ 334.0000px
+ 334.5000px
+ 335.0000px
+ 335.5000px
+ 336.0000px
+ 336.5000px
+ 337.0000px
+ 337.5000px
+ 338.0000px
+ 338.5000px
+ 339.0000px
+ 339.5000px
+ 340.0000px
+ 340.5000px
+ 341.0000px
+ 341.5000px
+ 342.0000px
+ 342.5000px
+ 343.0000px
+ 343.5000px
+ 344.0000px
+ 344.5000px
+ 345.0000px
+ 345.5000px
+ 346.0000px
+ 346.5000px
+ 347.0000px
+ 347.5000px
+ 348.0000px
+ 348.5000px
+ 349.0000px
+ 349.5000px
+ 350.0000px
+ 350.5000px
+ 351.0000px
+ 351.5000px
+ 352.0000px
+ 352.5000px
+ 353.0000px
+ 353.5000px
+ 354.0000px
+ 354.5000px
+ 355.0000px
+ 355.5000px
+ 356.0000px
+ 356.5000px
+ 357.0000px
+ 357.5000px
+ 358.0000px
+ 358.5000px
+ 359.0000px
+ 359.5000px
+ 360.0000px
+ 360.5000px
+ 361.0000px
+ 361.5000px
+ 362.0000px
+ 362.5000px
+ 363.0000px
+ 363.5000px
+ 364.0000px
+ 364.5000px
+ 365.0000px
+ 365.5000px
+ 366.0000px
+ 366.5000px
+ 367.0000px
+ 367.5000px
+ 368.0000px
+ 368.5000px
+ 369.0000px
+ 369.5000px
+ 370.0000px
+ 370.5000px
+ 371.0000px
+ 371.5000px
+ 372.0000px
+ 372.5000px
+ 373.0000px
+ 373.5000px
+ 374.0000px
+ 374.5000px
+ 375.0000px
+ 375.5000px
+ 376.0000px
+ 376.5000px
+ 377.0000px
+ 377.5000px
+ 378.0000px
+ 378.5000px
+ 379.0000px
+ 379.5000px
+ 380.0000px
+ 380.5000px
+ 381.0000px
+ 381.5000px
+ 382.0000px
+ 382.5000px
+ 383.0000px
+ 383.5000px
+ 384.0000px
+ 384.5000px
+ 385.0000px
+ 385.5000px
+ 386.0000px
+ 386.5000px
+ 387.0000px
+ 387.5000px
+ 388.0000px
+ 388.5000px
+ 389.0000px
+ 389.5000px
+ 390.0000px
+ 390.5000px
+ 391.0000px
+ 391.5000px
+ 392.0000px
+ 392.5000px
+ 393.0000px
+ 393.5000px
+ 394.0000px
+ 394.5000px
+ 395.0000px
+ 395.5000px
+ 396.0000px
+ 396.5000px
+ 397.0000px
+ 397.5000px
+ 398.0000px
+ 398.5000px
+ 399.0000px
+ 399.5000px
+ 400.0000px
+ 400.5000px
+ 401.0000px
+ 401.5000px
+ 402.0000px
+ 402.5000px
+ 403.0000px
+ 403.5000px
+ 404.0000px
+ 404.5000px
+ 405.0000px
+ 405.5000px
+ 406.0000px
+ 406.5000px
+ 407.0000px
+ 407.5000px
+ 408.0000px
+ 408.5000px
+ 409.0000px
+ 409.5000px
+ 410.0000px
+ 410.5000px
+ 411.0000px
+ 411.5000px
+ 412.0000px
+ 412.5000px
+ 413.0000px
+ 413.5000px
+ 414.0000px
+ 414.5000px
+ 415.0000px
+ 415.5000px
+ 416.0000px
+ 416.5000px
+ 417.0000px
+ 417.5000px
+ 418.0000px
+ 418.5000px
+ 419.0000px
+ 419.5000px
+ 420.0000px
+ 420.5000px
+ 421.0000px
+ 421.5000px
+ 422.0000px
+ 422.5000px
+ 423.0000px
+ 423.5000px
+ 424.0000px
+ 424.5000px
+ 425.0000px
+ 425.5000px
+ 426.0000px
+ 426.5000px
+ 427.0000px
+ 427.5000px
+ 428.0000px
+ 428.5000px
+ 429.0000px
+ 429.5000px
+ 430.0000px
+ 430.5000px
+ 431.0000px
+ 431.5000px
+ 432.0000px
+ 432.5000px
+ 433.0000px
+ 433.5000px
+ 434.0000px
+ 434.5000px
+ 435.0000px
+ 435.5000px
+ 436.0000px
+ 436.5000px
+ 437.0000px
+ 437.5000px
+ 438.0000px
+ 438.5000px
+ 439.0000px
+ 439.5000px
+ 440.0000px
+ 440.5000px
+ 441.0000px
+ 441.5000px
+ 442.0000px
+ 442.5000px
+ 443.0000px
+ 443.5000px
+ 444.0000px
+ 444.5000px
+ 445.0000px
+ 445.5000px
+ 446.0000px
+ 446.5000px
+ 447.0000px
+ 447.5000px
+ 448.0000px
+ 448.5000px
+ 449.0000px
+ 449.5000px
+ 450.0000px
+ 450.5000px
+ 451.0000px
+ 451.5000px
+ 452.0000px
+ 452.5000px
+ 453.0000px
+ 453.5000px
+ 454.0000px
+ 454.5000px
+ 455.0000px
+ 455.5000px
+ 456.0000px
+ 456.5000px
+ 457.0000px
+ 457.5000px
+ 458.0000px
+ 458.5000px
+ 459.0000px
+ 459.5000px
+ 460.0000px
+ 460.5000px
+ 461.0000px
+ 461.5000px
+ 462.0000px
+ 462.5000px
+ 463.0000px
+ 463.5000px
+ 464.0000px
+ 464.5000px
+ 465.0000px
+ 465.5000px
+ 466.0000px
+ 466.5000px
+ 467.0000px
+ 467.5000px
+ 468.0000px
+ 468.5000px
+ 469.0000px
+ 469.5000px
+ 470.0000px
+ 470.5000px
+ 471.0000px
+ 471.5000px
+ 472.0000px
+ 472.5000px
+ 473.0000px
+ 473.5000px
+ 474.0000px
+ 474.5000px
+ 475.0000px
+ 475.5000px
+ 476.0000px
+ 476.5000px
+ 477.0000px
+ 477.5000px
+ 478.0000px
+ 478.5000px
+ 479.0000px
+ 479.5000px
+ 480.0000px
+ 480.5000px
+ 481.0000px
+ 481.5000px
+ 482.0000px
+ 482.5000px
+ 483.0000px
+ 483.5000px
+ 484.0000px
+ 484.5000px
+ 485.0000px
+ 485.5000px
+ 486.0000px
+ 486.5000px
+ 487.0000px
+ 487.5000px
+ 488.0000px
+ 488.5000px
+ 489.0000px
+ 489.5000px
+ 490.0000px
+ 490.5000px
+ 491.0000px
+ 491.5000px
+ 492.0000px
+ 492.5000px
+ 493.0000px
+ 493.5000px
+ 494.0000px
+ 494.5000px
+ 495.0000px
+ 495.5000px
+ 496.0000px
+ 496.5000px
+ 497.0000px
+ 497.5000px
+ 498.0000px
+ 498.5000px
+ 499.0000px
+ 499.5000px
+ 3.0000px
+ 3.5000px
+ 4.0000px
+ 4.5000px
+ 5.0000px
+ 5.5000px
+ 6.0000px
+ 6.5000px
+ 7.0000px
+ 7.5000px
+ 8.0000px
+ 8.5000px
+ 9.0000px
+ 9.5000px
+ 10.0000px
+ 10.5000px
+ 11.0000px
+ 11.5000px
+ 12.0000px
+ 12.5000px
+ 14.0000px
+ 15.0000px
+ 16.0000px
+ 17.0000px
+ 18.0000px
+ 19.0000px
+ 20.0000px
+ 21.0000px
+ 24.0000px
+
diff --git a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
new file mode 100644
index 0000000000..df457700f7
--- /dev/null
+++ b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
@@ -0,0 +1,1056 @@
+
+
+
+
+ @dimen/dp_15
+
+
+
+ -60px
+ -30px
+ -20px
+ -12px
+ -10px
+ -8px
+ -5px
+ -2px
+ -1px
+ 0px
+ 0.1px
+ 0.5px
+ 1px
+ 1.5px
+ 2px
+ 2.5px
+ 3px
+ 3.5px
+ 4px
+ 4.5px
+ 5px
+ 6px
+ 7px
+ 7.5px
+ 8px
+ 9px
+ 10px
+ 11px
+ 12px
+ 13px
+ 14px
+ 15px
+ 16px
+ 17px
+ 18px
+ 19px
+ 20px
+ 21px
+ 22px
+ 23px
+ 24px
+ 25px
+ 26px
+ 27px
+ 28px
+ 29px
+ 30px
+ 31px
+ 32px
+ 33px
+ 34px
+ 35px
+ 36px
+ 37px
+ 38px
+ 39px
+ 40px
+ 41px
+ 42px
+ 43px
+ 44px
+ 45px
+ 46px
+ 47px
+ 48px
+ 49px
+ 50px
+ 51px
+ 52px
+ 53px
+ 54px
+ 55px
+ 56px
+ 57px
+ 58px
+ 59px
+ 60px
+ 61px
+ 62px
+ 63px
+ 64px
+ 65px
+ 66px
+ 67px
+ 68px
+ 69px
+ 70px
+ 71px
+ 72px
+ 73px
+ 74px
+ 75px
+ 76px
+ 77px
+ 78px
+ 79px
+ 80px
+ 81px
+ 82px
+ 83px
+ 84px
+ 85px
+ 86px
+ 87px
+ 88px
+ 89px
+ 90px
+ 91px
+ 92px
+ 93px
+ 94px
+ 95px
+ 96px
+ 97px
+ 98px
+ 99px
+ 100px
+ 101px
+ 102px
+ 103px
+ 104px
+ 104.5px
+ 105px
+ 106px
+ 107px
+ 108px
+ 109px
+ 110px
+ 111px
+ 112px
+ 113px
+ 114px
+ 115px
+ 116px
+ 117px
+ 118px
+ 119px
+ 120px
+ 121px
+ 122px
+ 123px
+ 124px
+ 125px
+ 126px
+ 127px
+ 128px
+ 129px
+ 130px
+ 131px
+ 132px
+ 133px
+ 134px
+ 134.5px
+ 135px
+ 136px
+ 137px
+ 138px
+ 139px
+ 140px
+ 141px
+ 142px
+ 143px
+ 144px
+ 145px
+ 146px
+ 147px
+ 148px
+ 149px
+ 150px
+ 151px
+ 152px
+ 153px
+ 154px
+ 155px
+ 156px
+ 157px
+ 158px
+ 159px
+ 160px
+ 161px
+ 162px
+ 163px
+ 164px
+ 165px
+ 166px
+ 167px
+ 168px
+ 169px
+ 170px
+ 171px
+ 172px
+ 173px
+ 174px
+ 175px
+ 176px
+ 177px
+ 178px
+ 179px
+ 180px
+ 181px
+ 182px
+ 183px
+ 184px
+ 185px
+ 186px
+ 187px
+ 188px
+ 189px
+ 190px
+ 191px
+ 191.25px
+ 192px
+ 193px
+ 194px
+ 195px
+ 196px
+ 197px
+ 198px
+ 199px
+ 200px
+ 201px
+ 202px
+ 203px
+ 204px
+ 205px
+ 206px
+ 207px
+ 208px
+ 209px
+ 210px
+ 211px
+ 212px
+ 213px
+ 214px
+ 215px
+ 216px
+ 217px
+ 218px
+ 219px
+ 220px
+ 221px
+ 222px
+ 223px
+ 224px
+ 225px
+ 226px
+ 227px
+ 228px
+ 229px
+ 230px
+ 231px
+ 232px
+ 233px
+ 234px
+ 235px
+ 236px
+ 237px
+ 238px
+ 239px
+ 240px
+ 241px
+ 242px
+ 243px
+ 244px
+ 245px
+ 246px
+ 247px
+ 248px
+ 249px
+ 250px
+ 251px
+ 252px
+ 253px
+ 254px
+ 255px
+ 256px
+ 257px
+ 258px
+ 259px
+ 260px
+ 261px
+ 262px
+ 263px
+ 264px
+ 265px
+ 266px
+ 267px
+ 268px
+ 269px
+ 270px
+ 271px
+ 272px
+ 273px
+ 274px
+ 275px
+ 276px
+ 277px
+ 278px
+ 279px
+ 280px
+ 281px
+ 282px
+ 283px
+ 284px
+ 285px
+ 286px
+ 287px
+ 288px
+ 289px
+ 290px
+ 291px
+ 292px
+ 293px
+ 294px
+ 295px
+ 296px
+ 297px
+ 298px
+ 299px
+ 300px
+ 301px
+ 302px
+ 303px
+ 304px
+ 305px
+ 306px
+ 307px
+ 308px
+ 309px
+ 310px
+ 311px
+ 312px
+ 313px
+ 314px
+ 315px
+ 316px
+ 317px
+ 318px
+ 319px
+ 320px
+ 321px
+ 322px
+ 323px
+ 324px
+ 325px
+ 326px
+ 327px
+ 328px
+ 329px
+ 330px
+ 331px
+ 332px
+ 333px
+ 334px
+ 335px
+ 336px
+ 337px
+ 338px
+ 339px
+ 340px
+ 341px
+ 342px
+ 343px
+ 344px
+ 345px
+ 346px
+ 347px
+ 348px
+ 349px
+ 350px
+ 351px
+ 352px
+ 353px
+ 354px
+ 355px
+ 356px
+ 357px
+ 358px
+ 359px
+ 366px
+ 367px
+ 368px
+ 369px
+ 370px
+ 371px
+ 372px
+ 373px
+ 374px
+ 375px
+ 376px
+ 377px
+ 378px
+ 379px
+ 380px
+ 381px
+ 382px
+ 383px
+ 384px
+ 385px
+ 386px
+ 387px
+ 388px
+ 389px
+ 390px
+ 391px
+ 392px
+ 393px
+ 394px
+ 395px
+ 396px
+ 397px
+ 398px
+ 399px
+ 400px
+ 401px
+ 402px
+ 403px
+ 404px
+ 405px
+ 406px
+ 407px
+ 408px
+ 409px
+ 410px
+ 411px
+ 412px
+ 413px
+ 414px
+ 415px
+ 416px
+ 417px
+ 418px
+ 419px
+ 420px
+ 421px
+ 422px
+ 423px
+ 424px
+ 425px
+ 426px
+ 427px
+ 428px
+ 429px
+ 430px
+ 431px
+ 432px
+ 433px
+ 434px
+ 435px
+ 436px
+ 437px
+ 438px
+ 439px
+ 440px
+ 441px
+ 442px
+ 443px
+ 444px
+ 445px
+ 446px
+ 447px
+ 448px
+ 449px
+ 450px
+ 451px
+ 452px
+ 453px
+ 454px
+ 455px
+ 456px
+ 457px
+ 458px
+ 459px
+ 460px
+ 461px
+ 462px
+ 463px
+ 464px
+ 465px
+ 466px
+ 467px
+ 468px
+ 469px
+ 470px
+ 471px
+ 472px
+ 473px
+ 474px
+ 475px
+ 476px
+ 477px
+ 478px
+ 479px
+ 480px
+ 481px
+ 482px
+ 483px
+ 484px
+ 485px
+ 486px
+ 487px
+ 488px
+ 489px
+ 490px
+ 491px
+ 492px
+ 493px
+ 494px
+ 495px
+ 496px
+ 497px
+ 498px
+ 499px
+ 500px
+ 501px
+ 502px
+ 503px
+ 504px
+ 505px
+ 506px
+ 507px
+ 508px
+ 509px
+ 510px
+ 511px
+ 512px
+ 513px
+ 514px
+ 515px
+ 516px
+ 517px
+ 518px
+ 519px
+ 520px
+ 521px
+ 522px
+ 523px
+ 524px
+ 525px
+ 526px
+ 527px
+ 528px
+ 529px
+ 530px
+ 531px
+ 532px
+ 533px
+ 534px
+ 535px
+ 536px
+ 537px
+ 538px
+ 539px
+ 540px
+ 541px
+ 542px
+ 543px
+ 544px
+ 545px
+ 546px
+ 547px
+ 548px
+ 549px
+ 550px
+ 551px
+ 552px
+ 553px
+ 554px
+ 555px
+ 556px
+ 557px
+ 558px
+ 559px
+ 560px
+ 561px
+ 562px
+ 563px
+ 564px
+ 565px
+ 566px
+ 567px
+ 568px
+ 569px
+ 570px
+ 571px
+ 572px
+ 573px
+ 574px
+ 575px
+ 576px
+ 577px
+ 578px
+ 579px
+ 580px
+ 581px
+ 582px
+ 583px
+ 584px
+ 585px
+ 586px
+ 587px
+ 588px
+ 589px
+ 590px
+ 591px
+ 592px
+ 593px
+ 594px
+ 595px
+ 596px
+ 597px
+ 598px
+ 599px
+ 600px
+ 601px
+ 602px
+ 603px
+ 604px
+ 605px
+ 606px
+ 607px
+ 608px
+ 609px
+ 610px
+ 611px
+ 612px
+ 613px
+ 614px
+ 615px
+ 616px
+ 617px
+ 618px
+ 619px
+ 620px
+ 621px
+ 622px
+ 623px
+ 624px
+ 625px
+ 626px
+ 627px
+ 628px
+ 629px
+ 630px
+ 631px
+ 632px
+ 633px
+ 634px
+ 635px
+ 636px
+ 637px
+ 638px
+ 639px
+ 640px
+ 641px
+ 642px
+ 643px
+ 644px
+ 645px
+ 646px
+ 647px
+ 648px
+ 649px
+ 650px
+ 651px
+ 652px
+ 653px
+ 654px
+ 655px
+ 656px
+ 657px
+ 658px
+ 659px
+ 660px
+ 661px
+ 662px
+ 663px
+ 664px
+ 665px
+ 666px
+ 667px
+ 668px
+ 669px
+ 670px
+ 671px
+ 672px
+ 673px
+ 674px
+ 675px
+ 676px
+ 677px
+ 678px
+ 679px
+ 680px
+ 681px
+ 682px
+ 683px
+ 684px
+ 685px
+ 686px
+ 687px
+ 688px
+ 689px
+ 690px
+ 691px
+ 692px
+ 693px
+ 694px
+ 695px
+ 696px
+ 697px
+ 698px
+ 699px
+ 700px
+ 701px
+ 702px
+ 703px
+ 704px
+ 705px
+ 706px
+ 707px
+ 708px
+ 709px
+ 710px
+ 711px
+ 712px
+ 713px
+ 714px
+ 715px
+ 716px
+ 717px
+ 718px
+ 719px
+ 720px
+ 721px
+ 722px
+ 723px
+ 724px
+ 725px
+ 726px
+ 727px
+ 728px
+ 729px
+ 730px
+ 731px
+ 732px
+ 733px
+ 734px
+ 735px
+ 736px
+ 737px
+ 738px
+ 739px
+ 740px
+ 741px
+ 742px
+ 743px
+ 744px
+ 745px
+ 746px
+ 747px
+ 748px
+ 749px
+ 750px
+ 751px
+ 752px
+ 753px
+ 754px
+ 755px
+ 756px
+ 757px
+ 758px
+ 759px
+ 760px
+ 761px
+ 762px
+ 763px
+ 764px
+ 765px
+ 766px
+ 767px
+ 768px
+ 769px
+ 770px
+ 771px
+ 772px
+ 773px
+ 774px
+ 775px
+ 776px
+ 777px
+ 778px
+ 779px
+ 780px
+ 781px
+ 782px
+ 783px
+ 784px
+ 785px
+ 786px
+ 787px
+ 788px
+ 789px
+ 790px
+ 791px
+ 792px
+ 793px
+ 794px
+ 795px
+ 796px
+ 797px
+ 798px
+ 799px
+ 800px
+ 801px
+ 802px
+ 803px
+ 804px
+ 805px
+ 806px
+ 807px
+ 808px
+ 809px
+ 810px
+ 811px
+ 812px
+ 813px
+ 814px
+ 815px
+ 816px
+ 817px
+ 818px
+ 819px
+ 820px
+ 821px
+ 822px
+ 823px
+ 824px
+ 825px
+ 826px
+ 827px
+ 828px
+ 829px
+ 830px
+ 831px
+ 832px
+ 833px
+ 834px
+ 835px
+ 836px
+ 837px
+ 838px
+ 839px
+ 840px
+ 841px
+ 842px
+ 843px
+ 844px
+ 845px
+ 846px
+ 847px
+ 848px
+ 849px
+ 850px
+ 851px
+ 852px
+ 853px
+ 854px
+ 855px
+ 856px
+ 857px
+ 858px
+ 859px
+ 860px
+ 861px
+ 862px
+ 863px
+ 864px
+ 865px
+ 866px
+ 867px
+ 868px
+ 869px
+ 870px
+ 871px
+ 872px
+ 873px
+ 874px
+ 875px
+ 876px
+ 877px
+ 878px
+ 879px
+ 880px
+ 881px
+ 882px
+ 883px
+ 884px
+ 885px
+ 886px
+ 887px
+ 888px
+ 889px
+ 890px
+ 891px
+ 892px
+ 893px
+ 894px
+ 895px
+ 896px
+ 897px
+ 898px
+ 899px
+ 900px
+ 901px
+ 902px
+ 903px
+ 904px
+ 905px
+ 906px
+ 907px
+ 908px
+ 909px
+ 910px
+ 911px
+ 912px
+ 913px
+ 914px
+ 915px
+ 916px
+ 917px
+ 918px
+ 919px
+ 920px
+ 921px
+ 922px
+ 923px
+ 924px
+ 925px
+ 926px
+ 927px
+ 928px
+ 929px
+ 930px
+ 931px
+ 932px
+ 933px
+ 934px
+ 935px
+ 936px
+ 937px
+ 938px
+ 939px
+ 940px
+ 941px
+ 942px
+ 943px
+ 944px
+ 945px
+ 946px
+ 947px
+ 948px
+ 949px
+ 950px
+ 951px
+ 952px
+ 953px
+ 954px
+ 955px
+ 956px
+ 957px
+ 958px
+ 959px
+ 960px
+ 961px
+ 962px
+ 963px
+ 964px
+ 965px
+ 966px
+ 967px
+ 968px
+ 969px
+ 970px
+ 971px
+ 972px
+ 973px
+ 974px
+ 975px
+ 976px
+ 977px
+ 978px
+ 979px
+ 980px
+ 981px
+ 982px
+ 983px
+ 984px
+ 985px
+ 986px
+ 987px
+ 988px
+ 989px
+ 990px
+ 991px
+ 992px
+ 993px
+ 994px
+ 995px
+ 996px
+ 997px
+ 998px
+ 999px
+
+
+
+
+ 6px
+ 7px
+ 8px
+ 9px
+ 10px
+ 11px
+ 12px
+ 13px
+ 14px
+ 15px
+ 16px
+ 17px
+ 18px
+ 19px
+ 20px
+ 21px
+ 22px
+ 23px
+ 24px
+ 25px
+ 28px
+ 30px
+ 32px
+ 34px
+ 36px
+ 38px
+ 40px
+ 42px
+ 48px
+
+
diff --git a/demo/demo-module-map/.gitignore b/modules/mogo-module-extensions/.gitignore
similarity index 100%
rename from demo/demo-module-map/.gitignore
rename to modules/mogo-module-extensions/.gitignore
diff --git a/modules/mogo-module-extensions/README.md b/modules/mogo-module-extensions/README.md
new file mode 100644
index 0000000000..d056ef61b8
--- /dev/null
+++ b/modules/mogo-module-extensions/README.md
@@ -0,0 +1,9 @@
+# launcher头部模块
+
+## 小智语音
+
+## 通知
+
+## 天气
+
+## 时间
\ No newline at end of file
diff --git a/demo/demo-module-map2/build.gradle b/modules/mogo-module-extensions/build.gradle
similarity index 72%
rename from demo/demo-module-map2/build.gradle
rename to modules/mogo-module-extensions/build.gradle
index 4cdc37ad48..fc86f87817 100644
--- a/demo/demo-module-map2/build.gradle
+++ b/modules/mogo-module-extensions/build.gradle
@@ -10,14 +10,14 @@ android {
versionCode Integer.valueOf(VERSION_CODE)
versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- consumerProguardFiles 'consumer-rules.pro'
-
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
}
buildTypes {
@@ -32,22 +32,29 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- if (Boolean.valueOf(RELEASE)) {
- implementation rootProject.ext.dependencies.mogomap
- implementation rootProject.ext.dependencies.mogoutils
- implementation rootProject.ext.dependencies.mogocommons
- implementation rootProject.ext.dependencies.mogoserviceapi
- implementation rootProject.ext.dependencies.modulecommon
- } else {
- implementation project(":libraries:mogo-map")
- implementation project(":foudations:mogo-utils")
- api project(":foudations:mogo-commons")
- implementation project(':services:mogo-service-api')
- implementation project(':modules:mogo-module-common')
- }
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ implementation rootProject.ext.dependencies.rxjava
+ implementation rootProject.ext.dependencies.rxandroid
+ if (Boolean.valueOf(RELEASE)) {
+ api rootProject.ext.dependencies.mogomap
+ api rootProject.ext.dependencies.mogomapapi
+ api rootProject.ext.dependencies.mogoutils
+ api rootProject.ext.dependencies.mogocommons
+ api rootProject.ext.dependencies.mogoserviceapi
+ implementation rootProject.ext.dependencies.modulecommon
+ } else {
+ api project(":libraries:mogo-map")
+ api project(":libraries:mogo-map-api")
+ api project(":foudations:mogo-utils")
+ api project(":foudations:mogo-commons")
+ api project(':services:mogo-service-api')
+ implementation project(':modules:mogo-module-common')
+ }
}
+
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/demo/demo-module-map/consumer-rules.pro b/modules/mogo-module-extensions/consumer-rules.pro
similarity index 100%
rename from demo/demo-module-map/consumer-rules.pro
rename to modules/mogo-module-extensions/consumer-rules.pro
diff --git a/demo/demo-module-map/gradle.properties b/modules/mogo-module-extensions/gradle.properties
similarity index 52%
rename from demo/demo-module-map/gradle.properties
rename to modules/mogo-module-extensions/gradle.properties
index cc80da2676..c1b546a86e 100644
--- a/demo/demo-module-map/gradle.properties
+++ b/modules/mogo-module-extensions/gradle.properties
@@ -1,3 +1,3 @@
GROUP=com.mogo.module
-POM_ARTIFACT_ID=module-demo
+POM_ARTIFACT_ID=module-extensions
VERSION_CODE=1
diff --git a/demo/demo-module-map/proguard-rules.pro b/modules/mogo-module-extensions/proguard-rules.pro
similarity index 100%
rename from demo/demo-module-map/proguard-rules.pro
rename to modules/mogo-module-extensions/proguard-rules.pro
diff --git a/modules/mogo-module-extensions/src/androidTest/java/com/mogo/module/extensions/ExampleInstrumentedTest.java b/modules/mogo-module-extensions/src/androidTest/java/com/mogo/module/extensions/ExampleInstrumentedTest.java
new file mode 100644
index 0000000000..860f712d30
--- /dev/null
+++ b/modules/mogo-module-extensions/src/androidTest/java/com/mogo/module/extensions/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package com.mogo.module.extensions;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith( AndroidJUnit4.class )
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals( "com.mogo.module.extensions.test", appContext.getPackageName() );
+ }
+}
diff --git a/demo/demo-module-map2/src/main/AndroidManifest.xml b/modules/mogo-module-extensions/src/main/AndroidManifest.xml
similarity index 61%
rename from demo/demo-module-map2/src/main/AndroidManifest.xml
rename to modules/mogo-module-extensions/src/main/AndroidManifest.xml
index 60ade1f714..a63d81e066 100644
--- a/demo/demo-module-map2/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-extensions/src/main/AndroidManifest.xml
@@ -1,2 +1,2 @@
+ package="com.mogo.module.extensions" />
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java
new file mode 100644
index 0000000000..1d2e44a9b8
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsFragment.java
@@ -0,0 +1,105 @@
+package com.mogo.module.extensions;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.mogo.commons.mvp.MvpFragment;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-05
+ *
+ * 描述
+ */
+public class ExtensionsFragment extends MvpFragment< ExtensionsView, ExtensionsPresenter > implements ExtensionsView {
+
+ private View mVoiceIcon;
+ private View mVoiceMsg;
+
+ private TextView mTime;
+ private TextView mDate;
+
+ private View mWeatherContainer;
+ private ImageView mWeatherIcon;
+ private TextView mWeatherTemp;
+ private TextView mWeatherDesc;
+
+ private View mMsgContainer;
+ private TextView mMsgCounter;
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.module_ext_layout_extensions;
+ }
+
+ @Override
+ protected void initViews() {
+ mVoiceIcon = findViewById( R.id.module_ext_id_voice );
+ mVoiceMsg = findViewById( R.id.module_ext_id_voice_msg );
+
+ mVoiceIcon.setOnClickListener( new View.OnClickListener() {
+ @Override
+ public void onClick( View v ) {
+ mVoiceMsg.performClick();
+ }
+ } );
+ mVoiceMsg.setOnClickListener( new View.OnClickListener() {
+ @Override
+ public void onClick( View v ) {
+
+ }
+ } );
+
+ mTime = findViewById( R.id.module_ext_id_time );
+ mDate = findViewById( R.id.module_ext_id_date );
+
+ mWeatherContainer = findViewById( R.id.module_ext_id_weather_container );
+ mWeatherIcon = findViewById( R.id.module_ext_id_weather_icon );
+ mWeatherTemp = findViewById( R.id.module_ext_id_weather_temp );
+ mWeatherDesc = findViewById( R.id.module_ext_id_weather_desc );
+
+ mMsgContainer = findViewById( R.id.module_ext_id_msg );
+ mMsgCounter = findViewById( R.id.module_ext_id_msg_counter );
+ }
+
+ @NonNull
+ @Override
+ protected ExtensionsPresenter createPresenter() {
+ return new ExtensionsPresenter( this );
+ }
+
+ @Override
+ public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
+ super.onActivityCreated( savedInstanceState );
+
+ }
+
+ @Override
+ public void renderTime( String date, String time ) {
+ mDate.setText( date );
+ mTime.setText( time );
+ }
+
+ @Override
+ public void renderWeatherInfo( String temp, String desc, int iconId ) {
+ boolean hidden = false;
+ if ( iconId != 0 ) {
+ mWeatherIcon.setImageResource( iconId );
+ mWeatherIcon.setVisibility( View.VISIBLE );
+ } else {
+ mWeatherIcon.setVisibility( View.GONE );
+ hidden |= true;
+ }
+ hidden |= TextUtils.isEmpty( temp );
+ hidden |= TextUtils.isEmpty( desc );
+ mWeatherTemp.setText( temp );
+ mWeatherDesc.setText( desc );
+ mWeatherContainer.setVisibility( hidden ? View.GONE : View.VISIBLE );
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java
new file mode 100644
index 0000000000..7cf63d02b0
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java
@@ -0,0 +1,16 @@
+package com.mogo.module.extensions;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-05
+ *
+ * 描述
+ */
+public class ExtensionsModuleConst {
+
+ public static final String PATH_EXTENSION = "/extension/ui";
+
+
+ public static final String TYPE = "extension";
+
+}
diff --git a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2CardViewProvider.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleProvider.java
similarity index 66%
rename from demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2CardViewProvider.java
rename to modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleProvider.java
index 720db4e029..2a9ff20faf 100644
--- a/demo/demo-module-map2/src/main/java/com/mogo/demo/module/map2/Demo2CardViewProvider.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleProvider.java
@@ -1,9 +1,10 @@
-package com.mogo.demo.module.map2;
+package com.mogo.module.extensions;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
+import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route;
@@ -12,58 +13,48 @@ import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
-import com.mogo.utils.logger.Logger;
+import com.mogo.service.module.ModuleType;
/**
* @author congtaowang
- * @since 2019-12-24
+ * @since 2020-01-05
*
* 描述
*/
-@Route( path = Demo2Constants.TAG )
-public class Demo2CardViewProvider implements IMogoModuleProvider {
-
- private static final String TAG = "Demo2CardViewProvider";
-
- private Demo2CardViewFragment fragment;
+@Route( path = ExtensionsModuleConst.PATH_EXTENSION )
+public class ExtensionsModuleProvider implements IMogoModuleProvider {
@Override
public Fragment createFragment( Context context, Bundle data ) {
- fragment = new Demo2CardViewFragment();
+ ExtensionsFragment fragment = new ExtensionsFragment();
fragment.setArguments( data );
- Logger.i( TAG, "createFragment" );
- return fragment;
- }
-
- @Override
- public void init( Context context ) {
- Service2Handler.init( context );
- }
-
- @Override
- public String getModuleName() {
- return Demo2Constants.TAG;
- }
-
- @Override
- public IMogoModuleLifecycle getCardLifecycle() {
return fragment;
}
@Override
public View createView( Context context ) {
- // don't
+ return null;
+ }
+
+ @NonNull
+ @Override
+ public String getModuleName() {
+ return ExtensionsModuleConst.TYPE;
+ }
+
+ @Override
+ public IMogoModuleLifecycle getCardLifecycle() {
return null;
}
@Override
public IMogoMapListener getMapListener() {
- return fragment;
+ return null;
}
@Override
public int getType() {
- return IMogoModuleProvider.TYPE_FRAGMENT;
+ return ModuleType.TYPE_EXTENSION;
}
@Override
@@ -73,7 +64,11 @@ public class Demo2CardViewProvider implements IMogoModuleProvider {
@Override
public IMogoLocationListener getLocationListener() {
- return fragment;
+ return null;
}
+ @Override
+ public void init( Context context ) {
+
+ }
}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
new file mode 100644
index 0000000000..f4e33bdca7
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
@@ -0,0 +1,111 @@
+package com.mogo.module.extensions;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.LifecycleOwner;
+
+import com.mogo.commons.mvp.Presenter;
+import com.mogo.module.extensions.weather.Phenomena;
+import com.mogo.module.extensions.weather.WeatherCallback;
+import com.mogo.module.extensions.weather.WeatherInfo;
+import com.mogo.module.extensions.weather.WeatherModel;
+import com.mogo.utils.logger.Logger;
+
+import java.util.Calendar;
+
+
+/**
+ * @author congtaowang
+ * @since 2020-01-05
+ *
+ * 描述
+ */
+public class ExtensionsPresenter extends Presenter< ExtensionsView > implements WeatherCallback {
+
+ private static final String TAG = "ExtensionsPresenter";
+
+ private String[] mWeeks;
+
+ private WeatherModel mWeatherModel;
+
+ /**
+ * 接收时间变化的广播
+ */
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive( Context context, Intent intent ) {
+ try {
+ refreshTimeAndDate();
+ } catch ( Exception e ) {
+ Logger.e( TAG, "error. ", e );
+ }
+ }
+ };
+
+
+ public ExtensionsPresenter( ExtensionsView view ) {
+ super( view );
+ mWeeks = getContext().getResources().getStringArray( R.array.module_ext_str_arr_week );
+ mWeatherModel = new WeatherModel( getContext() );
+ }
+
+ @Override
+ public void onCreate( @NonNull LifecycleOwner owner ) {
+ super.onCreate( owner );
+ registerTimerReceiver();
+ mWeatherModel.init( this );
+ mWeatherModel.queryWeatherInformation();
+ refreshTimeAndDate();
+ }
+
+ /**
+ * 注册时间变化监听
+ */
+ private void registerTimerReceiver() {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction( Intent.ACTION_TIME_TICK );
+ filter.addAction( Intent.ACTION_TIME_CHANGED );
+ filter.addAction( Intent.ACTION_TIMEZONE_CHANGED );
+ filter.addAction( Intent.ACTION_CONFIGURATION_CHANGED );
+ getContext().registerReceiver( mReceiver, filter );
+ }
+
+ private void refreshTimeAndDate() {
+ Calendar calendar = Calendar.getInstance();
+ int hour = calendar.get( Calendar.HOUR_OF_DAY );
+ int minute = calendar.get( Calendar.MINUTE );
+
+ int month = calendar.get( Calendar.MONTH );
+ int day = calendar.get( Calendar.DAY_OF_MONTH );
+ int week = calendar.get( Calendar.DAY_OF_WEEK );
+
+ String timeStr = getContext().getResources().getString( R.string.module_ext_str_time_format, hour, minute > 9 ? String.valueOf( minute ) : "0" + minute );
+ String dateStr = getContext().getResources().getString( R.string.module_ext_str_date_format, month + 1, day, mWeeks[week - 1] );
+ mView.renderTime( dateStr, timeStr );
+ }
+
+ @Override
+ public void onWeatherLoaded( WeatherInfo weatherInfo ) {
+ if ( weatherInfo == null ) {
+ return;
+ }
+ String temp = getContext().getResources().getString( R.string.module_ext_str_weather_temp_format, weatherInfo.getTemperature() );
+ Phenomena phenomena = Phenomena.getById( weatherInfo.getPhenomena() );
+ String desc = phenomena == null ? "" : phenomena.nameCn;
+ int resId = 0;
+ mView.renderWeatherInfo( temp, desc, resId );
+ }
+
+ @Override
+ public void onDestroy( @NonNull LifecycleOwner owner ) {
+ super.onDestroy( owner );
+ if ( mWeatherModel != null ) {
+ mWeatherModel.destroy();
+ }
+
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java
new file mode 100644
index 0000000000..fc1c71fb22
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsView.java
@@ -0,0 +1,30 @@
+package com.mogo.module.extensions;
+
+import com.mogo.commons.mvp.IView;
+import com.mogo.module.extensions.weather.WeatherInfo;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-05
+ *
+ * 描述
+ */
+public interface ExtensionsView extends IView {
+
+ /**
+ * 刷新日期、时间
+ *
+ * @param date 日期
+ * @param time 时间
+ */
+ void renderTime( String date, String time );
+
+ /**
+ * 天气信息
+ *
+ * @param desc 天气描述:晴转多云
+ * @param temp 温度
+ * @param iconId 图标
+ */
+ void renderWeatherInfo( String temp, String desc, int iconId );
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/Phenomena.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/Phenomena.java
new file mode 100644
index 0000000000..fd39a92327
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/Phenomena.java
@@ -0,0 +1,97 @@
+package com.mogo.module.extensions.weather;
+
+import android.text.TextUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Lzq
+ */
+public enum Phenomena {
+ Sunny( "00", "晴", "Sunny" ),
+ Cloudy( "01", "多云", "Cloudy" ),
+ Overcast( "02", "阴", "Overcast" ),
+
+ Shower( "03", "阵雨", "Shower" ),
+ Thundershower( "04", "雷阵雨", "Thundershower" ),
+ ThundershowerWithHail( "05", "雷阵雨伴有冰雹", "Thundershower with hail" ),
+ Sleet( "06", "雨夹雪", "Sleet" ),
+ LightRain( "07", "小雨", "Light rain" ),
+ ModerateRain( "08", "中雨", "Moderate rain" ),
+ HeavyRain( "09", "大雨", "Heavy rain" ),
+ Storm( "10", "暴雨", "Storm" ),
+ HeavyStorm( "11", "大暴雨", "Heavy storm" ),
+ SevereStorm( "12", "特大暴雨", "Severe storm" ),
+
+ SnowFlurry( "13", "阵雪", "Snow flurry" ),
+ LightSnow( "14", "小雪", "Light snow" ),
+ ModerateSnow( "15", "中雪", "Moderate snow" ),
+ HeavySnow( "16", "大雪", "Heavy snow" ),
+ Snowstorm( "17", "暴雪", "Snowstorm" ),
+
+ Foggy( "18", "雾", "Foggy" ),
+ IceRain( "19", "冻雨", "Ice rain" ),
+ Duststorm( "20", "沙尘暴", "Duststorm" ),
+
+ LightToModerateRain( "21", "小到中雨", "Light to moderate rain" ),
+ ModerateToHeavyRain( "22", "中到大雨", "Moderate to heavy rain" ),
+ HeavyRainToStorm( "23", "大到大雨", "Heavy rain to storm" ),
+ StormToHeavyStorm( "24", "暴雨到大暴雨", "Storm to heavy storm" ),
+ HeavyToSevereStorm( "25", "大暴雨到特大暴雨", "Heavy to severe storm" ),
+
+ LightToModerateSnow( "26", "小到中雪", "Light to moderate snow" ),
+ ModerateToHeavySnow( "27", "中到大雪", "Moderate to heavy snow" ),
+ HeavySnowToSnowStorm( "28", "大到暴雪", "Heavy snow to snowstorm" ),
+
+ Dust( "29", "浮尘", "Dust" ),
+ Sand( "30", "扬沙", "Sand" ),
+ SandStorm( "31", "强沙尘暴", "Sandstorm" ),
+
+ Densefog( "32", "浓雾", "Dense fog" ),
+ StrongFog( "49", "强浓雾", "Strong fog" ),
+ DenseFog( "57", "大雾", "Dense fog" ),
+ ExtraHeavyFog( "58", "特强浓雾", "Extra heavy fog" ),
+
+ Haze( "53", "霾", "Haze" ),
+ ModerateHaze( "54", "中度霾", "Moderate haze" ),
+ Severehaze( "55", "重度霾", "Severe haze" ),
+ SevereHaze( "56", "严重霾", "Severe haze" ),
+
+ Unknown( "99", "无", "Unknown" ),
+
+ Rain( "301", "雨", "rain" ),
+ Snow( "302", "雪", "snow" );
+
+ public final String id;
+ public final String nameCn;
+ public final String nameEn;
+
+ Phenomena( String id, String nameCn, String nameEn ) {
+ this.id = id;
+ this.nameCn = nameCn;
+ this.nameEn = nameEn;
+ }
+
+ static Map< String, Phenomena > mPhenomenas;
+
+ static {
+ if ( mPhenomenas == null ) {
+ synchronized ( Phenomena.class ) {
+ if ( mPhenomenas == null ) {
+ mPhenomenas = new HashMap<>();
+ for ( Phenomena weather : Phenomena.values() ) {
+ mPhenomenas.put( weather.id, weather );
+ }
+ }
+ }
+ }
+ }
+
+ public static synchronized Phenomena getById( String id ) {
+ if ( TextUtils.isEmpty( id ) ) {
+ return null;
+ }
+ return mPhenomenas.get( id );
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherCallback.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherCallback.java
new file mode 100644
index 0000000000..38b7d1d521
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherCallback.java
@@ -0,0 +1,5 @@
+package com.mogo.module.extensions.weather;
+
+public interface WeatherCallback {
+ void onWeatherLoaded( WeatherInfo weatherInfo );
+}
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherConstants.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherConstants.java
new file mode 100644
index 0000000000..6e2376bd34
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherConstants.java
@@ -0,0 +1,32 @@
+package com.mogo.module.extensions.weather;
+
+/**
+ * 天气
+ */
+public class WeatherConstants {
+
+ public final static String WEATHER_URI = "content://com.zhidao.weather/weatherinfo";
+
+ /**
+ * 天气
+ */
+ public static final String TEMPERATURE = "observetemperature";
+ /**
+ * 气象
+ */
+ public static final String PHENOMENA = "observephenomena";
+ /**
+ * 风向
+ */
+ public static final String WIND_DIRECTION = "observewinddirection";
+ /**
+ * 风力
+ */
+ public static final String WIND_FORCE = "observewindforce";
+
+ /**
+ * 天气消息加载完毕
+ */
+ public static final int MSG_WEATHER_LOADED = 0x1000;
+}
+
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherInfo.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherInfo.java
new file mode 100644
index 0000000000..d5afeb8d23
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherInfo.java
@@ -0,0 +1,142 @@
+package com.mogo.module.extensions.weather;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+
+import java.util.Objects;
+
+/**
+ * 天气
+ */
+public class WeatherInfo implements Parcelable {
+ /**
+ * 温度
+ */
+ private String temperature;
+
+ /**
+ * 描述信息
+ */
+ private String phenomena;
+
+ /**
+ * 风向
+ */
+ private String windDirection;
+
+ /**
+ * 风力
+ */
+ private String windForce;
+
+ @Override
+ public String toString() {
+ return "WeatherInfo{" +
+ "temperature='" + temperature + '\'' +
+ ", phenomena='" + phenomena + '\'' +
+ ", windDirection='" + windDirection + '\'' +
+ ", windForce='" + windForce + '\'' +
+ '}';
+ }
+
+ @Override
+ public boolean equals( Object o ) {
+ if ( this == o ) {
+ return true;
+ }
+ if ( !( o instanceof WeatherInfo ) ) {
+ return false;
+ }
+ WeatherInfo that = ( WeatherInfo ) o;
+ return Objects.equals( temperature, that.temperature ) &&
+ Objects.equals( phenomena, that.phenomena ) &&
+ Objects.equals( windDirection, that.windDirection ) &&
+ Objects.equals( windForce, that.windForce );
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash( temperature, phenomena, windDirection, windForce );
+ }
+
+ public WeatherInfo() {
+ }
+
+ public WeatherInfo( String temperature, String phenomena, String windDirection, String windForce ) {
+ this.temperature = temperature;
+ this.phenomena = phenomena;
+ this.windDirection = windDirection;
+ this.windForce = windForce;
+ }
+
+ public String getTemperature() {
+ return temperature;
+ }
+
+ public void setTemperature( String temperature ) {
+ this.temperature = temperature;
+ }
+
+ public String getPhenomena() {
+ return phenomena;
+ }
+
+ public void setPhenomena( String phenomena ) {
+ this.phenomena = phenomena;
+ }
+
+ public String getWindDirection() {
+ return windDirection;
+ }
+
+ public void setWindDirection( String windDirection ) {
+ this.windDirection = windDirection;
+ }
+
+ public String getWindForce() {
+ return windForce;
+ }
+
+ public void setWindForce( String windForce ) {
+ this.windForce = windForce;
+ }
+
+ public boolean isLegal() {
+ return !TextUtils.isEmpty( phenomena )
+ && !TextUtils.isEmpty( temperature );
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel( Parcel dest, int flags ) {
+ dest.writeString( this.temperature );
+ dest.writeString( this.phenomena );
+ dest.writeString( this.windDirection );
+ dest.writeString( this.windForce );
+ }
+
+ protected WeatherInfo( Parcel in ) {
+ this.temperature = in.readString();
+ this.phenomena = in.readString();
+ this.windDirection = in.readString();
+ this.windForce = in.readString();
+ }
+
+ public static final Creator< WeatherInfo > CREATOR = new Creator< WeatherInfo >() {
+ @Override
+ public WeatherInfo createFromParcel( Parcel source ) {
+ return new WeatherInfo( source );
+ }
+
+ @Override
+ public WeatherInfo[] newArray( int size ) {
+ return new WeatherInfo[size];
+ }
+ };
+}
+
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherModel.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherModel.java
new file mode 100644
index 0000000000..587bc387f0
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/weather/WeatherModel.java
@@ -0,0 +1,136 @@
+package com.mogo.module.extensions.weather;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+
+import androidx.annotation.NonNull;
+
+import com.mogo.utils.ThreadPoolService;
+import com.mogo.utils.logger.Logger;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-05
+ *
+ * 描述
+ */
+public class WeatherModel {
+
+ private static final String TAG = "WeatherModel";
+
+ private Context mContext;
+
+ private Uri mWeatherUri;
+ private Handler mHandler;
+ private ContentResolver mContentResolver;
+ private ContentObserver mContentObserver;
+ private WeatherCallback mCallback;
+
+ public WeatherModel( Context context ) {
+ this.mContext = context;
+ }
+
+ public void init( WeatherCallback callback ) {
+ mCallback = callback;
+ mWeatherUri = Uri.parse( WeatherConstants.WEATHER_URI );
+ mContentResolver = mContext.getContentResolver();
+ mHandler = new Handler( Looper.getMainLooper() ) {
+ @Override
+ public void handleMessage( @NonNull Message msg ) {
+ if ( msg.what == WeatherConstants.MSG_WEATHER_LOADED ) {
+ if ( mCallback != null ) {
+ mCallback.onWeatherLoaded( ( ( WeatherInfo ) msg.obj ) );
+ }
+ }
+ }
+ };
+ mContentObserver = new ContentObserver( mHandler ) {
+ @Override
+ public void onChange( boolean selfChange, Uri uri ) {
+ super.onChange( selfChange, uri );
+ try {
+ queryWeatherInformation();
+ } catch ( Exception e ) {
+ Logger.e( TAG, "error. ", e );
+ }
+ }
+ };
+ try {
+ mContentResolver.registerContentObserver( mWeatherUri, false, mContentObserver );
+ } catch ( Exception e ) {
+ Logger.e( TAG, "error when query weather info.", e );
+ }
+ }
+
+ public void queryWeatherInformation() {
+
+ if ( mCallback == null ) {
+ Logger.e( TAG, "WeatherModel#init should invoked " );
+ return;
+ }
+ startNewThreadToQuery();
+ }
+
+
+ private void startNewThreadToQuery() {
+ ThreadPoolService.execute( new Runnable() {
+ @Override
+ public void run() {
+ if ( mContentResolver == null ) {
+ return;
+ }
+ Cursor cursor = null;
+ try {
+ cursor = mContentResolver.query( mWeatherUri, null, null, null, null, null );
+ } catch ( Exception e ) {
+ return;
+ }
+ if ( cursor == null ) {
+ return;
+ }
+ WeatherInfo weatherInfo = new WeatherInfo();
+ if ( cursor.moveToFirst() ) {
+ int index = cursor.getColumnIndex( WeatherConstants.TEMPERATURE );
+ if ( index != -1 ) {
+ weatherInfo.setTemperature( cursor.getString( index ) );
+ }
+ index = cursor.getColumnIndex( WeatherConstants.PHENOMENA );
+ if ( index != -1 ) {
+ weatherInfo.setPhenomena( cursor.getString( index ) );
+ }
+ index = cursor.getColumnIndex( WeatherConstants.WIND_DIRECTION );
+ if ( index != -1 ) {
+ weatherInfo.setWindDirection( cursor.getString( index ) );
+ }
+ index = cursor.getColumnIndex( WeatherConstants.WIND_FORCE );
+ if ( index != -1 ) {
+ weatherInfo.setWindForce( cursor.getString( index ) );
+ }
+ Message msg = Message.obtain();
+ msg.obj = weatherInfo;
+ msg.what = WeatherConstants.MSG_WEATHER_LOADED;
+ mHandler.sendMessage( msg );
+ }
+ cursor.close();
+ }
+ } );
+ }
+
+ public void destroy() {
+ if ( mContentResolver != null && mContentObserver != null ) {
+ mContentResolver.unregisterContentObserver( mContentObserver );
+ }
+ mContext = null;
+ mWeatherUri = null;
+ mHandler = null;
+ mContentResolver = null;
+ mContentObserver = null;
+ mCallback = null;
+ }
+}
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message.png
new file mode 100644
index 0000000000..ec0f007df5
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_message.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_voice.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_voice.png
new file mode 100644
index 0000000000..6e46c49e70
Binary files /dev/null and b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/module_ext_ic_voice.png differ
diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml
new file mode 100644
index 0000000000..58d86caa09
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_drawable_msg_bkg.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
new file mode 100644
index 0000000000..e8e613ecd4
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values/colors.xml b/modules/mogo-module-extensions/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..550f80dff1
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values/strings.xml b/modules/mogo-module-extensions/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..a74b263891
--- /dev/null
+++ b/modules/mogo-module-extensions/src/main/res/values/strings.xml
@@ -0,0 +1,16 @@
+
+ mogo-module-extensions
+ 你好,蘑菇2.0开启智慧互联新世界
+ %1$d月%2$d日 %3$s
+ %1$d:%2$s
+ %s°
+
+ - 周日
+ - 周一
+ - 周二
+ - 周三
+ - 周四
+ - 周五
+ - 周六
+
+
diff --git a/modules/mogo-module-extensions/src/test/java/com/mogo/module/extensions/ExampleUnitTest.java b/modules/mogo-module-extensions/src/test/java/com/mogo/module/extensions/ExampleUnitTest.java
new file mode 100644
index 0000000000..bb37d878a8
--- /dev/null
+++ b/modules/mogo-module-extensions/src/test/java/com/mogo/module/extensions/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.mogo.module.extensions;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals( 4, 2 + 2 );
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle
index 94a1bc9cce..744c162ffb 100644
--- a/modules/mogo-module-main/build.gradle
+++ b/modules/mogo-module-main/build.gradle
@@ -42,17 +42,21 @@ dependencies {
implementation rootProject.ext.dependencies.modulemap
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogoservice
+ implementation rootProject.ext.dependencies.moduleservice
implementation rootProject.ext.dependencies.moduleapps
implementation rootProject.ext.dependencies.mogoconnection
+ implementation rootProject.ext.dependencies.moduleextensions
} else {
implementation project(":foudations:mogo-utils")
implementation project(":foudations:mogo-commons")
implementation project(':modules:mogo-module-common')
implementation project(':modules:mogo-module-map')
+ implementation project(':modules:mogo-module-service')
implementation project(':services:mogo-service-api')
implementation project(':services:mogo-service')
implementation project(':modules:mogo-module-apps')
implementation project(':foudations:mogo-connection')
+ implementation project(':modules:mogo-module-extensions')
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
index fff3cbf7a7..5d96764978 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
@@ -13,11 +13,15 @@ import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.module.common.MogoModule;
+import com.mogo.module.common.MogoModulePaths;
+import com.mogo.module.extensions.ExtensionsModuleConst;
import com.mogo.module.main.cards.CardModulesAdapter;
import com.mogo.module.main.cards.MogoModulesHandler;
import com.mogo.module.main.cards.MogoModulesManager;
import com.mogo.module.main.cards.OrientedViewPager;
import com.mogo.module.main.cards.VerticalStackTransformer;
+import com.mogo.module.service.ServiceConst;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.map.IMogoMapService;
@@ -99,11 +103,20 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
+ MogoModulePaths.addModule( new MogoModule( MogoModulePaths.PATH_MODULE_APPS, MogoModulePaths.PATH_MODULE_APPS ) );
+ MogoModulePaths.addModule( new MogoModule( MogoModulePaths.PATH_MODULE_MAP, MogoModulePaths.PATH_MODULE_MAP ) );
+ MogoModulePaths.addModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) );
+ MogoModulePaths.addModule( new MogoModule( ExtensionsModuleConst.PATH_EXTENSION, ExtensionsModuleConst.TYPE ) );
+
mMogoModuleHandler = new MogoModulesManager( this );
+ mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation();
+ if ( mMogoMapService != null ) {
+ mMogoMapService.getHostListenerRegister().registerHostMapListener( mMogoModuleHandler );
+ mMogoMapService.getHostListenerRegister().registerHostNaviListener( mMogoModuleHandler );
+ mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this );
+ }
- mMogoSocketManager = ( IMogoSocketManager ) ARouter.getInstance().build( MogoServicePaths.PATH_SOCKET_MANAGER ).navigation();
- mMogoSocketManager.init( getApplicationContext(), AppConstants.SOCKET_APP_ID );
-
+ mMogoModuleHandler.loadModules();
mMogoModuleHandler.onMapLoadedCallback( new Runnable() {
@Override
public void run() {
@@ -111,21 +124,17 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
loadModules();
}
} );
-
- mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation();
- if ( mMogoMapService != null ) {
- mMogoMapService.getHostListenerRegister().registerHostMapListener( mMogoModuleHandler );
- mMogoMapService.getHostListenerRegister().registerHostNaviListener( mMogoModuleHandler );
- mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this );
- }
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
mMogoModuleHandler.loadMap( R.id.module_main_id_map_fragment_container );
+ mMogoModuleHandler.loadAppsList( R.id.module_main_id_fragment_container );
+ mMogoModuleHandler.loadExtensions( R.id.module_main_id_header_fragment_container );
mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() );
mLocationClient.addLocationListener( this );
mLocationClient.start();
- mMogoModuleHandler.loadAppsList( R.id.module_main_id_fragment_container );
+ mMogoSocketManager = ( IMogoSocketManager ) ARouter.getInstance().build( MogoServicePaths.PATH_SOCKET_MANAGER ).navigation();
+ mMogoSocketManager.init( getApplicationContext(), AppConstants.SOCKET_APP_ID );
}
private void loadModules() {
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java
index f3868cb6ac..bac3025f0c 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java
@@ -24,6 +24,8 @@ public interface MogoModulesHandler extends IMogoMapListener,
void onMapLoadedCallback( Runnable callback );
+ void loadModules();
+
/**
* 加载卡片
*
@@ -31,20 +33,6 @@ public interface MogoModulesHandler extends IMogoMapListener,
*/
List< IMogoModuleProvider > loadCardsModule();
- /**
- * 加载小智语音
- *
- * @param containerId 容器id
- */
- void loadAIAssist( int containerId );
-
- /**
- * 加载天气
- *
- * @param containerId 容器id
- */
- void loadWeather( int containerId );
-
/**
* 加载地图
*
@@ -59,6 +47,13 @@ public interface MogoModulesHandler extends IMogoMapListener,
*/
void loadAppsList( int containerId );
+ /**
+ * 加载头部信息
+ *
+ * @param containerId
+ */
+ void loadExtensions( int containerId );
+
/**
* 设置某一个module可用
*
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java
index 2bfb79620a..f044239821 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java
@@ -1,6 +1,9 @@
package com.mogo.module.main.cards;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.text.TextUtils;
import android.view.MotionEvent;
@@ -18,8 +21,11 @@ import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.main.MainActivity;
+import com.mogo.module.main.receiver.MogoReceiver;
+import com.mogo.module.service.ServiceConst;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.module.ModuleType;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.logger.Logger;
@@ -43,17 +49,20 @@ public class MogoModulesManager implements MogoModulesHandler,
private static final String TAG = "MogoModulesManager";
private MainActivity mActivity;
- private final Map< String, IMogoModuleProvider > mCardProviders = new HashMap<>();
- private IMogoModuleProvider mMapProvider;
- private IMogoModuleProvider mAppsListProvider;
+
+ private Map< MogoModule, IMogoModuleProvider > mModuleProviders = new HashMap<>();
+
private String mEnableModuleName = null;
private Runnable mMapLoadedCallback;
+ private BroadcastReceiver mReceiver;
+
public MogoModulesManager( MainActivity activity ) {
if ( activity == null ) {
throw new NullPointerException( "activity can't be null." );
}
this.mActivity = activity;
+ registerReceiver();
}
private Context getContext() {
@@ -64,6 +73,19 @@ public class MogoModulesManager implements MogoModulesHandler,
return mActivity.getApplicationContext();
}
+ @Override
+ public void loadModules() {
+ final List< MogoModule > modules = MogoModulePaths.getModules();
+ if ( modules != null && !modules.isEmpty() ) {
+ for ( MogoModule module : modules ) {
+ IMogoModuleProvider provider = load( module.getPath() );
+ if ( provider != null ) {
+ mModuleProviders.put( module, provider );
+ }
+ }
+ }
+ }
+
@Override
public void onMapLoadedCallback( Runnable callback ) {
mMapLoadedCallback = callback;
@@ -73,40 +95,40 @@ public class MogoModulesManager implements MogoModulesHandler,
public List< IMogoModuleProvider > loadCardsModule() {
final List< MogoModule > modules = MogoModulePaths.getModules();
final ArrayList< IMogoModuleProvider > providers = new ArrayList<>();
- if ( modules != null && !modules.isEmpty() ) {
- for ( MogoModule module : modules ) {
- IMogoModuleProvider provider = load( module.getPath() );
+ for ( MogoModule module : modules ) {
+ IMogoModuleProvider provider = mModuleProviders.get( module );
+ if ( provider.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
providers.add( provider );
- mCardProviders.put( provider.getModuleName(), provider );
}
}
return providers;
}
- @Override
- public void loadAIAssist( int containerId ) {
-
- }
-
- @Override
- public void loadWeather( int containerId ) {
-
- }
-
- private IMogoModuleProvider getModuleProvider( String tag ) {
- return mCardProviders.get( tag );
- }
-
@Override
public void loadMap( int containerId ) {
- mMapProvider = load( MogoModulePaths.PATH_MODULE_MAP );
- addFragment( mMapProvider, containerId );
+ loadModuleByType( ModuleType.TYPE_MAP, containerId );
}
@Override
public void loadAppsList( int containerId ) {
- mAppsListProvider = load( MogoModulePaths.PATH_MODULE_APPS );
- addFragment( mAppsListProvider, containerId );
+ loadModuleByType( ModuleType.TYPE_APP_LIST, containerId );
+ }
+
+ @Override
+ public void loadExtensions( int containerId ) {
+ loadModuleByType( ModuleType.TYPE_EXTENSION, containerId );
+ }
+
+ private void loadModuleByType( int type, int containerId ) {
+ if ( mModuleProviders.isEmpty() ) {
+ return;
+ }
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == type ) {
+ addFragment( value, containerId );
+ return;
+ }
+ }
}
private IMogoModuleProvider load( String path ) {
@@ -131,14 +153,18 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void setEnable( String module ) {
mEnableModuleName = module;
- final Set< Map.Entry< String, IMogoModuleProvider > > entries = mCardProviders.entrySet();
+ final Set< Map.Entry< MogoModule, IMogoModuleProvider > > entries = mModuleProviders.entrySet();
if ( !entries.isEmpty() ) {
- for ( Map.Entry< String, IMogoModuleProvider > entry : entries ) {
- final String key = entry.getKey();
+ for ( Map.Entry< MogoModule, IMogoModuleProvider > entry : entries ) {
+ final MogoModule key = entry.getKey();
final IMogoModuleProvider provider = entry.getValue();
+ if ( provider.getType() != ModuleType.TYPE_CARD_FRAGMENT ) {
+ // 仅卡片需要生命周期
+ continue;
+ }
final IMogoModuleLifecycle lifecycle = provider.getCardLifecycle();
if ( lifecycle != null ) {
- if ( TextUtils.equals( key, mEnableModuleName ) ) {
+ if ( TextUtils.equals( key.getName(), mEnableModuleName ) ) {
lifecycle.onPerform();
} else {
lifecycle.onDisable();
@@ -151,134 +177,259 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onMapLoaded() {
-
if ( mMapLoadedCallback != null ) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;
}
-
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getMapListener() != null ) {
- provider.getMapListener().onMapLoaded();
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapLoaded();
}
}
}
@Override
public void onTouch( MotionEvent motionEvent ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getMapListener() != null ) {
- provider.getMapListener().onTouch( motionEvent );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onTouch( motionEvent );
+ }
+ }
+ } else {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onTouch( motionEvent );
+ }
}
}
}
@Override
public void onPOIClick( MogoPoi poi ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getMapListener() != null ) {
- provider.getMapListener().onPOIClick( poi );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onPOIClick( poi );
+ }
+ }
+ } else {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onPOIClick( poi );
+ }
}
}
}
@Override
public void onMapClick( MogoLatLng latLng ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getMapListener() != null ) {
- provider.getMapListener().onMapClick( latLng );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapClick( latLng );
+ }
+ }
+ } else {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapClick( latLng );
+ }
}
}
}
@Override
public void onLockMap( boolean isLock ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getMapListener() != null ) {
- provider.getMapListener().onLockMap( isLock );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onLockMap( isLock );
+ }
+ }
+ } else {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onLockMap( isLock );
+ }
}
}
}
@Override
public void onMapModeChanged( EnumMapUI ui ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getMapListener() != null ) {
- provider.getMapListener().onMapModeChanged( ui );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapModeChanged( ui );
+ }
+ }
+ } else {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapModeChanged( ui );
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapChanged( location, zoom, tilt, bearing );
+ }
+ }
+ } else {
+ if ( value.getMapListener() != null ) {
+ value.getMapListener().onMapChanged( location, zoom, tilt, bearing );
+ }
}
}
}
@Override
public void onInitNaviFailure() {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getNaviListener() != null ) {
- provider.getNaviListener().onInitNaviFailure();
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onInitNaviFailure();
+ }
+ }
+ } else {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onInitNaviFailure();
+ }
}
}
}
@Override
public void onInitNaviSuccess() {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getNaviListener() != null ) {
- provider.getNaviListener().onInitNaviSuccess();
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onInitNaviSuccess();
+ }
+ }
+ } else {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onInitNaviSuccess();
+ }
}
}
}
@Override
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getNaviListener() != null ) {
- provider.getNaviListener().onNaviInfoUpdate( naviinfo );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onNaviInfoUpdate( naviinfo );
+ }
+ }
+ } else {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onNaviInfoUpdate( naviinfo );
+ }
}
}
}
@Override
public void onStartNavi() {
- Logger.i( TAG, "导航已开始" );
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getNaviListener() != null ) {
- provider.getNaviListener().onStartNavi();
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onStartNavi();
+ }
+ }
+ } else {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onStartNavi();
+ }
}
}
}
@Override
public void onStopNavi() {
- Logger.i( TAG, "导航已停止" );
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getNaviListener() != null ) {
- provider.getNaviListener().onStopNavi();
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onStopNavi();
+ }
+ }
+ } else {
+ if ( value.getNaviListener() != null ) {
+ value.getNaviListener().onStopNavi();
+ }
}
}
}
@Override
public void onLocationChanged( MogoLocation location ) {
- if ( mEnableModuleName != null ) {
- IMogoModuleProvider provider = getModuleProvider( mEnableModuleName );
- if ( provider != null && provider.getLocationListener() != null ) {
- provider.getLocationListener().onLocationChanged( location );
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
+ if ( mEnableModuleName != null && TextUtils.equals( value.getModuleName(), mEnableModuleName ) ) {
+ if ( value.getLocationListener() != null ) {
+ value.getLocationListener().onLocationChanged( location );
+ }
+ }
+ } else {
+ if ( value.getLocationListener() != null ) {
+ value.getLocationListener().onLocationChanged( location );
+ }
}
}
}
+ public void registerReceiver() {
+ mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive( Context context, Intent intent ) {
+ final String action = intent.getAction();
+ if ( TextUtils.equals( action, Intent.ACTION_POWER_CONNECTED ) ) {
+ for ( IMogoModuleProvider value : mModuleProviders.values() ) {
+ if ( value.getCardLifecycle() != null ) {
+ value.getCardLifecycle().accOn();
+ }
+ }
+ }
+ if ( TextUtils.equals( action, Intent.ACTION_POWER_DISCONNECTED ) ) {
+
+ }
+ }
+ };
+ IntentFilter inputFilter = new IntentFilter();
+ inputFilter.addAction( Intent.ACTION_POWER_CONNECTED );
+ inputFilter.addAction( Intent.ACTION_POWER_DISCONNECTED );
+ getApplicationContext().registerReceiver( mReceiver, inputFilter );
+ }
+
@Override
public void destroy() {
-
+ if ( mReceiver != null ) {
+ try {
+ getApplicationContext().unregisterReceiver( mReceiver );
+ } catch ( Exception e ) {
+ }
+ }
+ mReceiver = null;
+ mActivity = null;
+ if ( mModuleProviders != null ) {
+ mModuleProviders.clear();
+ }
+ mModuleProviders = null;
+ mMapLoadedCallback = null;
+ mEnableModuleName = null;
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/OrientedViewPager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/OrientedViewPager.java
index 5b0410d476..348e2b1842 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/OrientedViewPager.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/OrientedViewPager.java
@@ -45,6 +45,12 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+/**
+ * Created by Bartosz Lipinski
+ * Based on castorflex's VerticalViewPager (https://github.com/castorflex/VerticalViewPager)
+ *
+ * 03.05.15
+ */
public class OrientedViewPager extends ViewGroup {
public enum Orientation {
@@ -64,7 +70,7 @@ public class OrientedViewPager extends ViewGroup {
private static final int MIN_FLING_VELOCITY = 400; // dips
- private static final int[] LAYOUT_ATTRS = new int[]{
+ private static final int[] LAYOUT_ATTRS = new int[] {
android.R.attr.layout_gravity
};
@@ -82,21 +88,21 @@ public class OrientedViewPager extends ViewGroup {
float offset;
}
- private static final Comparator< ItemInfo > COMPARATOR = new Comparator< ItemInfo >() {
+ private static final Comparator COMPARATOR = new Comparator() {
@Override
- public int compare( ItemInfo lhs, ItemInfo rhs ) {
+ public int compare(ItemInfo lhs, ItemInfo rhs) {
return lhs.position - rhs.position;
}
};
private static final Interpolator sInterpolator = new Interpolator() {
- public float getInterpolation( float t ) {
+ public float getInterpolation(float t) {
t -= 1.0f;
return t * t * t * t * t + 1.0f;
}
};
- private final ArrayList< ItemInfo > mItems = new ArrayList< ItemInfo >();
+ private final ArrayList mItems = new ArrayList();
private final ItemInfo mTempItem = new ItemInfo();
private final Rect mTempRect = new Rect();
@@ -190,7 +196,7 @@ public class OrientedViewPager extends ViewGroup {
private static final int DRAW_ORDER_FORWARD = 1;
private static final int DRAW_ORDER_REVERSE = 2;
private int mDrawingOrder;
- private ArrayList< View > mDrawingOrderedChildren;
+ private ArrayList mDrawingOrderedChildren;
private static final ViewPositionComparator sPositionComparator = new ViewPositionComparator();
/**
@@ -211,7 +217,7 @@ public class OrientedViewPager extends ViewGroup {
private final Runnable mEndScrollRunnable = new Runnable() {
public void run() {
- setScrollState( SCROLL_STATE_IDLE );
+ setScrollState(SCROLL_STATE_IDLE);
populate();
}
};
@@ -222,7 +228,7 @@ public class OrientedViewPager extends ViewGroup {
* Used internally to monitor when adapters are switched.
*/
interface OnAdapterChangeListener {
- public void onAdapterChanged( PagerAdapter oldAdapter, PagerAdapter newAdapter );
+ public void onAdapterChanged(PagerAdapter oldAdapter, PagerAdapter newAdapter);
}
/**
@@ -232,66 +238,66 @@ public class OrientedViewPager extends ViewGroup {
interface Decor {
}
- public OrientedViewPager( Context context ) {
- super( context );
+ public OrientedViewPager(Context context) {
+ super(context);
initViewPager();
}
- public OrientedViewPager( Context context, AttributeSet attrs ) {
- super( context, attrs );
+ public OrientedViewPager(Context context, AttributeSet attrs) {
+ super(context, attrs);
initViewPager();
}
void initViewPager() {
- setWillNotDraw( false );
- setDescendantFocusability( FOCUS_AFTER_DESCENDANTS );
- setFocusable( true );
+ setWillNotDraw(false);
+ setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
+ setFocusable(true);
final Context context = getContext();
- mScroller = new Scroller( context, sInterpolator );
- final ViewConfiguration configuration = ViewConfiguration.get( context );
+ mScroller = new Scroller(context, sInterpolator);
+ final ViewConfiguration configuration = ViewConfiguration.get(context);
final float density = context.getResources().getDisplayMetrics().density;
- mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop( configuration );
- mMinimumVelocity = ( int ) ( MIN_FLING_VELOCITY * density );
+ mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(configuration);
+ mMinimumVelocity = (int) (MIN_FLING_VELOCITY * density);
mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();
- mTopLeftEdge = new EdgeEffectCompat( context );
- mRightBottomEdge = new EdgeEffectCompat( context );
+ mTopLeftEdge = new EdgeEffectCompat(context);
+ mRightBottomEdge = new EdgeEffectCompat(context);
- mFlingDistance = ( int ) ( MIN_DISTANCE_FOR_FLING * density );
- mCloseEnough = ( int ) ( CLOSE_ENOUGH * density );
- mDefaultGutterSize = ( int ) ( DEFAULT_GUTTER_SIZE * density );
+ mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density);
+ mCloseEnough = (int) (CLOSE_ENOUGH * density);
+ mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density);
- ViewCompat.setAccessibilityDelegate( this, new MyAccessibilityDelegate() );
+ ViewCompat.setAccessibilityDelegate(this, new MyAccessibilityDelegate());
- if ( ViewCompat.getImportantForAccessibility( this )
- == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO ) {
- ViewCompat.setImportantForAccessibility( this,
- ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES );
+ if (ViewCompat.getImportantForAccessibility(this)
+ == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
+ ViewCompat.setImportantForAccessibility(this,
+ ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES);
}
}
- public void setOrientation( Orientation orientation ) {
+ public void setOrientation(Orientation orientation) {
mOrientation = orientation;
}
@Override
protected void onDetachedFromWindow() {
- removeCallbacks( mEndScrollRunnable );
+ removeCallbacks(mEndScrollRunnable);
super.onDetachedFromWindow();
}
- private void setScrollState( int newState ) {
- if ( mScrollState == newState ) {
+ private void setScrollState(int newState) {
+ if (mScrollState == newState) {
return;
}
mScrollState = newState;
- if ( mPageTransformer != null ) {
+ if (mPageTransformer != null) {
// PageTransformers can do complex things that benefit from hardware layers.
- enableLayers( newState != SCROLL_STATE_IDLE );
+ enableLayers(newState != SCROLL_STATE_IDLE);
}
- if ( mOnPageChangeListener != null ) {
- mOnPageChangeListener.onPageScrollStateChanged( newState );
+ if (mOnPageChangeListener != null) {
+ mOnPageChangeListener.onPageScrollStateChanged(newState);
}
}
@@ -300,58 +306,58 @@ public class OrientedViewPager extends ViewGroup {
*
* @param adapter Adapter to use
*/
- public void setAdapter( PagerAdapter adapter ) {
- if ( mAdapter != null ) {
- mAdapter.unregisterDataSetObserver( mObserver );
- mAdapter.startUpdate( this );
- for ( int i = 0; i < mItems.size(); i++ ) {
- final ItemInfo ii = mItems.get( i );
- mAdapter.destroyItem( this, ii.position, ii.object );
+ public void setAdapter(PagerAdapter adapter) {
+ if (mAdapter != null) {
+ mAdapter.unregisterDataSetObserver(mObserver);
+ mAdapter.startUpdate(this);
+ for (int i = 0; i < mItems.size(); i++) {
+ final ItemInfo ii = mItems.get(i);
+ mAdapter.destroyItem(this, ii.position, ii.object);
}
- mAdapter.finishUpdate( this );
+ mAdapter.finishUpdate(this);
mItems.clear();
removeNonDecorViews();
mCurItem = 0;
- scrollTo( 0, 0 );
+ scrollTo(0, 0);
}
final PagerAdapter oldAdapter = mAdapter;
mAdapter = adapter;
mExpectedAdapterCount = 0;
- if ( mAdapter != null ) {
- if ( mObserver == null ) {
+ if (mAdapter != null) {
+ if (mObserver == null) {
mObserver = new PagerObserver();
}
- mAdapter.registerDataSetObserver( mObserver );
+ mAdapter.registerDataSetObserver(mObserver);
mPopulatePending = false;
final boolean wasFirstLayout = mFirstLayout;
mFirstLayout = true;
mExpectedAdapterCount = mAdapter.getCount();
- if ( mRestoredCurItem >= 0 ) {
- mAdapter.restoreState( mRestoredAdapterState, mRestoredClassLoader );
- setCurrentItemInternal( mRestoredCurItem, false, true );
+ if (mRestoredCurItem >= 0) {
+ mAdapter.restoreState(mRestoredAdapterState, mRestoredClassLoader);
+ setCurrentItemInternal(mRestoredCurItem, false, true);
mRestoredCurItem = -1;
mRestoredAdapterState = null;
mRestoredClassLoader = null;
- } else if ( !wasFirstLayout ) {
+ } else if (!wasFirstLayout) {
populate();
} else {
requestLayout();
}
}
- if ( mAdapterChangeListener != null && oldAdapter != adapter ) {
- mAdapterChangeListener.onAdapterChanged( oldAdapter, adapter );
+ if (mAdapterChangeListener != null && oldAdapter != adapter) {
+ mAdapterChangeListener.onAdapterChanged(oldAdapter, adapter);
}
}
private void removeNonDecorViews() {
- for ( int i = 0; i < getChildCount(); i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
- if ( !lp.isDecor ) {
- removeViewAt( i );
+ for (int i = 0; i < getChildCount(); i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (!lp.isDecor) {
+ removeViewAt(i);
i--;
}
}
@@ -366,12 +372,12 @@ public class OrientedViewPager extends ViewGroup {
return mAdapter;
}
- void setOnAdapterChangeListener( OnAdapterChangeListener listener ) {
+ void setOnAdapterChangeListener(OnAdapterChangeListener listener) {
mAdapterChangeListener = listener;
}
private int getClientSize() {
- return ( mOrientation == Orientation.VERTICAL ) ?
+ return (mOrientation == Orientation.VERTICAL) ?
getMeasuredHeight() - getPaddingTop() - getPaddingBottom() :
getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
}
@@ -383,108 +389,108 @@ public class OrientedViewPager extends ViewGroup {
*
* @param item Item index to select
*/
- public void setCurrentItem( int item ) {
+ public void setCurrentItem(int item) {
mPopulatePending = false;
- setCurrentItemInternal( item, !mFirstLayout, false );
+ setCurrentItemInternal(item, !mFirstLayout, false);
}
/**
* Set the currently selected page.
*
- * @param item Item index to select
+ * @param item Item index to select
* @param smoothScroll True to smoothly scroll to the new item, false to transition immediately
*/
- public void setCurrentItem( int item, boolean smoothScroll ) {
+ public void setCurrentItem(int item, boolean smoothScroll) {
mPopulatePending = false;
- setCurrentItemInternal( item, smoothScroll, false );
+ setCurrentItemInternal(item, smoothScroll, false);
}
public int getCurrentItem() {
return mCurItem;
}
- void setCurrentItemInternal( int item, boolean smoothScroll, boolean always ) {
- setCurrentItemInternal( item, smoothScroll, always, 0 );
+ void setCurrentItemInternal(int item, boolean smoothScroll, boolean always) {
+ setCurrentItemInternal(item, smoothScroll, always, 0);
}
- void setCurrentItemInternal( int item, boolean smoothScroll, boolean always, int velocity ) {
- if ( mAdapter == null || mAdapter.getCount() <= 0 ) {
- setScrollingCacheEnabled( false );
+ void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) {
+ if (mAdapter == null || mAdapter.getCount() <= 0) {
+ setScrollingCacheEnabled(false);
return;
}
- if ( !always && mCurItem == item && mItems.size() != 0 ) {
- setScrollingCacheEnabled( false );
+ if (!always && mCurItem == item && mItems.size() != 0) {
+ setScrollingCacheEnabled(false);
return;
}
- if ( item < 0 ) {
+ if (item < 0) {
item = 0;
- } else if ( item >= mAdapter.getCount() ) {
+ } else if (item >= mAdapter.getCount()) {
item = mAdapter.getCount() - 1;
}
final int pageLimit = mOffscreenPageLimit;
- if ( item > ( mCurItem + pageLimit ) || item < ( mCurItem - pageLimit ) ) {
+ if (item > (mCurItem + pageLimit) || item < (mCurItem - pageLimit)) {
// We are doing a jump by more than one page. To avoid
// glitches, we want to keep all current pages in the view
// until the scroll ends.
- for ( int i = 0; i < mItems.size(); i++ ) {
- mItems.get( i ).scrolling = true;
+ for (int i = 0; i < mItems.size(); i++) {
+ mItems.get(i).scrolling = true;
}
}
final boolean dispatchSelected = mCurItem != item;
- if ( mFirstLayout ) {
+ if (mFirstLayout) {
// We don't have any idea how big we are yet and shouldn't have any pages either.
// Just set things up and let the pending layout handle things.
mCurItem = item;
- if ( dispatchSelected && mOnPageChangeListener != null ) {
- mOnPageChangeListener.onPageSelected( item );
+ if (dispatchSelected && mOnPageChangeListener != null) {
+ mOnPageChangeListener.onPageSelected(item);
}
- if ( dispatchSelected && mInternalPageChangeListener != null ) {
- mInternalPageChangeListener.onPageSelected( item );
+ if (dispatchSelected && mInternalPageChangeListener != null) {
+ mInternalPageChangeListener.onPageSelected(item);
}
requestLayout();
} else {
- populate( item );
- scrollToItem( item, smoothScroll, velocity, dispatchSelected );
+ populate(item);
+ scrollToItem(item, smoothScroll, velocity, dispatchSelected);
}
}
- private void scrollToItem( int item, boolean smoothScroll, int velocity,
- boolean dispatchSelected ) {
- final ItemInfo curInfo = infoForPosition( item );
+ private void scrollToItem(int item, boolean smoothScroll, int velocity,
+ boolean dispatchSelected) {
+ final ItemInfo curInfo = infoForPosition(item);
int dest = 0;
- if ( curInfo != null ) {
+ if (curInfo != null) {
final int size = getClientSize();
- dest = ( int ) ( size * Math.max( mFirstOffset,
- Math.min( curInfo.offset, mLastOffset ) ) );
+ dest = (int) (size * Math.max(mFirstOffset,
+ Math.min(curInfo.offset, mLastOffset)));
}
- if ( smoothScroll ) {
- if ( mOrientation == Orientation.VERTICAL ) {
- smoothScrollTo( 0, dest, velocity );
+ if (smoothScroll) {
+ if (mOrientation == Orientation.VERTICAL) {
+ smoothScrollTo(0, dest, velocity);
} else {
- smoothScrollTo( dest, 0, velocity );
+ smoothScrollTo(dest, 0, velocity);
}
- if ( dispatchSelected && mOnPageChangeListener != null ) {
- mOnPageChangeListener.onPageSelected( item );
+ if (dispatchSelected && mOnPageChangeListener != null) {
+ mOnPageChangeListener.onPageSelected(item);
}
- if ( dispatchSelected && mInternalPageChangeListener != null ) {
- mInternalPageChangeListener.onPageSelected( item );
+ if (dispatchSelected && mInternalPageChangeListener != null) {
+ mInternalPageChangeListener.onPageSelected(item);
}
} else {
- if ( dispatchSelected && mOnPageChangeListener != null ) {
- mOnPageChangeListener.onPageSelected( item );
+ if (dispatchSelected && mOnPageChangeListener != null) {
+ mOnPageChangeListener.onPageSelected(item);
}
- if ( dispatchSelected && mInternalPageChangeListener != null ) {
- mInternalPageChangeListener.onPageSelected( item );
+ if (dispatchSelected && mInternalPageChangeListener != null) {
+ mInternalPageChangeListener.onPageSelected(item);
}
- completeScroll( false );
- if ( mOrientation == Orientation.VERTICAL ) {
- scrollTo( 0, dest );
+ completeScroll(false);
+ if (mOrientation == Orientation.VERTICAL) {
+ scrollTo(0, dest);
} else {
- scrollTo( dest, 0 );
+ scrollTo(dest, 0);
}
- pageScrolled( dest );
+ pageScrolled(dest);
}
}
@@ -494,7 +500,7 @@ public class OrientedViewPager extends ViewGroup {
*
* @param listener Listener to set
*/
- public void setOnPageChangeListener( ViewPager.OnPageChangeListener listener ) {
+ public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {
mOnPageChangeListener = listener;
}
@@ -508,48 +514,48 @@ public class OrientedViewPager extends ViewGroup {
* As a result, setting a PageTransformer prior to Android 3.0 (API 11) will have no effect.
*
* @param reverseDrawingOrder true if the supplied PageTransformer requires page views
- * to be drawn from last to first instead of first to last.
- * @param transformer PageTransformer that will modify each page's animation properties
+ * to be drawn from last to first instead of first to last.
+ * @param transformer PageTransformer that will modify each page's animation properties
*/
- public void setPageTransformer( boolean reverseDrawingOrder,
- ViewPager.PageTransformer transformer ) {
- if ( Build.VERSION.SDK_INT >= 11 ) {
+ public void setPageTransformer(boolean reverseDrawingOrder,
+ ViewPager.PageTransformer transformer) {
+ if (Build.VERSION.SDK_INT >= 11) {
final boolean hasTransformer = transformer != null;
- final boolean needsPopulate = hasTransformer != ( mPageTransformer != null );
+ final boolean needsPopulate = hasTransformer != (mPageTransformer != null);
mPageTransformer = transformer;
- setChildrenDrawingOrderEnabledCompat( hasTransformer );
- if ( hasTransformer ) {
+ setChildrenDrawingOrderEnabledCompat(hasTransformer);
+ if (hasTransformer) {
mDrawingOrder = reverseDrawingOrder ? DRAW_ORDER_REVERSE : DRAW_ORDER_FORWARD;
} else {
mDrawingOrder = DRAW_ORDER_DEFAULT;
}
- if ( needsPopulate ) populate();
+ if (needsPopulate) populate();
}
}
- void setChildrenDrawingOrderEnabledCompat( boolean enable ) {
- if ( Build.VERSION.SDK_INT >= 7 ) {
- if ( mSetChildrenDrawingOrderEnabled == null ) {
+ void setChildrenDrawingOrderEnabledCompat(boolean enable) {
+ if (Build.VERSION.SDK_INT >= 7) {
+ if (mSetChildrenDrawingOrderEnabled == null) {
try {
mSetChildrenDrawingOrderEnabled = ViewGroup.class.getDeclaredMethod(
- "setChildrenDrawingOrderEnabled", new Class[]{Boolean.TYPE} );
- } catch ( NoSuchMethodException e ) {
- Log.e( TAG, "Can't find setChildrenDrawingOrderEnabled", e );
+ "setChildrenDrawingOrderEnabled", new Class[] { Boolean.TYPE });
+ } catch (NoSuchMethodException e) {
+ Log.e(TAG, "Can't find setChildrenDrawingOrderEnabled", e);
}
}
try {
- mSetChildrenDrawingOrderEnabled.invoke( this, enable );
- } catch ( Exception e ) {
- Log.e( TAG, "Error changing children drawing order", e );
+ mSetChildrenDrawingOrderEnabled.invoke(this, enable);
+ } catch (Exception e) {
+ Log.e(TAG, "Error changing children drawing order", e);
}
}
}
@Override
- protected int getChildDrawingOrder( int childCount, int i ) {
+ protected int getChildDrawingOrder(int childCount, int i) {
final int index = mDrawingOrder == DRAW_ORDER_REVERSE ? childCount - 1 - i : i;
final int result =
- ( ( LayoutParams ) mDrawingOrderedChildren.get( index ).getLayoutParams() ).childIndex;
+ ((LayoutParams) mDrawingOrderedChildren.get(index).getLayoutParams()).childIndex;
return result;
}
@@ -560,7 +566,7 @@ public class OrientedViewPager extends ViewGroup {
* @return The old listener that was set, if any.
*/
ViewPager.OnPageChangeListener setInternalPageChangeListener(
- ViewPager.OnPageChangeListener listener ) {
+ ViewPager.OnPageChangeListener listener) {
ViewPager.OnPageChangeListener oldListener = mInternalPageChangeListener;
mInternalPageChangeListener = listener;
return oldListener;
@@ -594,13 +600,13 @@ public class OrientedViewPager extends ViewGroup {
*
* @param limit How many pages will be kept offscreen in an idle state.
*/
- public void setOffscreenPageLimit( int limit ) {
- if ( limit < DEFAULT_OFFSCREEN_PAGES ) {
- Log.w( TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
- DEFAULT_OFFSCREEN_PAGES );
+ public void setOffscreenPageLimit(int limit) {
+ if (limit < DEFAULT_OFFSCREEN_PAGES) {
+ Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
+ DEFAULT_OFFSCREEN_PAGES);
limit = DEFAULT_OFFSCREEN_PAGES;
}
- if ( limit != mOffscreenPageLimit ) {
+ if (limit != mOffscreenPageLimit) {
mOffscreenPageLimit = limit;
populate();
}
@@ -614,12 +620,12 @@ public class OrientedViewPager extends ViewGroup {
* @see #setPageMarginDrawable(Drawable)
* @see #setPageMarginDrawable(int)
*/
- public void setPageMargin( int marginPixels ) {
+ public void setPageMargin(int marginPixels) {
final int oldMargin = mPageMargin;
mPageMargin = marginPixels;
- final int size = ( mOrientation == Orientation.VERTICAL ) ? getHeight() : getWidth();
- recomputeScrollPosition( size, size, marginPixels, oldMargin );
+ final int size = (mOrientation == Orientation.VERTICAL) ? getHeight() : getWidth();
+ recomputeScrollPosition(size, size, marginPixels, oldMargin);
requestLayout();
}
@@ -638,10 +644,10 @@ public class OrientedViewPager extends ViewGroup {
*
* @param d Drawable to display between pages
*/
- public void setPageMarginDrawable( Drawable d ) {
+ public void setPageMarginDrawable(Drawable d) {
mMarginDrawable = d;
- if ( d != null ) refreshDrawableState();
- setWillNotDraw( d == null );
+ if (d != null) refreshDrawableState();
+ setWillNotDraw(d == null);
invalidate();
}
@@ -650,21 +656,21 @@ public class OrientedViewPager extends ViewGroup {
*
* @param resId Resource ID of a drawable to display between pages
*/
- public void setPageMarginDrawable( int resId ) {
- setPageMarginDrawable( getContext().getResources().getDrawable( resId ) );
+ public void setPageMarginDrawable(int resId) {
+ setPageMarginDrawable(getContext().getResources().getDrawable(resId));
}
@Override
- protected boolean verifyDrawable( Drawable who ) {
- return super.verifyDrawable( who ) || who == mMarginDrawable;
+ protected boolean verifyDrawable(Drawable who) {
+ return super.verifyDrawable(who) || who == mMarginDrawable;
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
final Drawable d = mMarginDrawable;
- if ( d != null && d.isStateful() ) {
- d.setState( getDrawableState() );
+ if (d != null && d.isStateful()) {
+ d.setState(getDrawableState());
}
}
@@ -672,10 +678,10 @@ public class OrientedViewPager extends ViewGroup {
// the screen has to travel, however, we don't want this duration to be effected in a
// purely linear fashion. Instead, we use this method to moderate the effect that the distance
// of travel has on the overall snap duration.
- float distanceInfluenceForSnapDuration( float f ) {
+ float distanceInfluenceForSnapDuration(float f) {
f -= 0.5f; // center the values about 0.
f *= 0.3f * Math.PI / 2.0f;
- return ( float ) Math.sin( f );
+ return (float) Math.sin(f);
}
/**
@@ -684,67 +690,67 @@ public class OrientedViewPager extends ViewGroup {
* @param x the number of pixels to scroll by on the X axis
* @param y the number of pixels to scroll by on the Y axis
*/
- void smoothScrollTo( int x, int y ) {
- smoothScrollTo( x, y, 0 );
+ void smoothScrollTo(int x, int y) {
+ smoothScrollTo(x, y, 0);
}
/**
* Like {@link View#scrollBy}, but scroll smoothly instead of immediately.
*
- * @param x the number of pixels to scroll by on the X axis
- * @param y the number of pixels to scroll by on the Y axis
+ * @param x the number of pixels to scroll by on the X axis
+ * @param y the number of pixels to scroll by on the Y axis
* @param velocity the velocity associated with a fling, if applicable. (0 otherwise)
*/
- void smoothScrollTo( int x, int y, int velocity ) {
- if ( getChildCount() == 0 ) {
+ void smoothScrollTo(int x, int y, int velocity) {
+ if (getChildCount() == 0) {
// Nothing to do.
- setScrollingCacheEnabled( false );
+ setScrollingCacheEnabled(false);
return;
}
int sx = getScrollX();
int sy = getScrollY();
int dx = x - sx;
int dy = y - sy;
- if ( dx == 0 && dy == 0 ) {
- completeScroll( false );
+ if (dx == 0 && dy == 0) {
+ completeScroll(false);
populate();
- setScrollState( SCROLL_STATE_IDLE );
+ setScrollState(SCROLL_STATE_IDLE);
return;
}
- setScrollingCacheEnabled( true );
- setScrollState( SCROLL_STATE_SETTLING );
+ setScrollingCacheEnabled(true);
+ setScrollState(SCROLL_STATE_SETTLING);
final int size = getClientSize();
final int halfSize = size / 2;
- final float distanceRatio = Math.min( 1f, 1.0f * Math.abs( dx ) / size );
+ final float distanceRatio = Math.min(1f, 1.0f * Math.abs(dx) / size);
final float distance = halfSize + halfSize *
- distanceInfluenceForSnapDuration( distanceRatio );
+ distanceInfluenceForSnapDuration(distanceRatio);
int duration = 0;
- velocity = Math.abs( velocity );
- if ( velocity > 0 ) {
- duration = 4 * Math.round( 1000 * Math.abs( distance / velocity ) );
+ velocity = Math.abs(velocity);
+ if (velocity > 0) {
+ duration = 4 * Math.round(1000 * Math.abs(distance / velocity));
} else {
- final float pageSize = size * mAdapter.getPageWidth( mCurItem );
- final float pageDelta = ( float ) Math.abs( dx ) / ( pageSize + mPageMargin );
- duration = ( int ) ( ( pageDelta + 1 ) * 100 );
+ final float pageSize = size * mAdapter.getPageWidth(mCurItem);
+ final float pageDelta = (float) Math.abs(dx) / (pageSize + mPageMargin);
+ duration = (int) ((pageDelta + 1) * 100);
}
- duration = Math.min( duration, MAX_SETTLE_DURATION );
+ duration = Math.min(duration, MAX_SETTLE_DURATION);
- mScroller.startScroll( sx, sy, dx, dy, duration );
- ViewCompat.postInvalidateOnAnimation( this );
+ mScroller.startScroll(sx, sy, dx, dy, duration);
+ ViewCompat.postInvalidateOnAnimation(this);
}
- ItemInfo addNewItem( int position, int index ) {
+ ItemInfo addNewItem(int position, int index) {
ItemInfo ii = new ItemInfo();
ii.position = position;
- ii.object = mAdapter.instantiateItem( this, position );
- ii.sizeFactor = mAdapter.getPageWidth( position );
- if ( index < 0 || index >= mItems.size() ) {
- mItems.add( ii );
+ ii.object = mAdapter.instantiateItem(this, position);
+ ii.sizeFactor = mAdapter.getPageWidth(position);
+ if (index < 0 || index >= mItems.size()) {
+ mItems.add(ii);
} else {
- mItems.add( index, ii );
+ mItems.add(index, ii);
}
return ii;
}
@@ -759,36 +765,36 @@ public class OrientedViewPager extends ViewGroup {
int newCurrItem = mCurItem;
boolean isUpdating = false;
- for ( int i = 0; i < mItems.size(); i++ ) {
- final ItemInfo ii = mItems.get( i );
- final int newPos = mAdapter.getItemPosition( ii.object );
+ for (int i = 0; i < mItems.size(); i++) {
+ final ItemInfo ii = mItems.get(i);
+ final int newPos = mAdapter.getItemPosition(ii.object);
- if ( newPos == PagerAdapter.POSITION_UNCHANGED ) {
+ if (newPos == PagerAdapter.POSITION_UNCHANGED) {
continue;
}
- if ( newPos == PagerAdapter.POSITION_NONE ) {
- mItems.remove( i );
+ if (newPos == PagerAdapter.POSITION_NONE) {
+ mItems.remove(i);
i--;
- if ( !isUpdating ) {
- mAdapter.startUpdate( this );
+ if (!isUpdating) {
+ mAdapter.startUpdate(this);
isUpdating = true;
}
- mAdapter.destroyItem( this, ii.position, ii.object );
+ mAdapter.destroyItem(this, ii.position, ii.object);
needPopulate = true;
- if ( mCurItem == ii.position ) {
+ if (mCurItem == ii.position) {
// Keep the current item in the valid range
- newCurrItem = Math.max( 0, Math.min( mCurItem, adapterCount - 1 ) );
+ newCurrItem = Math.max(0, Math.min(mCurItem, adapterCount - 1));
needPopulate = true;
}
continue;
}
- if ( ii.position != newPos ) {
- if ( ii.position == mCurItem ) {
+ if (ii.position != newPos) {
+ if (ii.position == mCurItem) {
// Our current item changed position. Follow it.
newCurrItem = newPos;
}
@@ -798,42 +804,42 @@ public class OrientedViewPager extends ViewGroup {
}
}
- if ( isUpdating ) {
- mAdapter.finishUpdate( this );
+ if (isUpdating) {
+ mAdapter.finishUpdate(this);
}
- Collections.sort( mItems, COMPARATOR );
+ Collections.sort(mItems, COMPARATOR);
- if ( needPopulate ) {
+ if (needPopulate) {
// Reset our known page widths; populate will recompute them.
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
- if ( !lp.isDecor ) {
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (!lp.isDecor) {
lp.heightFactor = 0.f;
}
}
- setCurrentItemInternal( newCurrItem, false, true );
+ setCurrentItemInternal(newCurrItem, false, true);
requestLayout();
}
}
void populate() {
- populate( mCurItem );
+ populate(mCurItem);
}
- void populate( int newCurrentItem ) {
+ void populate(int newCurrentItem) {
ItemInfo oldCurInfo = null;
int focusDirection = View.FOCUS_FORWARD;
- if ( mCurItem != newCurrentItem ) {
+ if (mCurItem != newCurrentItem) {
focusDirection = mCurItem < newCurrentItem ? View.FOCUS_DOWN : View.FOCUS_UP;
- oldCurInfo = infoForPosition( mCurItem );
+ oldCurInfo = infoForPosition(mCurItem);
mCurItem = newCurrentItem;
}
- if ( mAdapter == null ) {
+ if (mAdapter == null) {
sortChildDrawingOrder();
return;
}
@@ -842,8 +848,8 @@ public class OrientedViewPager extends ViewGroup {
// on creating views from the time the user releases their finger to
// fling to a new position until we have finished the scroll to
// that position, avoiding glitches from happening at that point.
- if ( mPopulatePending ) {
- if ( DEBUG ) Log.i( TAG, "populate is pending, skipping for now..." );
+ if (mPopulatePending) {
+ if (DEBUG) Log.i(TAG, "populate is pending, skipping for now...");
sortChildDrawingOrder();
return;
}
@@ -851,159 +857,159 @@ public class OrientedViewPager extends ViewGroup {
// Also, don't populate until we are attached to a window. This is to
// avoid trying to populate before we have restored our view hierarchy
// state and conflicting with what is restored.
- if ( getWindowToken() == null ) {
+ if (getWindowToken() == null) {
return;
}
- mAdapter.startUpdate( this );
+ mAdapter.startUpdate(this);
final int pageLimit = mOffscreenPageLimit;
- final int startPos = Math.max( 0, mCurItem - pageLimit );
+ final int startPos = Math.max(0, mCurItem - pageLimit);
final int N = mAdapter.getCount();
- final int endPos = Math.min( N - 1, mCurItem + pageLimit );
+ final int endPos = Math.min(N - 1, mCurItem + pageLimit);
- if ( N != mExpectedAdapterCount ) {
+ if (N != mExpectedAdapterCount) {
String resName;
try {
- resName = getResources().getResourceName( getId() );
- } catch ( Resources.NotFoundException e ) {
- resName = Integer.toHexString( getId() );
+ resName = getResources().getResourceName(getId());
+ } catch (Resources.NotFoundException e) {
+ resName = Integer.toHexString(getId());
}
- throw new IllegalStateException( "The application's PagerAdapter changed the adapter's" +
+ throw new IllegalStateException("The application's PagerAdapter changed the adapter's" +
" contents without calling PagerAdapter#notifyDataSetChanged!" +
" Expected adapter item count: " + mExpectedAdapterCount + ", found: " + N +
" Pager id: " + resName +
" Pager class: " + getClass() +
- " Problematic adapter: " + mAdapter.getClass() );
+ " Problematic adapter: " + mAdapter.getClass());
}
// Locate the currently focused item or add it if needed.
int curIndex = -1;
ItemInfo curItem = null;
- for ( curIndex = 0; curIndex < mItems.size(); curIndex++ ) {
- final ItemInfo ii = mItems.get( curIndex );
- if ( ii.position >= mCurItem ) {
- if ( ii.position == mCurItem ) curItem = ii;
+ for (curIndex = 0; curIndex < mItems.size(); curIndex++) {
+ final ItemInfo ii = mItems.get(curIndex);
+ if (ii.position >= mCurItem) {
+ if (ii.position == mCurItem) curItem = ii;
break;
}
}
- if ( curItem == null && N > 0 ) {
- curItem = addNewItem( mCurItem, curIndex );
+ if (curItem == null && N > 0) {
+ curItem = addNewItem(mCurItem, curIndex);
}
// Fill 3x the available width or up to the number of offscreen
// pages requested to either side, whichever is larger.
// If we have no current item we have no work to do.
- if ( curItem != null ) {
+ if (curItem != null) {
float extraSizeTopLeft = 0.f;
int itemIndex = curIndex - 1;
- ItemInfo ii = itemIndex >= 0 ? mItems.get( itemIndex ) : null;
+ ItemInfo ii = itemIndex >= 0 ? mItems.get(itemIndex) : null;
final int clientSize = getClientSize();
final float topLeftSizeNeeded = clientSize <= 0 ? 0 :
- 2.f - curItem.sizeFactor + ( float ) getPaddingLeft() / ( float ) clientSize;
- for ( int pos = mCurItem - 1; pos >= 0; pos-- ) {
- if ( extraSizeTopLeft >= topLeftSizeNeeded && pos < startPos ) {
- if ( ii == null ) {
+ 2.f - curItem.sizeFactor + (float) getPaddingLeft() / (float) clientSize;
+ for (int pos = mCurItem - 1; pos >= 0; pos--) {
+ if (extraSizeTopLeft >= topLeftSizeNeeded && pos < startPos) {
+ if (ii == null) {
break;
}
- if ( pos == ii.position && !ii.scrolling ) {
- mItems.remove( itemIndex );
- mAdapter.destroyItem( this, pos, ii.object );
- if ( DEBUG ) {
- Log.i( TAG, "populate() - destroyItem() with pos: " + pos +
- " view: " + ( ( View ) ii.object ) );
+ if (pos == ii.position && !ii.scrolling) {
+ mItems.remove(itemIndex);
+ mAdapter.destroyItem(this, pos, ii.object);
+ if (DEBUG) {
+ Log.i(TAG, "populate() - destroyItem() with pos: " + pos +
+ " view: " + ((View) ii.object));
}
itemIndex--;
curIndex--;
- ii = itemIndex >= 0 ? mItems.get( itemIndex ) : null;
+ ii = itemIndex >= 0 ? mItems.get(itemIndex) : null;
}
- } else if ( ii != null && pos == ii.position ) {
+ } else if (ii != null && pos == ii.position) {
extraSizeTopLeft += ii.sizeFactor;
itemIndex--;
- ii = itemIndex >= 0 ? mItems.get( itemIndex ) : null;
+ ii = itemIndex >= 0 ? mItems.get(itemIndex) : null;
} else {
- ii = addNewItem( pos, itemIndex + 1 );
+ ii = addNewItem(pos, itemIndex + 1);
extraSizeTopLeft += ii.sizeFactor;
curIndex++;
- ii = itemIndex >= 0 ? mItems.get( itemIndex ) : null;
+ ii = itemIndex >= 0 ? mItems.get(itemIndex) : null;
}
}
float extraSizeBottomRight = curItem.sizeFactor;
itemIndex = curIndex + 1;
- if ( extraSizeBottomRight < 2.f ) {
- ii = itemIndex < mItems.size() ? mItems.get( itemIndex ) : null;
+ if (extraSizeBottomRight < 2.f) {
+ ii = itemIndex < mItems.size() ? mItems.get(itemIndex) : null;
final float bottomRightSizeNeeded = clientSize <= 0 ? 0 :
- ( float ) getPaddingRight() / ( float ) clientSize + 2.f;
- for ( int pos = mCurItem + 1; pos < N; pos++ ) {
- if ( extraSizeBottomRight >= bottomRightSizeNeeded && pos > endPos ) {
- if ( ii == null ) {
+ (float) getPaddingRight() / (float) clientSize + 2.f;
+ for (int pos = mCurItem + 1; pos < N; pos++) {
+ if (extraSizeBottomRight >= bottomRightSizeNeeded && pos > endPos) {
+ if (ii == null) {
break;
}
- if ( pos == ii.position && !ii.scrolling ) {
- mItems.remove( itemIndex );
- mAdapter.destroyItem( this, pos, ii.object );
- if ( DEBUG ) {
- Log.i( TAG, "populate() - destroyItem() with pos: " + pos +
- " view: " + ( ( View ) ii.object ) );
+ if (pos == ii.position && !ii.scrolling) {
+ mItems.remove(itemIndex);
+ mAdapter.destroyItem(this, pos, ii.object);
+ if (DEBUG) {
+ Log.i(TAG, "populate() - destroyItem() with pos: " + pos +
+ " view: " + ((View) ii.object));
}
- ii = itemIndex < mItems.size() ? mItems.get( itemIndex ) : null;
+ ii = itemIndex < mItems.size() ? mItems.get(itemIndex) : null;
}
- } else if ( ii != null && pos == ii.position ) {
+ } else if (ii != null && pos == ii.position) {
extraSizeBottomRight += ii.sizeFactor;
itemIndex++;
- ii = itemIndex < mItems.size() ? mItems.get( itemIndex ) : null;
+ ii = itemIndex < mItems.size() ? mItems.get(itemIndex) : null;
} else {
- ii = addNewItem( pos, itemIndex );
+ ii = addNewItem(pos, itemIndex);
itemIndex++;
extraSizeBottomRight += ii.sizeFactor;
- ii = itemIndex < mItems.size() ? mItems.get( itemIndex ) : null;
+ ii = itemIndex < mItems.size() ? mItems.get(itemIndex) : null;
}
}
}
- calculatePageOffsets( curItem, curIndex, oldCurInfo );
+ calculatePageOffsets(curItem, curIndex, oldCurInfo);
}
- if ( DEBUG ) {
- Log.i( TAG, "Current page list:" );
- for ( int i = 0; i < mItems.size(); i++ ) {
- Log.i( TAG, "#" + i + ": page " + mItems.get( i ).position );
+ if (DEBUG) {
+ Log.i(TAG, "Current page list:");
+ for (int i = 0; i < mItems.size(); i++) {
+ Log.i(TAG, "#" + i + ": page " + mItems.get(i).position);
}
}
- mAdapter.setPrimaryItem( this, mCurItem, curItem != null ? curItem.object : null );
+ mAdapter.setPrimaryItem(this, mCurItem, curItem != null ? curItem.object : null);
- mAdapter.finishUpdate( this );
+ mAdapter.finishUpdate(this);
// Check width measurement of current pages and drawing sort order.
// Update LayoutParams as needed.
final int childCount = getChildCount();
- if ( mOrientation == Orientation.VERTICAL ) {
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
+ if (mOrientation == Orientation.VERTICAL) {
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
lp.childIndex = i;
- if ( !lp.isDecor && lp.heightFactor == 0.f ) {
+ if (!lp.isDecor && lp.heightFactor == 0.f) {
// 0 means requery the adapter for this, it doesn't have a valid width
// .
- final ItemInfo ii = infoForChild( child );
- if ( ii != null ) {
+ final ItemInfo ii = infoForChild(child);
+ if (ii != null) {
lp.heightFactor = ii.sizeFactor;
lp.position = ii.position;
}
}
}
} else {
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
lp.childIndex = i;
- if ( !lp.isDecor && lp.widthFactor == 0.f ) {
+ if (!lp.isDecor && lp.widthFactor == 0.f) {
// 0 means requery the adapter for this, it doesn't have a valid width.
- final ItemInfo ii = infoForChild( child );
- if ( ii != null ) {
+ final ItemInfo ii = infoForChild(child);
+ if (ii != null) {
lp.widthFactor = ii.sizeFactor;
lp.position = ii.position;
}
@@ -1012,15 +1018,15 @@ public class OrientedViewPager extends ViewGroup {
}
sortChildDrawingOrder();
- if ( hasFocus() ) {
+ if (hasFocus()) {
View currentFocused = findFocus();
- ItemInfo ii = currentFocused != null ? infoForAnyChild( currentFocused ) : null;
- if ( ii == null || ii.position != mCurItem ) {
- for ( int i = 0; i < getChildCount(); i++ ) {
- View child = getChildAt( i );
- ii = infoForChild( child );
- if ( ii != null && ii.position == mCurItem ) {
- if ( child.requestFocus( focusDirection ) ) {
+ ItemInfo ii = currentFocused != null ? infoForAnyChild(currentFocused) : null;
+ if (ii == null || ii.position != mCurItem) {
+ for (int i = 0; i < getChildCount(); i++) {
+ View child = getChildAt(i);
+ ii = infoForChild(child);
+ if (ii != null && ii.position == mCurItem) {
+ if (child.requestFocus(focusDirection)) {
break;
}
}
@@ -1030,64 +1036,64 @@ public class OrientedViewPager extends ViewGroup {
}
private void sortChildDrawingOrder() {
- if ( mDrawingOrder != DRAW_ORDER_DEFAULT ) {
- if ( mDrawingOrderedChildren == null ) {
- mDrawingOrderedChildren = new ArrayList< View >();
+ if (mDrawingOrder != DRAW_ORDER_DEFAULT) {
+ if (mDrawingOrderedChildren == null) {
+ mDrawingOrderedChildren = new ArrayList();
} else {
mDrawingOrderedChildren.clear();
}
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- mDrawingOrderedChildren.add( child );
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ mDrawingOrderedChildren.add(child);
}
- Collections.sort( mDrawingOrderedChildren, sPositionComparator );
+ Collections.sort(mDrawingOrderedChildren, sPositionComparator);
}
}
- private void calculatePageOffsets( ItemInfo curItem, int curIndex, ItemInfo oldCurInfo ) {
+ private void calculatePageOffsets(ItemInfo curItem, int curIndex, ItemInfo oldCurInfo) {
final int N = mAdapter.getCount();
final int size = getClientSize();
- final float marginOffset = size > 0 ? ( float ) mPageMargin / size : 0;
+ final float marginOffset = size > 0 ? (float) mPageMargin / size : 0;
// Fix up offsets for later layout.
- if ( oldCurInfo != null ) {
+ if (oldCurInfo != null) {
final int oldCurPosition = oldCurInfo.position;
// Base offsets off of oldCurInfo.
- if ( oldCurPosition < curItem.position ) {
+ if (oldCurPosition < curItem.position) {
int itemIndex = 0;
ItemInfo ii = null;
float offset = oldCurInfo.offset + oldCurInfo.sizeFactor + marginOffset;
- for ( int pos = oldCurPosition + 1;
- pos <= curItem.position && itemIndex < mItems.size(); pos++ ) {
- ii = mItems.get( itemIndex );
- while ( pos > ii.position && itemIndex < mItems.size() - 1 ) {
+ for (int pos = oldCurPosition + 1;
+ pos <= curItem.position && itemIndex < mItems.size(); pos++) {
+ ii = mItems.get(itemIndex);
+ while (pos > ii.position && itemIndex < mItems.size() - 1) {
itemIndex++;
- ii = mItems.get( itemIndex );
+ ii = mItems.get(itemIndex);
}
- while ( pos < ii.position ) {
+ while (pos < ii.position) {
// We don't have an item populated for this,
// ask the adapter for an offset.
- offset += mAdapter.getPageWidth( pos ) + marginOffset;
+ offset += mAdapter.getPageWidth(pos) + marginOffset;
pos++;
}
ii.offset = offset;
offset += ii.sizeFactor + marginOffset;
}
- } else if ( oldCurPosition > curItem.position ) {
+ } else if (oldCurPosition > curItem.position) {
int itemIndex = mItems.size() - 1;
ItemInfo ii = null;
float offset = oldCurInfo.offset;
- for ( int pos = oldCurPosition - 1;
- pos >= curItem.position && itemIndex >= 0; pos-- ) {
- ii = mItems.get( itemIndex );
- while ( pos < ii.position && itemIndex > 0 ) {
+ for (int pos = oldCurPosition - 1;
+ pos >= curItem.position && itemIndex >= 0; pos--) {
+ ii = mItems.get(itemIndex);
+ while (pos < ii.position && itemIndex > 0) {
itemIndex--;
- ii = mItems.get( itemIndex );
+ ii = mItems.get(itemIndex);
}
- while ( pos > ii.position ) {
+ while (pos > ii.position) {
// We don't have an item populated for this,
// ask the adapter for an offset.
- offset -= mAdapter.getPageWidth( pos ) + marginOffset;
+ offset -= mAdapter.getPageWidth(pos) + marginOffset;
pos--;
}
offset -= ii.sizeFactor + marginOffset;
@@ -1104,24 +1110,24 @@ public class OrientedViewPager extends ViewGroup {
mLastOffset = curItem.position == N - 1 ?
curItem.offset + curItem.sizeFactor - 1 : Float.MAX_VALUE;
// Previous pages
- for ( int i = curIndex - 1; i >= 0; i--, pos-- ) {
- final ItemInfo ii = mItems.get( i );
- while ( pos > ii.position ) {
- offset -= mAdapter.getPageWidth( pos-- ) + marginOffset;
+ for (int i = curIndex - 1; i >= 0; i--, pos--) {
+ final ItemInfo ii = mItems.get(i);
+ while (pos > ii.position) {
+ offset -= mAdapter.getPageWidth(pos--) + marginOffset;
}
offset -= ii.sizeFactor + marginOffset;
ii.offset = offset;
- if ( ii.position == 0 ) mFirstOffset = offset;
+ if (ii.position == 0) mFirstOffset = offset;
}
offset = curItem.offset + curItem.sizeFactor + marginOffset;
pos = curItem.position + 1;
// Next pages
- for ( int i = curIndex + 1; i < itemCount; i++, pos++ ) {
- final ItemInfo ii = mItems.get( i );
- while ( pos < ii.position ) {
- offset += mAdapter.getPageWidth( pos++ ) + marginOffset;
+ for (int i = curIndex + 1; i < itemCount; i++, pos++) {
+ final ItemInfo ii = mItems.get(i);
+ while (pos < ii.position) {
+ offset += mAdapter.getPageWidth(pos++) + marginOffset;
}
- if ( ii.position == N - 1 ) {
+ if (ii.position == N - 1) {
mLastOffset = offset + ii.sizeFactor - 1;
}
ii.offset = offset;
@@ -1142,44 +1148,44 @@ public class OrientedViewPager extends ViewGroup {
Parcelable adapterState;
ClassLoader loader;
- public ViewPagerSavedState( Parcelable superState ) {
- super( superState );
+ public ViewPagerSavedState(Parcelable superState) {
+ super(superState);
}
@Override
- public void writeToParcel( Parcel out, int flags ) {
- super.writeToParcel( out, flags );
- out.writeInt( position );
- out.writeParcelable( adapterState, flags );
+ public void writeToParcel(Parcel out, int flags) {
+ super.writeToParcel(out, flags);
+ out.writeInt(position);
+ out.writeParcelable(adapterState, flags);
}
@Override
public String toString() {
return "FragmentPager.SavedState{"
- + Integer.toHexString( System.identityHashCode( this ) )
+ + Integer.toHexString(System.identityHashCode(this))
+ " position=" + position + "}";
}
- public static final Parcelable.Creator< ViewPagerSavedState > CREATOR
- = ParcelableCompat.newCreator( new ParcelableCompatCreatorCallbacks< ViewPagerSavedState >() {
+ public static final Parcelable.Creator CREATOR
+ = ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks() {
@Override
- public ViewPagerSavedState createFromParcel( Parcel in, ClassLoader loader ) {
- return new ViewPagerSavedState( in, loader );
+ public ViewPagerSavedState createFromParcel(Parcel in, ClassLoader loader) {
+ return new ViewPagerSavedState(in, loader);
}
@Override
- public ViewPagerSavedState[] newArray( int size ) {
+ public ViewPagerSavedState[] newArray(int size) {
return new ViewPagerSavedState[size];
}
- } );
+ });
- ViewPagerSavedState( Parcel in, ClassLoader loader ) {
- super( in );
- if ( loader == null ) {
+ ViewPagerSavedState(Parcel in, ClassLoader loader) {
+ super(in);
+ if (loader == null) {
loader = getClass().getClassLoader();
}
position = in.readInt();
- adapterState = in.readParcelable( loader );
+ adapterState = in.readParcelable(loader);
this.loader = loader;
}
}
@@ -1187,27 +1193,27 @@ public class OrientedViewPager extends ViewGroup {
@Override
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
- ViewPagerSavedState ss = new ViewPagerSavedState( superState );
+ ViewPagerSavedState ss = new ViewPagerSavedState(superState);
ss.position = mCurItem;
- if ( mAdapter != null ) {
+ if (mAdapter != null) {
ss.adapterState = mAdapter.saveState();
}
return ss;
}
@Override
- public void onRestoreInstanceState( Parcelable state ) {
- if ( !( state instanceof ViewPagerSavedState ) ) {
- super.onRestoreInstanceState( state );
+ public void onRestoreInstanceState(Parcelable state) {
+ if (!(state instanceof ViewPagerSavedState)) {
+ super.onRestoreInstanceState(state);
return;
}
- ViewPagerSavedState ss = ( ViewPagerSavedState ) state;
- super.onRestoreInstanceState( ss.getSuperState() );
+ ViewPagerSavedState ss = (ViewPagerSavedState) state;
+ super.onRestoreInstanceState(ss.getSuperState());
- if ( mAdapter != null ) {
- mAdapter.restoreState( ss.adapterState, ss.loader );
- setCurrentItemInternal( ss.position, false, true );
+ if (mAdapter != null) {
+ mAdapter.restoreState(ss.adapterState, ss.loader);
+ setCurrentItemInternal(ss.position, false, true);
} else {
mRestoredCurItem = ss.position;
mRestoredAdapterState = ss.adapterState;
@@ -1216,65 +1222,65 @@ public class OrientedViewPager extends ViewGroup {
}
@Override
- public void addView( View child, int index, ViewGroup.LayoutParams params ) {
- if ( !checkLayoutParams( params ) ) {
- params = generateLayoutParams( params );
+ public void addView(View child, int index, ViewGroup.LayoutParams params) {
+ if (!checkLayoutParams(params)) {
+ params = generateLayoutParams(params);
}
- final LayoutParams lp = ( LayoutParams ) params;
+ final LayoutParams lp = (LayoutParams) params;
lp.isDecor |= child instanceof Decor;
- if ( mInLayout ) {
- if ( lp != null && lp.isDecor ) {
- throw new IllegalStateException( "Cannot add pager decor view during layout" );
+ if (mInLayout) {
+ if (lp != null && lp.isDecor) {
+ throw new IllegalStateException("Cannot add pager decor view during layout");
}
lp.needsMeasure = true;
- addViewInLayout( child, index, params );
+ addViewInLayout(child, index, params);
} else {
- super.addView( child, index, params );
+ super.addView(child, index, params);
}
- if ( USE_CACHE ) {
- if ( child.getVisibility() != GONE ) {
- child.setDrawingCacheEnabled( mScrollingCacheEnabled );
+ if (USE_CACHE) {
+ if (child.getVisibility() != GONE) {
+ child.setDrawingCacheEnabled(mScrollingCacheEnabled);
} else {
- child.setDrawingCacheEnabled( false );
+ child.setDrawingCacheEnabled(false);
}
}
}
@Override
- public void removeView( View view ) {
- if ( mInLayout ) {
- removeViewInLayout( view );
+ public void removeView(View view) {
+ if (mInLayout) {
+ removeViewInLayout(view);
} else {
- super.removeView( view );
+ super.removeView(view);
}
}
- ItemInfo infoForChild( View child ) {
- for ( int i = 0; i < mItems.size(); i++ ) {
- ItemInfo ii = mItems.get( i );
- if ( mAdapter.isViewFromObject( child, ii.object ) ) {
+ ItemInfo infoForChild(View child) {
+ for (int i = 0; i < mItems.size(); i++) {
+ ItemInfo ii = mItems.get(i);
+ if (mAdapter.isViewFromObject(child, ii.object)) {
return ii;
}
}
return null;
}
- ItemInfo infoForAnyChild( View child ) {
+ ItemInfo infoForAnyChild(View child) {
ViewParent parent;
- while ( ( parent = child.getParent() ) != this ) {
- if ( parent == null || !( parent instanceof View ) ) {
+ while ((parent = child.getParent()) != this) {
+ if (parent == null || !(parent instanceof View)) {
return null;
}
- child = ( View ) parent;
+ child = (View) parent;
}
- return infoForChild( child );
+ return infoForChild(child);
}
- ItemInfo infoForPosition( int position ) {
- for ( int i = 0; i < mItems.size(); i++ ) {
- ItemInfo ii = mItems.get( i );
- if ( ii.position == position ) {
+ ItemInfo infoForPosition(int position) {
+ for (int i = 0; i < mItems.size(); i++) {
+ ItemInfo ii = mItems.get(i);
+ if (ii.position == position) {
return ii;
}
}
@@ -1288,25 +1294,25 @@ public class OrientedViewPager extends ViewGroup {
}
@Override
- protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec ) {
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// For simple implementation, our internal size is always 0.
// We depend on the container to specify the layout size of
// our view. We can't really know what it is since we will be
// adding and removing different arbitrary views and do not
// want the layout to change as this happens.
- setMeasuredDimension( getDefaultSize( 0, widthMeasureSpec ),
- getDefaultSize( 0, heightMeasureSpec ) );
+ setMeasuredDimension(getDefaultSize(0, widthMeasureSpec),
+ getDefaultSize(0, heightMeasureSpec));
final int measuredSize =
- ( mOrientation == Orientation.VERTICAL ) ? getMeasuredHeight() : getMeasuredWidth();
+ (mOrientation == Orientation.VERTICAL) ? getMeasuredHeight() : getMeasuredWidth();
final int maxGutterSize = measuredSize / 10;
- mGutterSize = Math.min( maxGutterSize, mDefaultGutterSize );
+ mGutterSize = Math.min(maxGutterSize, mDefaultGutterSize);
// Children are just made to fill our space.
int childWidthSize;
int childHeightSize;
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mOrientation == Orientation.VERTICAL) {
childWidthSize = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
childHeightSize = measuredSize - getPaddingTop() - getPaddingBottom();
} else {
@@ -1320,11 +1326,11 @@ public class OrientedViewPager extends ViewGroup {
* views won't intersect. We will pin to edges based on gravity.
*/
int size = getChildCount();
- for ( int i = 0; i < size; ++i ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() != GONE ) {
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
- if ( lp != null && lp.isDecor ) {
+ for (int i = 0; i < size; ++i) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (lp != null && lp.isDecor) {
final int hgrav = lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
final int vgrav = lp.gravity & Gravity.VERTICAL_GRAVITY_MASK;
int widthMode = MeasureSpec.AT_MOST;
@@ -1332,41 +1338,41 @@ public class OrientedViewPager extends ViewGroup {
boolean consumeVertical = vgrav == Gravity.TOP || vgrav == Gravity.BOTTOM;
boolean consumeHorizontal = hgrav == Gravity.LEFT || hgrav == Gravity.RIGHT;
- if ( consumeVertical ) {
+ if (consumeVertical) {
widthMode = MeasureSpec.EXACTLY;
- } else if ( consumeHorizontal ) {
+ } else if (consumeHorizontal) {
heightMode = MeasureSpec.EXACTLY;
}
int widthSize = childWidthSize;
int heightSize = childHeightSize;
- if ( lp.width != LayoutParams.WRAP_CONTENT ) {
+ if (lp.width != LayoutParams.WRAP_CONTENT) {
widthMode = MeasureSpec.EXACTLY;
- if ( lp.width != LayoutParams.FILL_PARENT ) {
+ if (lp.width != LayoutParams.FILL_PARENT) {
widthSize = lp.width;
}
}
- if ( lp.height != LayoutParams.WRAP_CONTENT ) {
+ if (lp.height != LayoutParams.WRAP_CONTENT) {
heightMode = MeasureSpec.EXACTLY;
- if ( lp.height != LayoutParams.FILL_PARENT ) {
+ if (lp.height != LayoutParams.FILL_PARENT) {
heightSize = lp.height;
}
}
- final int widthSpec = MeasureSpec.makeMeasureSpec( widthSize, widthMode );
- final int heightSpec = MeasureSpec.makeMeasureSpec( heightSize, heightMode );
- child.measure( widthSpec, heightSpec );
+ final int widthSpec = MeasureSpec.makeMeasureSpec(widthSize, widthMode);
+ final int heightSpec = MeasureSpec.makeMeasureSpec(heightSize, heightMode);
+ child.measure(widthSpec, heightSpec);
- if ( consumeVertical ) {
+ if (consumeVertical) {
childHeightSize -= child.getMeasuredHeight();
- } else if ( consumeHorizontal ) {
+ } else if (consumeHorizontal) {
childWidthSize -= child.getMeasuredWidth();
}
}
}
}
- mChildWidthMeasureSpec = MeasureSpec.makeMeasureSpec( childWidthSize, MeasureSpec.EXACTLY );
- mChildHeightMeasureSpec = MeasureSpec.makeMeasureSpec( childHeightSize, MeasureSpec.EXACTLY );
+ mChildWidthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize, MeasureSpec.EXACTLY);
+ mChildHeightMeasureSpec = MeasureSpec.makeMeasureSpec(childHeightSize, MeasureSpec.EXACTLY);
// Make sure we have created all fragments that we need to have shown.
mInLayout = true;
@@ -1375,25 +1381,25 @@ public class OrientedViewPager extends ViewGroup {
// Page views next.
size = getChildCount();
- for ( int i = 0; i < size; ++i ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() != GONE ) {
- if ( DEBUG ) {
- Log.v( TAG, "Measuring #" + i + " " + child
- + ": " + mChildWidthMeasureSpec );
+ for (int i = 0; i < size; ++i) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ if (DEBUG) {
+ Log.v(TAG, "Measuring #" + i + " " + child
+ + ": " + mChildWidthMeasureSpec);
}
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
- if ( lp == null || !lp.isDecor ) {
- if ( mOrientation == Orientation.VERTICAL ) {
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (lp == null || !lp.isDecor) {
+ if (mOrientation == Orientation.VERTICAL) {
final int heightSpec = MeasureSpec.makeMeasureSpec(
- ( int ) ( childHeightSize * lp.heightFactor ), MeasureSpec.EXACTLY );
- child.measure( mChildWidthMeasureSpec, heightSpec );
+ (int) (childHeightSize * lp.heightFactor), MeasureSpec.EXACTLY);
+ child.measure(mChildWidthMeasureSpec, heightSpec);
} else {
final int widthSpec = MeasureSpec.makeMeasureSpec(
- ( int ) ( childWidthSize * lp.widthFactor ), MeasureSpec.EXACTLY );
- child.measure( widthSpec, mChildHeightMeasureSpec );
+ (int) (childWidthSize * lp.widthFactor), MeasureSpec.EXACTLY);
+ child.measure(widthSpec, mChildHeightMeasureSpec);
}
}
}
@@ -1401,81 +1407,81 @@ public class OrientedViewPager extends ViewGroup {
}
@Override
- protected void onSizeChanged( int w, int h, int oldw, int oldh ) {
- super.onSizeChanged( w, h, oldw, oldh );
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
// Make sure scroll position is set correctly.
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( h != oldh ) {
- recomputeScrollPosition( h, oldh, mPageMargin, mPageMargin );
+ if (mOrientation == Orientation.VERTICAL) {
+ if (h != oldh) {
+ recomputeScrollPosition(h, oldh, mPageMargin, mPageMargin);
}
} else {
- if ( w != oldw ) {
- recomputeScrollPosition( w, oldw, mPageMargin, mPageMargin );
+ if (w != oldw) {
+ recomputeScrollPosition(w, oldw, mPageMargin, mPageMargin);
}
}
}
- private void recomputeScrollPosition( int size, int oldSize, int margin, int oldMargin ) {
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( oldSize > 0 && !mItems.isEmpty() ) {
+ private void recomputeScrollPosition(int size, int oldSize, int margin, int oldMargin) {
+ if (mOrientation == Orientation.VERTICAL) {
+ if (oldSize > 0 && !mItems.isEmpty()) {
final int heightWithMargin = size - getPaddingTop() - getPaddingBottom() + margin;
final int oldHeightWithMargin = oldSize - getPaddingTop() - getPaddingBottom()
+ oldMargin;
final int ypos = getScrollY();
- final float pageOffset = ( float ) ypos / oldHeightWithMargin;
- final int newOffsetPixels = ( int ) ( pageOffset * heightWithMargin );
+ final float pageOffset = (float) ypos / oldHeightWithMargin;
+ final int newOffsetPixels = (int) (pageOffset * heightWithMargin);
- scrollTo( getScrollX(), newOffsetPixels );
- if ( !mScroller.isFinished() ) {
+ scrollTo(getScrollX(), newOffsetPixels);
+ if (!mScroller.isFinished()) {
// We now return to your regularly scheduled scroll, already in progress.
final int newDuration = mScroller.getDuration() - mScroller.timePassed();
- ItemInfo targetInfo = infoForPosition( mCurItem );
- mScroller.startScroll( 0, newOffsetPixels,
- 0, ( int ) ( targetInfo.offset * size ), newDuration );
+ ItemInfo targetInfo = infoForPosition(mCurItem);
+ mScroller.startScroll(0, newOffsetPixels,
+ 0, (int) (targetInfo.offset * size), newDuration);
}
} else {
- final ItemInfo ii = infoForPosition( mCurItem );
- final float scrollOffset = ii != null ? Math.min( ii.offset, mLastOffset ) : 0;
- final int scrollPos = ( int ) ( scrollOffset *
- ( size - getPaddingTop() - getPaddingBottom() ) );
- if ( scrollPos != getScrollY() ) {
- completeScroll( false );
- scrollTo( getScrollX(), scrollPos );
+ final ItemInfo ii = infoForPosition(mCurItem);
+ final float scrollOffset = ii != null ? Math.min(ii.offset, mLastOffset) : 0;
+ final int scrollPos = (int) (scrollOffset *
+ (size - getPaddingTop() - getPaddingBottom()));
+ if (scrollPos != getScrollY()) {
+ completeScroll(false);
+ scrollTo(getScrollX(), scrollPos);
}
}
} else {
- if ( oldSize > 0 && !mItems.isEmpty() ) {
+ if (oldSize > 0 && !mItems.isEmpty()) {
final int widthWithMargin = size - getPaddingLeft() - getPaddingRight() + margin;
final int oldWidthWithMargin = oldSize - getPaddingLeft() - getPaddingRight()
+ oldMargin;
final int xpos = getScrollX();
- final float pageOffset = ( float ) xpos / oldWidthWithMargin;
- final int newOffsetPixels = ( int ) ( pageOffset * widthWithMargin );
+ final float pageOffset = (float) xpos / oldWidthWithMargin;
+ final int newOffsetPixels = (int) (pageOffset * widthWithMargin);
- scrollTo( newOffsetPixels, getScrollY() );
- if ( !mScroller.isFinished() ) {
+ scrollTo(newOffsetPixels, getScrollY());
+ if (!mScroller.isFinished()) {
// We now return to your regularly scheduled scroll, already in progress.
final int newDuration = mScroller.getDuration() - mScroller.timePassed();
- ItemInfo targetInfo = infoForPosition( mCurItem );
- mScroller.startScroll( newOffsetPixels, 0,
- ( int ) ( targetInfo.offset * size ), 0, newDuration );
+ ItemInfo targetInfo = infoForPosition(mCurItem);
+ mScroller.startScroll(newOffsetPixels, 0,
+ (int) (targetInfo.offset * size), 0, newDuration);
}
} else {
- final ItemInfo ii = infoForPosition( mCurItem );
- final float scrollOffset = ii != null ? Math.min( ii.offset, mLastOffset ) : 0;
- final int scrollPos = ( int ) ( scrollOffset *
- ( size - getPaddingLeft() - getPaddingRight() ) );
- if ( scrollPos != getScrollX() ) {
- completeScroll( false );
- scrollTo( scrollPos, getScrollY() );
+ final ItemInfo ii = infoForPosition(mCurItem);
+ final float scrollOffset = ii != null ? Math.min(ii.offset, mLastOffset) : 0;
+ final int scrollPos = (int) (scrollOffset *
+ (size - getPaddingLeft() - getPaddingRight()));
+ if (scrollPos != getScrollX()) {
+ completeScroll(false);
+ scrollTo(scrollPos, getScrollY());
}
}
}
}
@Override
- protected void onLayout( boolean changed, int l, int t, int r, int b ) {
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
final int count = getChildCount();
int width = r - l;
int height = b - t;
@@ -1483,22 +1489,22 @@ public class OrientedViewPager extends ViewGroup {
int paddingTop = getPaddingTop();
int paddingRight = getPaddingRight();
int paddingBottom = getPaddingBottom();
- final int scroll = ( mOrientation == Orientation.VERTICAL ) ? getScrollY() : getScrollX();
+ final int scroll = (mOrientation == Orientation.VERTICAL) ? getScrollY() : getScrollX();
int decorCount = 0;
// First pass - decor views. We need to do this in two passes so that
// we have the proper offsets for non-decor views later.
- for ( int i = 0; i < count; i++ ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() != GONE ) {
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
+ for (int i = 0; i < count; i++) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
int childLeft = 0;
int childTop = 0;
- if ( lp.isDecor ) {
+ if (lp.isDecor) {
final int hgrav = lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
final int vgrav = lp.gravity & Gravity.VERTICAL_GRAVITY_MASK;
- switch ( hgrav ) {
+ switch (hgrav) {
default:
childLeft = paddingLeft;
break;
@@ -1507,15 +1513,15 @@ public class OrientedViewPager extends ViewGroup {
paddingLeft += child.getMeasuredWidth();
break;
case Gravity.CENTER_HORIZONTAL:
- childLeft = Math.max( ( width - child.getMeasuredWidth() ) / 2,
- paddingLeft );
+ childLeft = Math.max((width - child.getMeasuredWidth()) / 2,
+ paddingLeft);
break;
case Gravity.RIGHT:
childLeft = width - paddingRight - child.getMeasuredWidth();
paddingRight += child.getMeasuredWidth();
break;
}
- switch ( vgrav ) {
+ switch (vgrav) {
default:
childTop = paddingTop;
break;
@@ -1524,148 +1530,148 @@ public class OrientedViewPager extends ViewGroup {
paddingTop += child.getMeasuredHeight();
break;
case Gravity.CENTER_VERTICAL:
- childTop = Math.max( ( height - child.getMeasuredHeight() ) / 2,
- paddingTop );
+ childTop = Math.max((height - child.getMeasuredHeight()) / 2,
+ paddingTop);
break;
case Gravity.BOTTOM:
childTop = height - paddingBottom - child.getMeasuredHeight();
paddingBottom += child.getMeasuredHeight();
break;
}
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mOrientation == Orientation.VERTICAL) {
childTop += scroll;
} else {
childLeft += scroll;
}
- child.layout( childLeft, childTop,
+ child.layout(childLeft, childTop,
childLeft + child.getMeasuredWidth(),
- childTop + child.getMeasuredHeight() );
+ childTop + child.getMeasuredHeight());
decorCount++;
}
}
}
final int childSize =
- ( mOrientation == Orientation.VERTICAL ) ? height - paddingTop - paddingBottom
+ (mOrientation == Orientation.VERTICAL) ? height - paddingTop - paddingBottom
: width - paddingLeft - paddingRight;
// Page views. Do this once we have the right padding offsets from above.
- for ( int i = 0; i < count; i++ ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() != GONE ) {
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
+ for (int i = 0; i < count; i++) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
ItemInfo ii;
- if ( !lp.isDecor && ( ii = infoForChild( child ) ) != null ) {
- int topLeftoff = ( int ) ( childSize * ii.offset );
+ if (!lp.isDecor && (ii = infoForChild(child)) != null) {
+ int topLeftoff = (int) (childSize * ii.offset);
int childLeft;
int childTop;
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mOrientation == Orientation.VERTICAL) {
childLeft = paddingLeft;
childTop = paddingTop + topLeftoff;
- if ( lp.needsMeasure ) {
+ if (lp.needsMeasure) {
// This was added during layout and needs measurement.
// Do it now that we know what we're working with.
lp.needsMeasure = false;
final int widthSpec = MeasureSpec.makeMeasureSpec(
- ( int ) ( width - paddingLeft - paddingRight ),
- MeasureSpec.EXACTLY );
+ (int) (width - paddingLeft - paddingRight),
+ MeasureSpec.EXACTLY);
final int heightSpec = MeasureSpec.makeMeasureSpec(
- ( int ) ( childSize * lp.heightFactor ),
- MeasureSpec.EXACTLY );
- child.measure( widthSpec, heightSpec );
+ (int) (childSize * lp.heightFactor),
+ MeasureSpec.EXACTLY);
+ child.measure(widthSpec, heightSpec);
}
} else {
childLeft = paddingLeft + topLeftoff;
childTop = paddingTop;
- if ( lp.needsMeasure ) {
+ if (lp.needsMeasure) {
// This was added during layout and needs measurement.
// Do it now that we know what we're working with.
lp.needsMeasure = false;
final int widthSpec = MeasureSpec.makeMeasureSpec(
- ( int ) ( childSize * lp.widthFactor ),
- MeasureSpec.EXACTLY );
+ (int) (childSize * lp.widthFactor),
+ MeasureSpec.EXACTLY);
final int heightSpec = MeasureSpec.makeMeasureSpec(
- ( int ) ( height - paddingTop - paddingBottom ),
- MeasureSpec.EXACTLY );
- child.measure( widthSpec, heightSpec );
+ (int) (height - paddingTop - paddingBottom),
+ MeasureSpec.EXACTLY);
+ child.measure(widthSpec, heightSpec);
}
}
- if ( DEBUG ) {
- Log.v( TAG, "Positioning #" + i + " " + child + " f=" + ii.object
+ if (DEBUG) {
+ Log.v(TAG, "Positioning #" + i + " " + child + " f=" + ii.object
+ ":" + childLeft + "," + childTop + " " + child.getMeasuredWidth()
- + "x" + child.getMeasuredHeight() );
+ + "x" + child.getMeasuredHeight());
}
- child.layout( childLeft, childTop,
+ child.layout(childLeft, childTop,
childLeft + child.getMeasuredWidth(),
- childTop + child.getMeasuredHeight() );
+ childTop + child.getMeasuredHeight());
}
}
}
- mTopLeftPageBounds = ( mOrientation == Orientation.VERTICAL ) ? paddingLeft : paddingTop;
+ mTopLeftPageBounds = (mOrientation == Orientation.VERTICAL) ? paddingLeft : paddingTop;
mBottomRightPageBounds =
- ( mOrientation == Orientation.VERTICAL ) ? width - paddingRight : height - paddingBottom;
+ (mOrientation == Orientation.VERTICAL) ? width - paddingRight : height - paddingBottom;
mDecorChildCount = decorCount;
- if ( mFirstLayout ) {
- scrollToItem( mCurItem, false, 0, false );
+ if (mFirstLayout) {
+ scrollToItem(mCurItem, false, 0, false);
}
mFirstLayout = false;
}
@Override
public void computeScroll() {
- if ( !mScroller.isFinished() && mScroller.computeScrollOffset() ) {
+ if (!mScroller.isFinished() && mScroller.computeScrollOffset()) {
int oldX = getScrollX();
int oldY = getScrollY();
int x = mScroller.getCurrX();
int y = mScroller.getCurrY();
- if ( oldX != x || oldY != y ) {
- scrollTo( x, y );
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( !pageScrolled( y ) ) {
+ if (oldX != x || oldY != y) {
+ scrollTo(x, y);
+ if (mOrientation == Orientation.VERTICAL) {
+ if (!pageScrolled(y)) {
mScroller.abortAnimation();
- scrollTo( x, 0 );
+ scrollTo(x, 0);
}
} else {
- if ( !pageScrolled( x ) ) {
+ if (!pageScrolled(x)) {
mScroller.abortAnimation();
- scrollTo( 0, y );
+ scrollTo(0, y);
}
}
}
// Keep on drawing until the animation has finished.
- ViewCompat.postInvalidateOnAnimation( this );
+ ViewCompat.postInvalidateOnAnimation(this);
return;
}
// Done with scroll, clean up state.
- completeScroll( true );
+ completeScroll(true);
}
- private boolean pageScrolled( int pos ) {
- if ( mItems.size() == 0 ) {
+ private boolean pageScrolled(int pos) {
+ if (mItems.size() == 0) {
mCalledSuper = false;
- onPageScrolled( 0, 0, 0 );
- if ( !mCalledSuper ) {
+ onPageScrolled(0, 0, 0);
+ if (!mCalledSuper) {
throw new IllegalStateException(
- "onPageScrolled did not call superclass implementation" );
+ "onPageScrolled did not call superclass implementation");
}
return false;
}
final ItemInfo ii = infoForCurrentScrollPosition();
final int size = getClientSize();
final int sizeWithMargin = size + mPageMargin;
- final float marginOffset = ( float ) mPageMargin / size;
+ final float marginOffset = (float) mPageMargin / size;
final int currentPage = ii.position;
- final float pageOffset = ( ( ( float ) pos / size ) - ii.offset ) / ( ii.sizeFactor + marginOffset );
- final int offsetPixels = ( int ) ( pageOffset * sizeWithMargin );
+ final float pageOffset = (((float) pos / size) - ii.offset) / (ii.sizeFactor + marginOffset);
+ final int offsetPixels = (int) (pageOffset * sizeWithMargin);
mCalledSuper = false;
- onPageScrolled( currentPage, pageOffset, offsetPixels );
- if ( !mCalledSuper ) {
+ onPageScrolled(currentPage, pageOffset, offsetPixels);
+ if (!mCalledSuper) {
throw new IllegalStateException(
- "onPageScrolled did not call superclass implementation" );
+ "onPageScrolled did not call superclass implementation");
}
return true;
}
@@ -1677,28 +1683,28 @@ public class OrientedViewPager extends ViewGroup {
* (e.g. super.onPageScrolled(position, offset, offsetPixels)) before onPageScrolled
* returns.
*
- * @param position Position index of the first page currently being displayed.
- * Page position+1 will be visible if positionOffset is nonzero.
- * @param offset Value from [0, 1) indicating the offset from the page at position.
+ * @param position Position index of the first page currently being displayed.
+ * Page position+1 will be visible if positionOffset is nonzero.
+ * @param offset Value from [0, 1) indicating the offset from the page at position.
* @param offsetPixels Value in pixels indicating the offset from position.
*/
- protected void onPageScrolled( int position, float offset, int offsetPixels ) {
+ protected void onPageScrolled(int position, float offset, int offsetPixels) {
// Offset any decor views if needed - keep them on-screen at all times.
- if ( mDecorChildCount > 0 ) {
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mDecorChildCount > 0) {
+ if (mOrientation == Orientation.VERTICAL) {
final int scrollY = getScrollY();
int paddingTop = getPaddingTop();
int paddingBottom = getPaddingBottom();
final int height = getHeight();
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
- if ( !lp.isDecor ) continue;
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (!lp.isDecor) continue;
final int vgrav = lp.gravity & Gravity.VERTICAL_GRAVITY_MASK;
int childTop = 0;
- switch ( vgrav ) {
+ switch (vgrav) {
default:
childTop = paddingTop;
break;
@@ -1707,8 +1713,8 @@ public class OrientedViewPager extends ViewGroup {
paddingTop += child.getHeight();
break;
case Gravity.CENTER_VERTICAL:
- childTop = Math.max( ( height - child.getMeasuredHeight() ) / 2,
- paddingTop );
+ childTop = Math.max((height - child.getMeasuredHeight()) / 2,
+ paddingTop);
break;
case Gravity.BOTTOM:
childTop = height - paddingBottom - child.getMeasuredHeight();
@@ -1718,8 +1724,8 @@ public class OrientedViewPager extends ViewGroup {
childTop += scrollY;
final int childOffset = childTop - child.getTop();
- if ( childOffset != 0 ) {
- child.offsetTopAndBottom( childOffset );
+ if (childOffset != 0) {
+ child.offsetTopAndBottom(childOffset);
}
}
} else {
@@ -1728,14 +1734,14 @@ public class OrientedViewPager extends ViewGroup {
int paddingRight = getPaddingRight();
final int width = getWidth();
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
- if ( !lp.isDecor ) continue;
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+ if (!lp.isDecor) continue;
final int hgrav = lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK;
int childLeft = 0;
- switch ( hgrav ) {
+ switch (hgrav) {
default:
childLeft = paddingLeft;
break;
@@ -1744,8 +1750,8 @@ public class OrientedViewPager extends ViewGroup {
paddingLeft += child.getWidth();
break;
case Gravity.CENTER_HORIZONTAL:
- childLeft = Math.max( ( width - child.getMeasuredWidth() ) / 2,
- paddingLeft );
+ childLeft = Math.max((width - child.getMeasuredWidth()) / 2,
+ paddingLeft);
break;
case Gravity.RIGHT:
childLeft = width - paddingRight - child.getMeasuredWidth();
@@ -1755,87 +1761,87 @@ public class OrientedViewPager extends ViewGroup {
childLeft += scrollX;
final int childOffset = childLeft - child.getLeft();
- if ( childOffset != 0 ) {
- child.offsetLeftAndRight( childOffset );
+ if (childOffset != 0) {
+ child.offsetLeftAndRight(childOffset);
}
}
}
}
- if ( mOnPageChangeListener != null ) {
- mOnPageChangeListener.onPageScrolled( position, offset, offsetPixels );
+ if (mOnPageChangeListener != null) {
+ mOnPageChangeListener.onPageScrolled(position, offset, offsetPixels);
}
- if ( mInternalPageChangeListener != null ) {
- mInternalPageChangeListener.onPageScrolled( position, offset, offsetPixels );
+ if (mInternalPageChangeListener != null) {
+ mInternalPageChangeListener.onPageScrolled(position, offset, offsetPixels);
}
- if ( mPageTransformer != null ) {
- final int scroll = ( mOrientation == Orientation.VERTICAL ) ? getScrollY() : getScrollX();
+ if (mPageTransformer != null) {
+ final int scroll = (mOrientation == Orientation.VERTICAL) ? getScrollY() : getScrollX();
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- final LayoutParams lp = ( LayoutParams ) child.getLayoutParams();
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ final LayoutParams lp = (LayoutParams) child.getLayoutParams();
- if ( lp.isDecor ) continue;
+ if (lp.isDecor) continue;
final float transformPos =
- ( float ) ( ( ( mOrientation == Orientation.VERTICAL ) ? child.getTop() : child.getLeft() )
- - scroll ) / getClientSize();
- mPageTransformer.transformPage( child, transformPos );
+ (float) (((mOrientation == Orientation.VERTICAL) ? child.getTop() : child.getLeft())
+ - scroll) / getClientSize();
+ mPageTransformer.transformPage(child, transformPos);
}
}
mCalledSuper = true;
}
- private void completeScroll( boolean postEvents ) {
+ private void completeScroll(boolean postEvents) {
boolean needPopulate = mScrollState == SCROLL_STATE_SETTLING;
- if ( needPopulate ) {
+ if (needPopulate) {
// Done with scroll, no longer want to cache view drawing.
- setScrollingCacheEnabled( false );
+ setScrollingCacheEnabled(false);
mScroller.abortAnimation();
int oldX = getScrollX();
int oldY = getScrollY();
int x = mScroller.getCurrX();
int y = mScroller.getCurrY();
- if ( oldX != x || oldY != y ) {
- scrollTo( x, y );
+ if (oldX != x || oldY != y) {
+ scrollTo(x, y);
}
}
mPopulatePending = false;
- for ( int i = 0; i < mItems.size(); i++ ) {
- ItemInfo ii = mItems.get( i );
- if ( ii.scrolling ) {
+ for (int i = 0; i < mItems.size(); i++) {
+ ItemInfo ii = mItems.get(i);
+ if (ii.scrolling) {
needPopulate = true;
ii.scrolling = false;
}
}
- if ( needPopulate ) {
- if ( postEvents ) {
- ViewCompat.postOnAnimation( this, mEndScrollRunnable );
+ if (needPopulate) {
+ if (postEvents) {
+ ViewCompat.postOnAnimation(this, mEndScrollRunnable);
} else {
mEndScrollRunnable.run();
}
}
}
- private boolean isGutterDrag( float axis, float dAxis ) {
- return ( axis < mGutterSize && dAxis > 0 ) || ( axis
- > ( mOrientation == Orientation.VERTICAL ? getHeight() : getWidth() ) - mGutterSize
- && dAxis < 0 );
+ private boolean isGutterDrag(float axis, float dAxis) {
+ return (axis < mGutterSize && dAxis > 0) || (axis
+ > (mOrientation == Orientation.VERTICAL ? getHeight() : getWidth()) - mGutterSize
+ && dAxis < 0);
}
- private void enableLayers( boolean enable ) {
+ private void enableLayers(boolean enable) {
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
+ for (int i = 0; i < childCount; i++) {
final int layerType = enable ?
ViewCompat.LAYER_TYPE_HARDWARE : ViewCompat.LAYER_TYPE_NONE;
- ViewCompat.setLayerType( getChildAt( i ), layerType, null );
+ ViewCompat.setLayerType(getChildAt(i), layerType, null);
}
}
@Override
- public boolean onInterceptTouchEvent( MotionEvent ev ) {
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
/*
* This method JUST determines whether we want to intercept the motion.
* If we return true, onMotionEvent will be called and we do the actual
@@ -1845,13 +1851,13 @@ public class OrientedViewPager extends ViewGroup {
final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;
// Always take care of the touch gesture being complete.
- if ( action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP ) {
+ if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
// Release the drag.
- if ( DEBUG ) Log.v( TAG, "Intercept done!" );
+ if (DEBUG) Log.v(TAG, "Intercept done!");
mIsBeingDragged = false;
mIsUnableToDrag = false;
mActivePointerId = INVALID_POINTER;
- if ( mVelocityTracker != null ) {
+ if (mVelocityTracker != null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
}
@@ -1860,18 +1866,18 @@ public class OrientedViewPager extends ViewGroup {
// Nothing more to do here if we have decided whether or not we
// are dragging.
- if ( action != MotionEvent.ACTION_DOWN ) {
- if ( mIsBeingDragged ) {
- if ( DEBUG ) Log.v( TAG, "Intercept returning true!" );
+ if (action != MotionEvent.ACTION_DOWN) {
+ if (mIsBeingDragged) {
+ if (DEBUG) Log.v(TAG, "Intercept returning true!");
return true;
}
- if ( mIsUnableToDrag ) {
- if ( DEBUG ) Log.v( TAG, "Intercept returning false!" );
+ if (mIsUnableToDrag) {
+ if (DEBUG) Log.v(TAG, "Intercept returning false!");
return false;
}
}
- switch ( action ) {
+ switch (action) {
case MotionEvent.ACTION_MOVE: {
/*
* mIsBeingDragged == false, otherwise the shortcut would have caught it. Check
@@ -1883,92 +1889,92 @@ public class OrientedViewPager extends ViewGroup {
* of the down event.
*/
final int activePointerId = mActivePointerId;
- if ( activePointerId == INVALID_POINTER ) {
+ if (activePointerId == INVALID_POINTER) {
// If we don't have a valid id, the touch down wasn't on content.
break;
}
- final int pointerIndex = MotionEventCompat.findPointerIndex( ev, activePointerId );
- if ( mOrientation == Orientation.VERTICAL ) {
- final float y = MotionEventCompat.getY( ev, pointerIndex );
+ final int pointerIndex = MotionEventCompat.findPointerIndex(ev, activePointerId);
+ if (mOrientation == Orientation.VERTICAL) {
+ final float y = MotionEventCompat.getY(ev, pointerIndex);
final float dy = y - mLastMotionY;
- final float yDiff = Math.abs( dy );
- final float x = MotionEventCompat.getX( ev, pointerIndex );
- final float xDiff = Math.abs( x - mInitialMotionX );
- if ( DEBUG ) {
- Log.v( TAG, "Moved x to " + x + "," + y + " diff=" + xDiff + "," + yDiff );
+ final float yDiff = Math.abs(dy);
+ final float x = MotionEventCompat.getX(ev, pointerIndex);
+ final float xDiff = Math.abs(x - mInitialMotionX);
+ if (DEBUG) {
+ Log.v(TAG, "Moved x to " + x + "," + y + " diff=" + xDiff + "," + yDiff);
}
- if ( dy != 0 && !isGutterDrag( mLastMotionY, dy ) &&
- canScroll( this, false, ( int ) dy, ( int ) x, ( int ) y ) ) {
+ if (dy != 0 && !isGutterDrag(mLastMotionY, dy) &&
+ canScroll(this, false, (int) dy, (int) x, (int) y)) {
// Nested view has scrollable area under this point. Let it be handled there.
mLastMotionX = x;
mLastMotionY = y;
mIsUnableToDrag = true;
return false;
}
- if ( yDiff > mTouchSlop && yDiff * 0.5f > xDiff ) {
- if ( DEBUG ) Log.v( TAG, "Starting drag!" );
+ if (yDiff > mTouchSlop && yDiff * 0.5f > xDiff) {
+ if (DEBUG) Log.v(TAG, "Starting drag!");
mIsBeingDragged = true;
- requestParentDisallowInterceptTouchEvent( true );
- setScrollState( SCROLL_STATE_DRAGGING );
+ requestParentDisallowInterceptTouchEvent(true);
+ setScrollState(SCROLL_STATE_DRAGGING);
mLastMotionY = dy > 0 ? mInitialMotionY + mTouchSlop :
mInitialMotionY - mTouchSlop;
mLastMotionX = x;
- setScrollingCacheEnabled( true );
- } else if ( xDiff > mTouchSlop ) {
+ setScrollingCacheEnabled(true);
+ } else if (xDiff > mTouchSlop) {
// The finger has moved enough in the vertical
// direction to be counted as a drag... abort
// any attempt to drag horizontally, to work correctly
// with children that have scrolling containers.
- if ( DEBUG ) Log.v( TAG, "Starting unable to drag!" );
+ if (DEBUG) Log.v(TAG, "Starting unable to drag!");
mIsUnableToDrag = true;
}
- if ( mIsBeingDragged ) {
+ if (mIsBeingDragged) {
// Scroll to follow the motion event
- if ( performDrag( y ) ) {
- ViewCompat.postInvalidateOnAnimation( this );
+ if (performDrag(y)) {
+ ViewCompat.postInvalidateOnAnimation(this);
}
}
} else {
- final float x = MotionEventCompat.getX( ev, pointerIndex );
+ final float x = MotionEventCompat.getX(ev, pointerIndex);
final float dx = x - mLastMotionX;
- final float xDiff = Math.abs( dx );
- final float y = MotionEventCompat.getY( ev, pointerIndex );
- final float yDiff = Math.abs( y - mInitialMotionY );
- if ( DEBUG ) {
- Log.v( TAG, "Moved x to " + x + "," + y + " diff=" + xDiff + "," + yDiff );
+ final float xDiff = Math.abs(dx);
+ final float y = MotionEventCompat.getY(ev, pointerIndex);
+ final float yDiff = Math.abs(y - mInitialMotionY);
+ if (DEBUG) {
+ Log.v(TAG, "Moved x to " + x + "," + y + " diff=" + xDiff + "," + yDiff);
}
- if ( dx != 0 && !isGutterDrag( mLastMotionX, dx ) &&
- canScroll( this, false, ( int ) dx, ( int ) x, ( int ) y ) ) {
+ if (dx != 0 && !isGutterDrag(mLastMotionX, dx) &&
+ canScroll(this, false, (int) dx, (int) x, (int) y)) {
// Nested view has scrollable area under this point. Let it be handled there.
mLastMotionX = x;
mLastMotionY = y;
mIsUnableToDrag = true;
return false;
}
- if ( xDiff > mTouchSlop && xDiff * 0.5f > yDiff ) {
- if ( DEBUG ) Log.v( TAG, "Starting drag!" );
+ if (xDiff > mTouchSlop && xDiff * 0.5f > yDiff) {
+ if (DEBUG) Log.v(TAG, "Starting drag!");
mIsBeingDragged = true;
- requestParentDisallowInterceptTouchEvent( true );
- setScrollState( SCROLL_STATE_DRAGGING );
+ requestParentDisallowInterceptTouchEvent(true);
+ setScrollState(SCROLL_STATE_DRAGGING);
mLastMotionX = dx > 0 ? mInitialMotionX + mTouchSlop :
mInitialMotionX - mTouchSlop;
mLastMotionY = y;
- setScrollingCacheEnabled( true );
- } else if ( yDiff > mTouchSlop ) {
+ setScrollingCacheEnabled(true);
+ } else if (yDiff > mTouchSlop) {
// The finger has moved enough in the vertical
// direction to be counted as a drag... abort
// any attempt to drag horizontally, to work correctly
// with children that have scrolling containers.
- if ( DEBUG ) Log.v( TAG, "Starting unable to drag!" );
+ if (DEBUG) Log.v(TAG, "Starting unable to drag!");
mIsUnableToDrag = true;
}
- if ( mIsBeingDragged ) {
+ if (mIsBeingDragged) {
// Scroll to follow the motion event
- if ( performDrag( x ) ) {
- ViewCompat.postInvalidateOnAnimation( this );
+ if (performDrag(x)) {
+ ViewCompat.postInvalidateOnAnimation(this);
}
}
}
@@ -1982,57 +1988,57 @@ public class OrientedViewPager extends ViewGroup {
*/
mLastMotionX = mInitialMotionX = ev.getX();
mLastMotionY = mInitialMotionY = ev.getY();
- mActivePointerId = MotionEventCompat.getPointerId( ev, 0 );
+ mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
mIsUnableToDrag = false;
mScroller.computeScrollOffset();
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( mScrollState == SCROLL_STATE_SETTLING &&
- Math.abs( mScroller.getFinalY() - mScroller.getCurrY() ) > mCloseEnough ) {
+ if (mOrientation == Orientation.VERTICAL) {
+ if (mScrollState == SCROLL_STATE_SETTLING &&
+ Math.abs(mScroller.getFinalY() - mScroller.getCurrY()) > mCloseEnough) {
// Let the user 'catch' the pager as it animates.
mScroller.abortAnimation();
mPopulatePending = false;
populate();
mIsBeingDragged = true;
- requestParentDisallowInterceptTouchEvent( true );
- setScrollState( SCROLL_STATE_DRAGGING );
+ requestParentDisallowInterceptTouchEvent(true);
+ setScrollState(SCROLL_STATE_DRAGGING);
} else {
- completeScroll( false );
+ completeScroll(false);
mIsBeingDragged = false;
}
} else {
- if ( mScrollState == SCROLL_STATE_SETTLING &&
- Math.abs( mScroller.getFinalX() - mScroller.getCurrX() ) > mCloseEnough ) {
+ if (mScrollState == SCROLL_STATE_SETTLING &&
+ Math.abs(mScroller.getFinalX() - mScroller.getCurrX()) > mCloseEnough) {
// Let the user 'catch' the pager as it animates.
mScroller.abortAnimation();
mPopulatePending = false;
populate();
mIsBeingDragged = true;
- requestParentDisallowInterceptTouchEvent( true );
- setScrollState( SCROLL_STATE_DRAGGING );
+ requestParentDisallowInterceptTouchEvent(true);
+ setScrollState(SCROLL_STATE_DRAGGING);
} else {
- completeScroll( false );
+ completeScroll(false);
mIsBeingDragged = false;
}
}
- if ( DEBUG ) {
- Log.v( TAG, "Down at " + mLastMotionX + "," + mLastMotionY
+ if (DEBUG) {
+ Log.v(TAG, "Down at " + mLastMotionX + "," + mLastMotionY
+ " mIsBeingDragged=" + mIsBeingDragged
- + "mIsUnableToDrag=" + mIsUnableToDrag );
+ + "mIsUnableToDrag=" + mIsUnableToDrag);
}
break;
}
case MotionEventCompat.ACTION_POINTER_UP:
- onSecondaryPointerUp( ev );
+ onSecondaryPointerUp(ev);
break;
}
- if ( mVelocityTracker == null ) {
+ if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
- mVelocityTracker.addMovement( ev );
+ mVelocityTracker.addMovement(ev);
/*
* The only time we want to intercept motion events is if we are in the
@@ -2042,34 +2048,34 @@ public class OrientedViewPager extends ViewGroup {
}
@Override
- public boolean onTouchEvent( MotionEvent ev ) {
- if ( mFakeDragging ) {
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (mFakeDragging) {
// A fake drag is in progress already, ignore this real one
// but still eat the touch events.
// (It is likely that the user is multi-touching the screen.)
return true;
}
- if ( ev.getAction() == MotionEvent.ACTION_DOWN && ev.getEdgeFlags() != 0 ) {
+ if (ev.getAction() == MotionEvent.ACTION_DOWN && ev.getEdgeFlags() != 0) {
// Don't handle edge touches immediately -- they may actually belong to one of our
// descendants.
return false;
}
- if ( mAdapter == null || mAdapter.getCount() == 0 ) {
+ if (mAdapter == null || mAdapter.getCount() == 0) {
// Nothing to present or scroll; nothing to touch.
return false;
}
- if ( mVelocityTracker == null ) {
+ if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
- mVelocityTracker.addMovement( ev );
+ mVelocityTracker.addMovement(ev);
final int action = ev.getAction();
boolean needsInvalidate = false;
- switch ( action & MotionEventCompat.ACTION_MASK ) {
+ switch (action & MotionEventCompat.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
mScroller.abortAnimation();
mPopulatePending = false;
@@ -2078,109 +2084,109 @@ public class OrientedViewPager extends ViewGroup {
// Remember where the motion event started
mLastMotionX = mInitialMotionX = ev.getX();
mLastMotionY = mInitialMotionY = ev.getY();
- mActivePointerId = MotionEventCompat.getPointerId( ev, 0 );
+ mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
break;
}
case MotionEvent.ACTION_MOVE:
- if ( !mIsBeingDragged ) {
- final int pointerIndex = MotionEventCompat.findPointerIndex( ev, mActivePointerId );
- final float y = MotionEventCompat.getY( ev, pointerIndex );
- final float yDiff = Math.abs( y - mLastMotionY );
- final float x = MotionEventCompat.getX( ev, pointerIndex );
- final float xDiff = Math.abs( x - mLastMotionX );
- if ( DEBUG ) {
- Log.v( TAG, "Moved x to " + x + "," + y + " diff=" + xDiff + "," + yDiff );
+ if (!mIsBeingDragged) {
+ final int pointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+ final float y = MotionEventCompat.getY(ev, pointerIndex);
+ final float yDiff = Math.abs(y - mLastMotionY);
+ final float x = MotionEventCompat.getX(ev, pointerIndex);
+ final float xDiff = Math.abs(x - mLastMotionX);
+ if (DEBUG) {
+ Log.v(TAG, "Moved x to " + x + "," + y + " diff=" + xDiff + "," + yDiff);
}
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( yDiff > mTouchSlop && yDiff > xDiff ) {
- if ( DEBUG ) Log.v( TAG, "Starting drag!" );
+ if (mOrientation == Orientation.VERTICAL) {
+ if (yDiff > mTouchSlop && yDiff > xDiff) {
+ if (DEBUG) Log.v(TAG, "Starting drag!");
mIsBeingDragged = true;
- requestParentDisallowInterceptTouchEvent( true );
+ requestParentDisallowInterceptTouchEvent(true);
mLastMotionY = y - mInitialMotionY > 0 ? mInitialMotionY + mTouchSlop :
mInitialMotionY - mTouchSlop;
mLastMotionX = x;
- setScrollState( SCROLL_STATE_DRAGGING );
- setScrollingCacheEnabled( true );
+ setScrollState(SCROLL_STATE_DRAGGING);
+ setScrollingCacheEnabled(true);
// Disallow Parent Intercept, just in case
ViewParent parent = getParent();
- if ( parent != null ) {
- parent.requestDisallowInterceptTouchEvent( true );
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
}
}
} else {
- if ( xDiff > mTouchSlop && xDiff > yDiff ) {
- if ( DEBUG ) Log.v( TAG, "Starting drag!" );
+ if (xDiff > mTouchSlop && xDiff > yDiff) {
+ if (DEBUG) Log.v(TAG, "Starting drag!");
mIsBeingDragged = true;
- requestParentDisallowInterceptTouchEvent( true );
+ requestParentDisallowInterceptTouchEvent(true);
mLastMotionX = x - mInitialMotionX > 0 ? mInitialMotionX + mTouchSlop :
mInitialMotionX - mTouchSlop;
mLastMotionY = y;
- setScrollState( SCROLL_STATE_DRAGGING );
- setScrollingCacheEnabled( true );
+ setScrollState(SCROLL_STATE_DRAGGING);
+ setScrollingCacheEnabled(true);
// Disallow Parent Intercept, just in case
ViewParent parent = getParent();
- if ( parent != null ) {
- parent.requestDisallowInterceptTouchEvent( true );
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(true);
}
}
}
}
// Not else! Note that mIsBeingDragged can be set above.
- if ( mIsBeingDragged ) {
+ if (mIsBeingDragged) {
// Scroll to follow the motion event
final int activePointerIndex = MotionEventCompat.findPointerIndex(
- ev, mActivePointerId );
- if ( mOrientation == Orientation.VERTICAL ) {
- final float y = MotionEventCompat.getY( ev, activePointerIndex );
- needsInvalidate |= performDrag( y );
+ ev, mActivePointerId);
+ if (mOrientation == Orientation.VERTICAL) {
+ final float y = MotionEventCompat.getY(ev, activePointerIndex);
+ needsInvalidate |= performDrag(y);
} else {
- final float x = MotionEventCompat.getX( ev, activePointerIndex );
- needsInvalidate |= performDrag( x );
+ final float x = MotionEventCompat.getX(ev, activePointerIndex);
+ needsInvalidate |= performDrag(x);
}
}
break;
case MotionEvent.ACTION_UP:
- if ( mIsBeingDragged ) {
+ if (mIsBeingDragged) {
int currentPage;
int initialVelocity;
int totalDelta;
float pageOffset;
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mOrientation == Orientation.VERTICAL) {
final VelocityTracker velocityTracker = mVelocityTracker;
- velocityTracker.computeCurrentVelocity( 1000, mMaximumVelocity );
- initialVelocity = ( int ) VelocityTrackerCompat.getYVelocity(
- velocityTracker, mActivePointerId );
+ velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
+ initialVelocity = (int) VelocityTrackerCompat.getYVelocity(
+ velocityTracker, mActivePointerId);
mPopulatePending = true;
final int height = getClientSize();
final int scrollY = getScrollY();
final ItemInfo ii = infoForCurrentScrollPosition();
currentPage = ii.position;
- pageOffset = ( ( ( float ) scrollY / height ) - ii.offset ) / ii.sizeFactor;
+ pageOffset = (((float) scrollY / height) - ii.offset) / ii.sizeFactor;
final int activePointerIndex =
- MotionEventCompat.findPointerIndex( ev, mActivePointerId );
- final float y = MotionEventCompat.getY( ev, activePointerIndex );
- totalDelta = ( int ) ( y - mInitialMotionY );
+ MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+ final float y = MotionEventCompat.getY(ev, activePointerIndex);
+ totalDelta = (int) (y - mInitialMotionY);
} else {
final VelocityTracker velocityTracker = mVelocityTracker;
- velocityTracker.computeCurrentVelocity( 1000, mMaximumVelocity );
- initialVelocity = ( int ) VelocityTrackerCompat.getXVelocity(
- velocityTracker, mActivePointerId );
+ velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
+ initialVelocity = (int) VelocityTrackerCompat.getXVelocity(
+ velocityTracker, mActivePointerId);
mPopulatePending = true;
final int width = getClientSize();
final int scrollX = getScrollX();
final ItemInfo ii = infoForCurrentScrollPosition();
currentPage = ii.position;
- pageOffset = ( ( ( float ) scrollX / width ) - ii.offset ) / ii.sizeFactor;
+ pageOffset = (((float) scrollX / width) - ii.offset) / ii.sizeFactor;
final int activePointerIndex =
- MotionEventCompat.findPointerIndex( ev, mActivePointerId );
- final float x = MotionEventCompat.getX( ev, activePointerIndex );
- totalDelta = ( int ) ( x - mInitialMotionX );
+ MotionEventCompat.findPointerIndex(ev, mActivePointerId);
+ final float x = MotionEventCompat.getX(ev, activePointerIndex);
+ totalDelta = (int) (x - mInitialMotionX);
}
- int nextPage = determineTargetPage( currentPage, pageOffset, initialVelocity,
- totalDelta );
- setCurrentItemInternal( nextPage, true, true, initialVelocity );
+ int nextPage = determineTargetPage(currentPage, pageOffset, initialVelocity,
+ totalDelta);
+ setCurrentItemInternal(nextPage, true, true, initialVelocity);
mActivePointerId = INVALID_POINTER;
endDrag();
@@ -2188,8 +2194,8 @@ public class OrientedViewPager extends ViewGroup {
}
break;
case MotionEvent.ACTION_CANCEL:
- if ( mIsBeingDragged ) {
- scrollToItem( mCurItem, true, 0, false );
+ if (mIsBeingDragged) {
+ scrollToItem(mCurItem, true, 0, false);
mActivePointerId = INVALID_POINTER;
endDrag();
needsInvalidate = mTopLeftEdge.onRelease() | mRightBottomEdge.onRelease();
@@ -2197,46 +2203,46 @@ public class OrientedViewPager extends ViewGroup {
break;
case MotionEventCompat.ACTION_POINTER_DOWN: {
int index;
- if ( mOrientation == Orientation.VERTICAL ) {
- index = MotionEventCompat.getActionIndex( ev );
- final float y = MotionEventCompat.getY( ev, index );
+ if (mOrientation == Orientation.VERTICAL) {
+ index = MotionEventCompat.getActionIndex(ev);
+ final float y = MotionEventCompat.getY(ev, index);
mLastMotionY = y;
} else {
- index = MotionEventCompat.getActionIndex( ev );
- final float x = MotionEventCompat.getX( ev, index );
+ index = MotionEventCompat.getActionIndex(ev);
+ final float x = MotionEventCompat.getX(ev, index);
mLastMotionX = x;
}
- mActivePointerId = MotionEventCompat.getPointerId( ev, index );
+ mActivePointerId = MotionEventCompat.getPointerId(ev, index);
break;
}
case MotionEventCompat.ACTION_POINTER_UP:
- onSecondaryPointerUp( ev );
- if ( mOrientation == Orientation.VERTICAL ) {
- mLastMotionY = MotionEventCompat.getY( ev,
- MotionEventCompat.findPointerIndex( ev, mActivePointerId ) );
+ onSecondaryPointerUp(ev);
+ if (mOrientation == Orientation.VERTICAL) {
+ mLastMotionY = MotionEventCompat.getY(ev,
+ MotionEventCompat.findPointerIndex(ev, mActivePointerId));
} else {
- mLastMotionX = MotionEventCompat.getX( ev,
- MotionEventCompat.findPointerIndex( ev, mActivePointerId ) );
+ mLastMotionX = MotionEventCompat.getX(ev,
+ MotionEventCompat.findPointerIndex(ev, mActivePointerId));
}
break;
}
- if ( needsInvalidate ) {
- ViewCompat.postInvalidateOnAnimation( this );
+ if (needsInvalidate) {
+ ViewCompat.postInvalidateOnAnimation(this);
}
return true;
}
- private void requestParentDisallowInterceptTouchEvent( boolean disallowIntercept ) {
+ private void requestParentDisallowInterceptTouchEvent(boolean disallowIntercept) {
final ViewParent parent = getParent();
- if ( parent != null ) {
- parent.requestDisallowInterceptTouchEvent( disallowIntercept );
+ if (parent != null) {
+ parent.requestDisallowInterceptTouchEvent(disallowIntercept);
}
}
- private boolean performDrag( float dimen ) {
+ private boolean performDrag(float dimen) {
boolean needsInvalidate = false;
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mOrientation == Orientation.VERTICAL) {
float y = dimen;
final float deltaY = mLastMotionY - y;
mLastMotionY = y;
@@ -2250,34 +2256,34 @@ public class OrientedViewPager extends ViewGroup {
boolean topAbsolute = true;
boolean bottomAbsolute = true;
- final ItemInfo firstItem = mItems.get( 0 );
- final ItemInfo lastItem = mItems.get( mItems.size() - 1 );
- if ( firstItem.position != 0 ) {
+ final ItemInfo firstItem = mItems.get(0);
+ final ItemInfo lastItem = mItems.get(mItems.size() - 1);
+ if (firstItem.position != 0) {
topAbsolute = false;
topBound = firstItem.offset * height;
}
- if ( lastItem.position != mAdapter.getCount() - 1 ) {
+ if (lastItem.position != mAdapter.getCount() - 1) {
bottomAbsolute = false;
bottomBound = lastItem.offset * height;
}
- if ( scrollY < topBound ) {
- if ( topAbsolute ) {
+ if (scrollY < topBound) {
+ if (topAbsolute) {
float over = topBound - scrollY;
- needsInvalidate = mTopLeftEdge.onPull( Math.abs( over ) / height );
+ needsInvalidate = mTopLeftEdge.onPull(Math.abs(over) / height);
}
scrollY = topBound;
- } else if ( scrollY > bottomBound ) {
- if ( bottomAbsolute ) {
+ } else if (scrollY > bottomBound) {
+ if (bottomAbsolute) {
float over = scrollY - bottomBound;
- needsInvalidate = mRightBottomEdge.onPull( Math.abs( over ) / height );
+ needsInvalidate = mRightBottomEdge.onPull(Math.abs(over) / height);
}
scrollY = bottomBound;
}
// Don't lose the rounded component
- mLastMotionX += scrollY - ( int ) scrollY;
- scrollTo( getScrollX(), ( int ) scrollY );
- pageScrolled( ( int ) scrollY );
+ mLastMotionX += scrollY - (int) scrollY;
+ scrollTo(getScrollX(), (int) scrollY);
+ pageScrolled((int) scrollY);
} else {
float x = dimen;
@@ -2293,34 +2299,34 @@ public class OrientedViewPager extends ViewGroup {
boolean leftAbsolute = true;
boolean rightAbsolute = true;
- final ItemInfo firstItem = mItems.get( 0 );
- final ItemInfo lastItem = mItems.get( mItems.size() - 1 );
- if ( firstItem.position != 0 ) {
+ final ItemInfo firstItem = mItems.get(0);
+ final ItemInfo lastItem = mItems.get(mItems.size() - 1);
+ if (firstItem.position != 0) {
leftAbsolute = false;
leftBound = firstItem.offset * width;
}
- if ( lastItem.position != mAdapter.getCount() - 1 ) {
+ if (lastItem.position != mAdapter.getCount() - 1) {
rightAbsolute = false;
rightBound = lastItem.offset * width;
}
- if ( scrollX < leftBound ) {
- if ( leftAbsolute ) {
+ if (scrollX < leftBound) {
+ if (leftAbsolute) {
float over = leftBound - scrollX;
- needsInvalidate = mTopLeftEdge.onPull( Math.abs( over ) / width );
+ needsInvalidate = mTopLeftEdge.onPull(Math.abs(over) / width);
}
scrollX = leftBound;
- } else if ( scrollX > rightBound ) {
- if ( rightAbsolute ) {
+ } else if (scrollX > rightBound) {
+ if (rightAbsolute) {
float over = scrollX - rightBound;
- needsInvalidate = mRightBottomEdge.onPull( Math.abs( over ) / width );
+ needsInvalidate = mRightBottomEdge.onPull(Math.abs(over) / width);
}
scrollX = rightBound;
}
// Don't lose the rounded component
- mLastMotionX += scrollX - ( int ) scrollX;
- scrollTo( ( int ) scrollX, getScrollY() );
- pageScrolled( ( int ) scrollX );
+ mLastMotionX += scrollX - (int) scrollX;
+ scrollTo((int) scrollX, getScrollY());
+ pageScrolled((int) scrollX);
}
return needsInvalidate;
@@ -2333,32 +2339,32 @@ public class OrientedViewPager extends ViewGroup {
private ItemInfo infoForCurrentScrollPosition() {
final int size = getClientSize();
final float scrollOffset =
- size > 0 ? ( float ) ( ( mOrientation == Orientation.VERTICAL ) ? getScrollY() : getScrollX() )
+ size > 0 ? (float) ((mOrientation == Orientation.VERTICAL) ? getScrollY() : getScrollX())
/ size : 0;
- final float marginOffset = size > 0 ? ( float ) mPageMargin / size : 0;
+ final float marginOffset = size > 0 ? (float) mPageMargin / size : 0;
int lastPos = -1;
float lastOffset = 0.f;
float lastSize = 0.f;
boolean first = true;
ItemInfo lastItem = null;
- for ( int i = 0; i < mItems.size(); i++ ) {
- ItemInfo ii = mItems.get( i );
+ for (int i = 0; i < mItems.size(); i++) {
+ ItemInfo ii = mItems.get(i);
float offset;
- if ( !first && ii.position != lastPos + 1 ) {
+ if (!first && ii.position != lastPos + 1) {
// Create a synthetic item for a missing page.
ii = mTempItem;
ii.offset = lastOffset + lastSize + marginOffset;
ii.position = lastPos + 1;
- ii.sizeFactor = mAdapter.getPageWidth( ii.position );
+ ii.sizeFactor = mAdapter.getPageWidth(ii.position);
i--;
}
offset = ii.offset;
final float topLeftBound = offset;
final float bottomRightBound = offset + ii.sizeFactor + marginOffset;
- if ( first || scrollOffset >= topLeftBound ) {
- if ( scrollOffset < bottomRightBound || i == mItems.size() - 1 ) {
+ if (first || scrollOffset >= topLeftBound) {
+ if (scrollOffset < bottomRightBound || i == mItems.size() - 1) {
return ii;
}
} else {
@@ -2374,79 +2380,79 @@ public class OrientedViewPager extends ViewGroup {
return lastItem;
}
- private int determineTargetPage( int currentPage, float pageOffset, int velocity, int deltaDimen ) {
+ private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaDimen) {
int targetPage;
- if ( Math.abs( deltaDimen ) > mFlingDistance && Math.abs( velocity ) > mMinimumVelocity ) {
+ if (Math.abs(deltaDimen) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {
targetPage = velocity > 0 ? currentPage : currentPage + 1;
} else {
final float truncator = currentPage >= mCurItem ? 0.4f : 0.6f;
- targetPage = ( int ) ( currentPage + pageOffset + truncator );
+ targetPage = (int) (currentPage + pageOffset + truncator);
}
- if ( mItems.size() > 0 ) {
- final ItemInfo firstItem = mItems.get( 0 );
- final ItemInfo lastItem = mItems.get( mItems.size() - 1 );
+ if (mItems.size() > 0) {
+ final ItemInfo firstItem = mItems.get(0);
+ final ItemInfo lastItem = mItems.get(mItems.size() - 1);
// Only let the user target pages we have items for
- targetPage = Math.max( firstItem.position, Math.min( targetPage, lastItem.position ) );
+ targetPage = Math.max(firstItem.position, Math.min(targetPage, lastItem.position));
}
return targetPage;
}
@Override
- public void draw( Canvas canvas ) {
- super.draw( canvas );
+ public void draw(Canvas canvas) {
+ super.draw(canvas);
boolean needsInvalidate = false;
- final int overScrollMode = ViewCompat.getOverScrollMode( this );
- if ( overScrollMode == ViewCompat.OVER_SCROLL_ALWAYS ||
- ( overScrollMode == ViewCompat.OVER_SCROLL_IF_CONTENT_SCROLLS &&
- mAdapter != null && mAdapter.getCount() > 1 ) ) {
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( !mTopLeftEdge.isFinished() ) {
+ final int overScrollMode = ViewCompat.getOverScrollMode(this);
+ if (overScrollMode == ViewCompat.OVER_SCROLL_ALWAYS ||
+ (overScrollMode == ViewCompat.OVER_SCROLL_IF_CONTENT_SCROLLS &&
+ mAdapter != null && mAdapter.getCount() > 1)) {
+ if (mOrientation == Orientation.VERTICAL) {
+ if (!mTopLeftEdge.isFinished()) {
final int restoreCount = canvas.save();
final int height = getHeight();
final int width = getWidth() - getPaddingLeft() - getPaddingRight();
- canvas.translate( getPaddingLeft(), mFirstOffset * height );
- mTopLeftEdge.setSize( width, height );
- needsInvalidate |= mTopLeftEdge.draw( canvas );
- canvas.restoreToCount( restoreCount );
+ canvas.translate(getPaddingLeft(), mFirstOffset * height);
+ mTopLeftEdge.setSize(width, height);
+ needsInvalidate |= mTopLeftEdge.draw(canvas);
+ canvas.restoreToCount(restoreCount);
}
- if ( !mRightBottomEdge.isFinished() ) {
+ if (!mRightBottomEdge.isFinished()) {
final int restoreCount = canvas.save();
final int height = getHeight();
final int width = getWidth() - getPaddingLeft() - getPaddingRight();
- canvas.rotate( 180 );
- canvas.translate( -width - getPaddingLeft(), -( mLastOffset + 1 ) * height );
- mRightBottomEdge.setSize( width, height );
- needsInvalidate |= mRightBottomEdge.draw( canvas );
- canvas.restoreToCount( restoreCount );
+ canvas.rotate(180);
+ canvas.translate(-width - getPaddingLeft(), -(mLastOffset + 1) * height);
+ mRightBottomEdge.setSize(width, height);
+ needsInvalidate |= mRightBottomEdge.draw(canvas);
+ canvas.restoreToCount(restoreCount);
}
} else {
- if ( !mTopLeftEdge.isFinished() ) {
+ if (!mTopLeftEdge.isFinished()) {
final int restoreCount = canvas.save();
final int height = getHeight() - getPaddingTop() - getPaddingBottom();
final int width = getWidth();
- canvas.rotate( 270 );
- canvas.translate( -height + getPaddingTop(), mFirstOffset * width );
- mTopLeftEdge.setSize( height, width );
- needsInvalidate |= mTopLeftEdge.draw( canvas );
- canvas.restoreToCount( restoreCount );
+ canvas.rotate(270);
+ canvas.translate(-height + getPaddingTop(), mFirstOffset * width);
+ mTopLeftEdge.setSize(height, width);
+ needsInvalidate |= mTopLeftEdge.draw(canvas);
+ canvas.restoreToCount(restoreCount);
}
- if ( !mRightBottomEdge.isFinished() ) {
+ if (!mRightBottomEdge.isFinished()) {
final int restoreCount = canvas.save();
final int width = getWidth();
final int height = getHeight() - getPaddingTop() - getPaddingBottom();
- canvas.rotate( 90 );
- canvas.translate( -getPaddingTop(), -( mLastOffset + 1 ) * width );
- mRightBottomEdge.setSize( height, width );
- needsInvalidate |= mRightBottomEdge.draw( canvas );
- canvas.restoreToCount( restoreCount );
+ canvas.rotate(90);
+ canvas.translate(-getPaddingTop(), -(mLastOffset + 1) * width);
+ mRightBottomEdge.setSize(height, width);
+ needsInvalidate |= mRightBottomEdge.draw(canvas);
+ canvas.restoreToCount(restoreCount);
}
}
} else {
@@ -2454,51 +2460,51 @@ public class OrientedViewPager extends ViewGroup {
mRightBottomEdge.finish();
}
- if ( needsInvalidate ) {
+ if (needsInvalidate) {
// Keep animating
- ViewCompat.postInvalidateOnAnimation( this );
+ ViewCompat.postInvalidateOnAnimation(this);
}
}
@Override
- protected void onDraw( Canvas canvas ) {
- super.onDraw( canvas );
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
// Draw the margin drawable between pages if needed.
- if ( mPageMargin > 0 && mMarginDrawable != null && mItems.size() > 0 && mAdapter != null ) {
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mPageMargin > 0 && mMarginDrawable != null && mItems.size() > 0 && mAdapter != null) {
+ if (mOrientation == Orientation.VERTICAL) {
final int scrollY = getScrollY();
final int height = getHeight();
- final float marginOffset = ( float ) mPageMargin / height;
+ final float marginOffset = (float) mPageMargin / height;
int itemIndex = 0;
- ItemInfo ii = mItems.get( 0 );
+ ItemInfo ii = mItems.get(0);
float offset = ii.offset;
final int itemCount = mItems.size();
final int firstPos = ii.position;
- final int lastPos = mItems.get( itemCount - 1 ).position;
- for ( int pos = firstPos; pos < lastPos; pos++ ) {
- while ( pos > ii.position && itemIndex < itemCount ) {
- ii = mItems.get( ++itemIndex );
+ final int lastPos = mItems.get(itemCount - 1).position;
+ for (int pos = firstPos; pos < lastPos; pos++) {
+ while (pos > ii.position && itemIndex < itemCount) {
+ ii = mItems.get(++itemIndex);
}
float drawAt;
- if ( pos == ii.position ) {
- drawAt = ( ii.offset + ii.sizeFactor ) * height;
+ if (pos == ii.position) {
+ drawAt = (ii.offset + ii.sizeFactor) * height;
offset = ii.offset + ii.sizeFactor + marginOffset;
} else {
- float heightFactor = mAdapter.getPageWidth( pos );
- drawAt = ( offset + heightFactor ) * height;
+ float heightFactor = mAdapter.getPageWidth(pos);
+ drawAt = (offset + heightFactor) * height;
offset += heightFactor + marginOffset;
}
- if ( drawAt + mPageMargin > scrollY ) {
- mMarginDrawable.setBounds( mTopLeftPageBounds, ( int ) drawAt,
- mBottomRightPageBounds, ( int ) ( drawAt + mPageMargin + 0.5f ) );
- mMarginDrawable.draw( canvas );
+ if (drawAt + mPageMargin > scrollY) {
+ mMarginDrawable.setBounds(mTopLeftPageBounds, (int) drawAt,
+ mBottomRightPageBounds, (int) (drawAt + mPageMargin + 0.5f));
+ mMarginDrawable.draw(canvas);
}
- if ( drawAt > scrollY + height ) {
+ if (drawAt > scrollY + height) {
break; // No more visible, no sense in continuing
}
}
@@ -2506,35 +2512,35 @@ public class OrientedViewPager extends ViewGroup {
final int scrollX = getScrollX();
final int width = getWidth();
- final float marginOffset = ( float ) mPageMargin / width;
+ final float marginOffset = (float) mPageMargin / width;
int itemIndex = 0;
- ItemInfo ii = mItems.get( 0 );
+ ItemInfo ii = mItems.get(0);
float offset = ii.offset;
final int itemCount = mItems.size();
final int firstPos = ii.position;
- final int lastPos = mItems.get( itemCount - 1 ).position;
- for ( int pos = firstPos; pos < lastPos; pos++ ) {
- while ( pos > ii.position && itemIndex < itemCount ) {
- ii = mItems.get( ++itemIndex );
+ final int lastPos = mItems.get(itemCount - 1).position;
+ for (int pos = firstPos; pos < lastPos; pos++) {
+ while (pos > ii.position && itemIndex < itemCount) {
+ ii = mItems.get(++itemIndex);
}
float drawAt;
- if ( pos == ii.position ) {
- drawAt = ( ii.offset + ii.sizeFactor ) * width;
+ if (pos == ii.position) {
+ drawAt = (ii.offset + ii.sizeFactor) * width;
offset = ii.offset + ii.sizeFactor + marginOffset;
} else {
- float widthFactor = mAdapter.getPageWidth( pos );
- drawAt = ( offset + widthFactor ) * width;
+ float widthFactor = mAdapter.getPageWidth(pos);
+ drawAt = (offset + widthFactor) * width;
offset += widthFactor + marginOffset;
}
- if ( drawAt + mPageMargin > scrollX ) {
- mMarginDrawable.setBounds( ( int ) drawAt, mTopLeftPageBounds,
- ( int ) ( drawAt + mPageMargin + 0.5f ), mBottomRightPageBounds );
- mMarginDrawable.draw( canvas );
+ if (drawAt + mPageMargin > scrollX) {
+ mMarginDrawable.setBounds((int) drawAt, mTopLeftPageBounds,
+ (int) (drawAt + mPageMargin + 0.5f), mBottomRightPageBounds);
+ mMarginDrawable.draw(canvas);
}
- if ( drawAt > scrollX + width ) {
+ if (drawAt > scrollX + width) {
break; // No more visible, no sense in continuing
}
}
@@ -2559,24 +2565,24 @@ public class OrientedViewPager extends ViewGroup {
* @see #endFakeDrag()
*/
public boolean beginFakeDrag() {
- if ( mIsBeingDragged ) {
+ if (mIsBeingDragged) {
return false;
}
mFakeDragging = true;
- setScrollState( SCROLL_STATE_DRAGGING );
- if ( mOrientation == Orientation.VERTICAL ) {
+ setScrollState(SCROLL_STATE_DRAGGING);
+ if (mOrientation == Orientation.VERTICAL) {
mInitialMotionY = mLastMotionY = 0;
} else {
mInitialMotionX = mLastMotionX = 0;
}
- if ( mVelocityTracker == null ) {
+ if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
} else {
mVelocityTracker.clear();
}
final long time = SystemClock.uptimeMillis();
- final MotionEvent ev = MotionEvent.obtain( time, time, MotionEvent.ACTION_DOWN, 0, 0, 0 );
- mVelocityTracker.addMovement( ev );
+ final MotionEvent ev = MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0, 0, 0);
+ mVelocityTracker.addMovement(ev);
ev.recycle();
mFakeDragBeginTime = time;
return true;
@@ -2589,39 +2595,39 @@ public class OrientedViewPager extends ViewGroup {
* @see #fakeDragBy(float)
*/
public void endFakeDrag() {
- if ( !mFakeDragging ) {
- throw new IllegalStateException( "No fake drag in progress. Call beginFakeDrag first." );
+ if (!mFakeDragging) {
+ throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
}
final VelocityTracker velocityTracker = mVelocityTracker;
- velocityTracker.computeCurrentVelocity( 1000, mMaximumVelocity );
- if ( mOrientation == Orientation.VERTICAL ) {
- int initialVelocity = ( int ) VelocityTrackerCompat.getYVelocity(
- velocityTracker, mActivePointerId );
+ velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
+ if (mOrientation == Orientation.VERTICAL) {
+ int initialVelocity = (int) VelocityTrackerCompat.getYVelocity(
+ velocityTracker, mActivePointerId);
mPopulatePending = true;
final int size = getClientSize();
final int scrollY = getScrollY();
final ItemInfo ii = infoForCurrentScrollPosition();
final int currentPage = ii.position;
- final float pageOffset = ( ( ( float ) scrollY / size ) - ii.offset ) / ii.sizeFactor;
- final int totalDelta = ( int ) ( mLastMotionY - mInitialMotionY );
+ final float pageOffset = (((float) scrollY / size) - ii.offset) / ii.sizeFactor;
+ final int totalDelta = (int) (mLastMotionY - mInitialMotionY);
- int nextPage = determineTargetPage( currentPage, pageOffset, initialVelocity,
- totalDelta );
- setCurrentItemInternal( nextPage, true, true, initialVelocity );
+ int nextPage = determineTargetPage(currentPage, pageOffset, initialVelocity,
+ totalDelta);
+ setCurrentItemInternal(nextPage, true, true, initialVelocity);
} else {
- int initialVelocity = ( int ) VelocityTrackerCompat.getXVelocity(
- velocityTracker, mActivePointerId );
+ int initialVelocity = (int) VelocityTrackerCompat.getXVelocity(
+ velocityTracker, mActivePointerId);
mPopulatePending = true;
final int size = getClientSize();
final int scrollX = getScrollX();
final ItemInfo ii = infoForCurrentScrollPosition();
final int currentPage = ii.position;
- final float pageOffset = ( ( ( float ) scrollX / size ) - ii.offset ) / ii.sizeFactor;
- final int totalDelta = ( int ) ( mLastMotionX - mInitialMotionX );
- int nextPage = determineTargetPage( currentPage, pageOffset, initialVelocity,
- totalDelta );
- setCurrentItemInternal( nextPage, true, true, initialVelocity );
+ final float pageOffset = (((float) scrollX / size) - ii.offset) / ii.sizeFactor;
+ final int totalDelta = (int) (mLastMotionX - mInitialMotionX);
+ int nextPage = determineTargetPage(currentPage, pageOffset, initialVelocity,
+ totalDelta);
+ setCurrentItemInternal(nextPage, true, true, initialVelocity);
}
endDrag();
@@ -2635,12 +2641,12 @@ public class OrientedViewPager extends ViewGroup {
* @see #beginFakeDrag()
* @see #endFakeDrag()
*/
- public void fakeDragBy( float offset ) {
- if ( !mFakeDragging ) {
- throw new IllegalStateException( "No fake drag in progress. Call beginFakeDrag first." );
+ public void fakeDragBy(float offset) {
+ if (!mFakeDragging) {
+ throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
}
- if ( mOrientation == Orientation.VERTICAL ) {
+ if (mOrientation == Orientation.VERTICAL) {
mLastMotionY += offset;
float oldScrollY = getScrollY();
@@ -2650,30 +2656,30 @@ public class OrientedViewPager extends ViewGroup {
float topBound = height * mFirstOffset;
float bottomBound = height * mLastOffset;
- final ItemInfo firstItem = mItems.get( 0 );
- final ItemInfo lastItem = mItems.get( mItems.size() - 1 );
- if ( firstItem.position != 0 ) {
+ final ItemInfo firstItem = mItems.get(0);
+ final ItemInfo lastItem = mItems.get(mItems.size() - 1);
+ if (firstItem.position != 0) {
topBound = firstItem.offset * height;
}
- if ( lastItem.position != mAdapter.getCount() - 1 ) {
+ if (lastItem.position != mAdapter.getCount() - 1) {
bottomBound = lastItem.offset * height;
}
- if ( scrollY < topBound ) {
+ if (scrollY < topBound) {
scrollY = topBound;
- } else if ( scrollY > bottomBound ) {
+ } else if (scrollY > bottomBound) {
scrollY = bottomBound;
}
// Don't lose the rounded component
- mLastMotionY += scrollY - ( int ) scrollY;
- scrollTo( getScrollX(), ( int ) scrollY );
- pageScrolled( ( int ) scrollY );
+ mLastMotionY += scrollY - (int) scrollY;
+ scrollTo(getScrollX(), (int) scrollY);
+ pageScrolled((int) scrollY);
// Synthesize an event for the VelocityTracker.
final long time = SystemClock.uptimeMillis();
- final MotionEvent ev = MotionEvent.obtain( mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
- 0, mLastMotionY, 0 );
- mVelocityTracker.addMovement( ev );
+ final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
+ 0, mLastMotionY, 0);
+ mVelocityTracker.addMovement(ev);
ev.recycle();
} else {
mLastMotionX += offset;
@@ -2685,30 +2691,30 @@ public class OrientedViewPager extends ViewGroup {
float leftBound = width * mFirstOffset;
float rightBound = width * mLastOffset;
- final ItemInfo firstItem = mItems.get( 0 );
- final ItemInfo lastItem = mItems.get( mItems.size() - 1 );
- if ( firstItem.position != 0 ) {
+ final ItemInfo firstItem = mItems.get(0);
+ final ItemInfo lastItem = mItems.get(mItems.size() - 1);
+ if (firstItem.position != 0) {
leftBound = firstItem.offset * width;
}
- if ( lastItem.position != mAdapter.getCount() - 1 ) {
+ if (lastItem.position != mAdapter.getCount() - 1) {
rightBound = lastItem.offset * width;
}
- if ( scrollX < leftBound ) {
+ if (scrollX < leftBound) {
scrollX = leftBound;
- } else if ( scrollX > rightBound ) {
+ } else if (scrollX > rightBound) {
scrollX = rightBound;
}
// Don't lose the rounded component
- mLastMotionX += scrollX - ( int ) scrollX;
- scrollTo( ( int ) scrollX, getScrollY() );
- pageScrolled( ( int ) scrollX );
+ mLastMotionX += scrollX - (int) scrollX;
+ scrollTo((int) scrollX, getScrollY());
+ pageScrolled((int) scrollX);
// Synthesize an event for the VelocityTracker.
final long time = SystemClock.uptimeMillis();
- final MotionEvent ev = MotionEvent.obtain( mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
- mLastMotionX, 0, 0 );
- mVelocityTracker.addMovement( ev );
+ final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
+ mLastMotionX, 0, 0);
+ mVelocityTracker.addMovement(ev);
ev.recycle();
}
}
@@ -2725,20 +2731,20 @@ public class OrientedViewPager extends ViewGroup {
return mFakeDragging;
}
- private void onSecondaryPointerUp( MotionEvent ev ) {
- final int pointerIndex = MotionEventCompat.getActionIndex( ev );
- final int pointerId = MotionEventCompat.getPointerId( ev, pointerIndex );
- if ( pointerId == mActivePointerId ) {
+ private void onSecondaryPointerUp(MotionEvent ev) {
+ final int pointerIndex = MotionEventCompat.getActionIndex(ev);
+ final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
+ if (pointerId == mActivePointerId) {
// This was our active pointer going up. Choose a new
// active pointer and adjust accordingly.
final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- if ( mOrientation == Orientation.VERTICAL ) {
- mLastMotionY = MotionEventCompat.getY( ev, newPointerIndex );
+ if (mOrientation == Orientation.VERTICAL) {
+ mLastMotionY = MotionEventCompat.getY(ev, newPointerIndex);
} else {
- mLastMotionX = MotionEventCompat.getX( ev, newPointerIndex );
+ mLastMotionX = MotionEventCompat.getX(ev, newPointerIndex);
}
- mActivePointerId = MotionEventCompat.getPointerId( ev, newPointerIndex );
- if ( mVelocityTracker != null ) {
+ mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
+ if (mVelocityTracker != null) {
mVelocityTracker.clear();
}
}
@@ -2748,38 +2754,38 @@ public class OrientedViewPager extends ViewGroup {
mIsBeingDragged = false;
mIsUnableToDrag = false;
- if ( mVelocityTracker != null ) {
+ if (mVelocityTracker != null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
}
}
- private void setScrollingCacheEnabled( boolean enabled ) {
- if ( mScrollingCacheEnabled != enabled ) {
+ private void setScrollingCacheEnabled(boolean enabled) {
+ if (mScrollingCacheEnabled != enabled) {
mScrollingCacheEnabled = enabled;
- if ( USE_CACHE ) {
+ if (USE_CACHE) {
final int size = getChildCount();
- for ( int i = 0; i < size; ++i ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() != GONE ) {
- child.setDrawingCacheEnabled( enabled );
+ for (int i = 0; i < size; ++i) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() != GONE) {
+ child.setDrawingCacheEnabled(enabled);
}
}
}
}
}
- public boolean internalCanScrollVertically( int direction ) {
- if ( mAdapter == null ) {
+ public boolean internalCanScrollVertically(int direction) {
+ if (mAdapter == null) {
return false;
}
final int size = getClientSize();
- final int scroll = ( mOrientation == Orientation.VERTICAL ) ? getScrollY() : getScrollX();
- if ( direction < 0 ) {
- return ( scroll > ( int ) ( size * mFirstOffset ) );
- } else if ( direction > 0 ) {
- return ( scroll < ( int ) ( size * mLastOffset ) );
+ final int scroll = (mOrientation == Orientation.VERTICAL) ? getScrollY() : getScrollX();
+ if (direction < 0) {
+ return (scroll > (int) (size * mFirstOffset));
+ } else if (direction > 0) {
+ return (scroll < (int) (size * mLastOffset));
} else {
return false;
}
@@ -2788,50 +2794,50 @@ public class OrientedViewPager extends ViewGroup {
/**
* Tests scrollability within child views of v given a delta of dx.
*
- * @param v View to test for horizontal scrollability
+ * @param v View to test for horizontal scrollability
* @param checkV Whether the view v passed should itself be checked for scrollability (true),
- * or just its children (false).
- * @param delta Delta scrolled in pixels
- * @param x X coordinate of the active touch point
- * @param y Y coordinate of the active touch point
+ * or just its children (false).
+ * @param delta Delta scrolled in pixels
+ * @param x X coordinate of the active touch point
+ * @param y Y coordinate of the active touch point
* @return true if child views of v can be scrolled by delta of dx.
*/
- protected boolean canScroll( View v, boolean checkV, int delta, int x, int y ) {
- if ( v instanceof ViewGroup ) {
- final ViewGroup group = ( ViewGroup ) v;
+ protected boolean canScroll(View v, boolean checkV, int delta, int x, int y) {
+ if (v instanceof ViewGroup) {
+ final ViewGroup group = (ViewGroup) v;
final int scrollX = v.getScrollX();
final int scrollY = v.getScrollY();
final int count = group.getChildCount();
// Count backwards - let topmost views consume scroll distance first.
- for ( int i = count - 1; i >= 0; i-- ) {
+ for (int i = count - 1; i >= 0; i--) {
// TODO: Add versioned support here for transformed views.
// This will not work for transformed views in Honeycomb+
- final View child = group.getChildAt( i );
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
+ final View child = group.getChildAt(i);
+ if (mOrientation == Orientation.VERTICAL) {
+ if (y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
- canScroll( child, true, delta, x + scrollX - child.getLeft(),
- y + scrollY - child.getTop() ) ) {
+ canScroll(child, true, delta, x + scrollX - child.getLeft(),
+ y + scrollY - child.getTop())) {
return true;
}
} else {
- if ( x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
+ if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
- canScroll( child, true, delta, x + scrollX - child.getLeft(),
- y + scrollY - child.getTop() ) ) {
+ canScroll(child, true, delta, x + scrollX - child.getLeft(),
+ y + scrollY - child.getTop())) {
return true;
}
}
}
}
- return checkV && ViewCompat.canScrollVertically( v, -delta );
+ return checkV && ViewCompat.canScrollVertically(v, -delta);
}
@Override
- public boolean dispatchKeyEvent( KeyEvent event ) {
+ public boolean dispatchKeyEvent(KeyEvent event) {
// Let the focused view and/or our descendants get the key first
- return super.dispatchKeyEvent( event ) || executeKeyEvent( event );
+ return super.dispatchKeyEvent(event) || executeKeyEvent(event);
}
/**
@@ -2842,24 +2848,24 @@ public class OrientedViewPager extends ViewGroup {
* @param event The key event to execute.
* @return Return true if the event was handled, else false.
*/
- public boolean executeKeyEvent( KeyEvent event ) {
+ public boolean executeKeyEvent(KeyEvent event) {
boolean handled = false;
- if ( event.getAction() == KeyEvent.ACTION_DOWN ) {
- switch ( event.getKeyCode() ) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
+ switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_DPAD_LEFT:
- handled = arrowScroll( FOCUS_LEFT );
+ handled = arrowScroll(FOCUS_LEFT);
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
- handled = arrowScroll( FOCUS_RIGHT );
+ handled = arrowScroll(FOCUS_RIGHT);
break;
case KeyEvent.KEYCODE_TAB:
- if ( Build.VERSION.SDK_INT >= 11 ) {
+ if (Build.VERSION.SDK_INT >= 11) {
// The focus finder had a bug handling FOCUS_FORWARD and FOCUS_BACKWARD
// before Android 3.0. Ignore the tab key on those devices.
- if ( event.hasNoModifiers() ) {
- handled = arrowScroll( FOCUS_FORWARD );
- } else if ( event.hasModifiers( KeyEvent.META_SHIFT_ON ) ) {
- handled = arrowScroll( FOCUS_BACKWARD );
+ if (event.hasNoModifiers()) {
+ handled = arrowScroll(FOCUS_FORWARD);
+ } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
+ handled = arrowScroll(FOCUS_BACKWARD);
}
}
break;
@@ -2868,98 +2874,98 @@ public class OrientedViewPager extends ViewGroup {
return handled;
}
- public boolean arrowScroll( int direction ) {
+ public boolean arrowScroll(int direction) {
View currentFocused = findFocus();
- if ( currentFocused == this ) {
+ if (currentFocused == this) {
currentFocused = null;
- } else if ( currentFocused != null ) {
+ } else if (currentFocused != null) {
boolean isChild = false;
- for ( ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup;
- parent = parent.getParent() ) {
- if ( parent == this ) {
+ for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup;
+ parent = parent.getParent()) {
+ if (parent == this) {
isChild = true;
break;
}
}
- if ( !isChild ) {
+ if (!isChild) {
// This would cause the focus search down below to fail in fun ways.
final StringBuilder sb = new StringBuilder();
- sb.append( currentFocused.getClass().getSimpleName() );
- for ( ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup;
- parent = parent.getParent() ) {
- sb.append( " => " ).append( parent.getClass().getSimpleName() );
+ sb.append(currentFocused.getClass().getSimpleName());
+ for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup;
+ parent = parent.getParent()) {
+ sb.append(" => ").append(parent.getClass().getSimpleName());
}
- Log.e( TAG, "arrowScroll tried to find focus based on non-child " +
- "current focused view " + sb.toString() );
+ Log.e(TAG, "arrowScroll tried to find focus based on non-child " +
+ "current focused view " + sb.toString());
currentFocused = null;
}
}
boolean handled = false;
- View nextFocused = FocusFinder.getInstance().findNextFocus( this, currentFocused,
- direction );
- if ( nextFocused != null && nextFocused != currentFocused ) {
- if ( direction == View.FOCUS_UP ) {
+ View nextFocused = FocusFinder.getInstance().findNextFocus(this, currentFocused,
+ direction);
+ if (nextFocused != null && nextFocused != currentFocused) {
+ if (direction == View.FOCUS_UP) {
// If there is nothing to the left, or this is causing us to
// jump to the right, then what we really want to do is page left.
- if ( mOrientation == Orientation.VERTICAL ) {
- final int nextTop = getChildRectInPagerCoordinates( mTempRect, nextFocused ).top;
- final int currTop = getChildRectInPagerCoordinates( mTempRect, currentFocused ).top;
- if ( currentFocused != null && nextTop >= currTop ) {
+ if (mOrientation == Orientation.VERTICAL) {
+ final int nextTop = getChildRectInPagerCoordinates(mTempRect, nextFocused).top;
+ final int currTop = getChildRectInPagerCoordinates(mTempRect, currentFocused).top;
+ if (currentFocused != null && nextTop >= currTop) {
handled = pageBack();
} else {
handled = nextFocused.requestFocus();
}
} else {
- final int nextLeft = getChildRectInPagerCoordinates( mTempRect, nextFocused ).left;
- final int currLeft = getChildRectInPagerCoordinates( mTempRect, currentFocused ).left;
- if ( currentFocused != null && nextLeft >= currLeft ) {
+ final int nextLeft = getChildRectInPagerCoordinates(mTempRect, nextFocused).left;
+ final int currLeft = getChildRectInPagerCoordinates(mTempRect, currentFocused).left;
+ if (currentFocused != null && nextLeft >= currLeft) {
handled = pageBack();
} else {
handled = nextFocused.requestFocus();
}
}
- } else if ( direction == View.FOCUS_DOWN ) {
+ } else if (direction == View.FOCUS_DOWN) {
// If there is nothing to the right, or this is causing us to
// jump to the left, then what we really want to do is page right.
- if ( mOrientation == Orientation.VERTICAL ) {
- final int nextDown = getChildRectInPagerCoordinates( mTempRect, nextFocused ).bottom;
- final int currDown = getChildRectInPagerCoordinates( mTempRect, currentFocused ).bottom;
- if ( currentFocused != null && nextDown <= currDown ) {
+ if (mOrientation == Orientation.VERTICAL) {
+ final int nextDown = getChildRectInPagerCoordinates(mTempRect, nextFocused).bottom;
+ final int currDown = getChildRectInPagerCoordinates(mTempRect, currentFocused).bottom;
+ if (currentFocused != null && nextDown <= currDown) {
handled = pageForward();
} else {
handled = nextFocused.requestFocus();
}
} else {
- final int nextLeft = getChildRectInPagerCoordinates( mTempRect, nextFocused ).left;
- final int currLeft = getChildRectInPagerCoordinates( mTempRect, currentFocused ).left;
- if ( currentFocused != null && nextLeft <= currLeft ) {
+ final int nextLeft = getChildRectInPagerCoordinates(mTempRect, nextFocused).left;
+ final int currLeft = getChildRectInPagerCoordinates(mTempRect, currentFocused).left;
+ if (currentFocused != null && nextLeft <= currLeft) {
handled = pageForward();
} else {
handled = nextFocused.requestFocus();
}
}
}
- } else if ( direction == FOCUS_UP || direction == FOCUS_BACKWARD ) {
+ } else if (direction == FOCUS_UP || direction == FOCUS_BACKWARD) {
// Trying to move left and nothing there; try to page.
handled = pageBack();
- } else if ( direction == FOCUS_DOWN || direction == FOCUS_FORWARD ) {
+ } else if (direction == FOCUS_DOWN || direction == FOCUS_FORWARD) {
// Trying to move right and nothing there; try to page.
handled = pageForward();
}
- if ( handled ) {
- playSoundEffect( SoundEffectConstants.getContantForFocusDirection( direction ) );
+ if (handled) {
+ playSoundEffect(SoundEffectConstants.getContantForFocusDirection(direction));
}
return handled;
}
- private Rect getChildRectInPagerCoordinates( Rect outRect, View child ) {
- if ( outRect == null ) {
+ private Rect getChildRectInPagerCoordinates(Rect outRect, View child) {
+ if (outRect == null) {
outRect = new Rect();
}
- if ( child == null ) {
- outRect.set( 0, 0, 0, 0 );
+ if (child == null) {
+ outRect.set(0, 0, 0, 0);
return outRect;
}
outRect.left = child.getLeft();
@@ -2968,8 +2974,8 @@ public class OrientedViewPager extends ViewGroup {
outRect.bottom = child.getBottom();
ViewParent parent = child.getParent();
- while ( parent instanceof ViewGroup && parent != this ) {
- final ViewGroup group = ( ViewGroup ) parent;
+ while (parent instanceof ViewGroup && parent != this) {
+ final ViewGroup group = (ViewGroup) parent;
outRect.left += group.getLeft();
outRect.right += group.getRight();
outRect.top += group.getTop();
@@ -2981,16 +2987,16 @@ public class OrientedViewPager extends ViewGroup {
}
boolean pageBack() {
- if ( mCurItem > 0 ) {
- setCurrentItem( mCurItem - 1, true );
+ if (mCurItem > 0) {
+ setCurrentItem(mCurItem - 1, true);
return true;
}
return false;
}
boolean pageForward() {
- if ( mAdapter != null && mCurItem < ( mAdapter.getCount() - 1 ) ) {
- setCurrentItem( mCurItem + 1, true );
+ if (mAdapter != null && mCurItem < (mAdapter.getCount() - 1)) {
+ setCurrentItem(mCurItem + 1, true);
return true;
}
return false;
@@ -3000,18 +3006,18 @@ public class OrientedViewPager extends ViewGroup {
* We only want the current page that is being shown to be focusable.
*/
@Override
- public void addFocusables( ArrayList< View > views, int direction, int focusableMode ) {
+ public void addFocusables(ArrayList views, int direction, int focusableMode) {
final int focusableCount = views.size();
final int descendantFocusability = getDescendantFocusability();
- if ( descendantFocusability != FOCUS_BLOCK_DESCENDANTS ) {
- for ( int i = 0; i < getChildCount(); i++ ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() == VISIBLE ) {
- ItemInfo ii = infoForChild( child );
- if ( ii != null && ii.position == mCurItem ) {
- child.addFocusables( views, direction, focusableMode );
+ if (descendantFocusability != FOCUS_BLOCK_DESCENDANTS) {
+ for (int i = 0; i < getChildCount(); i++) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() == VISIBLE) {
+ ItemInfo ii = infoForChild(child);
+ if (ii != null && ii.position == mCurItem) {
+ child.addFocusables(views, direction, focusableMode);
}
}
}
@@ -3024,18 +3030,18 @@ public class OrientedViewPager extends ViewGroup {
if (
descendantFocusability != FOCUS_AFTER_DESCENDANTS ||
// No focusable descendants
- ( focusableCount == views.size() ) ) {
+ (focusableCount == views.size())) {
// Note that we can't call the superclass here, because it will
// add all views in. So we need to do the same thing View does.
- if ( !isFocusable() ) {
+ if (!isFocusable()) {
return;
}
- if ( ( focusableMode & FOCUSABLES_TOUCH_MODE ) == FOCUSABLES_TOUCH_MODE &&
- isInTouchMode() && !isFocusableInTouchMode() ) {
+ if ((focusableMode & FOCUSABLES_TOUCH_MODE) == FOCUSABLES_TOUCH_MODE &&
+ isInTouchMode() && !isFocusableInTouchMode()) {
return;
}
- if ( views != null ) {
- views.add( this );
+ if (views != null) {
+ views.add(this);
}
}
}
@@ -3044,16 +3050,16 @@ public class OrientedViewPager extends ViewGroup {
* We only want the current page that is being shown to be touchable.
*/
@Override
- public void addTouchables( ArrayList< View > views ) {
+ public void addTouchables(ArrayList views) {
// Note that we don't call super.addTouchables(), which means that
// we don't call View.addTouchables(). This is okay because a ViewPager
// is itself not touchable.
- for ( int i = 0; i < getChildCount(); i++ ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() == VISIBLE ) {
- ItemInfo ii = infoForChild( child );
- if ( ii != null && ii.position == mCurItem ) {
- child.addTouchables( views );
+ for (int i = 0; i < getChildCount(); i++) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() == VISIBLE) {
+ ItemInfo ii = infoForChild(child);
+ if (ii != null && ii.position == mCurItem) {
+ child.addTouchables(views);
}
}
}
@@ -3063,13 +3069,13 @@ public class OrientedViewPager extends ViewGroup {
* We only want the current page that is being shown to be focusable.
*/
@Override
- protected boolean onRequestFocusInDescendants( int direction,
- Rect previouslyFocusedRect ) {
+ protected boolean onRequestFocusInDescendants(int direction,
+ Rect previouslyFocusedRect) {
int index;
int increment;
int end;
int count = getChildCount();
- if ( ( direction & FOCUS_FORWARD ) != 0 ) {
+ if ((direction & FOCUS_FORWARD) != 0) {
index = 0;
increment = 1;
end = count;
@@ -3078,12 +3084,12 @@ public class OrientedViewPager extends ViewGroup {
increment = -1;
end = -1;
}
- for ( int i = index; i != end; i += increment ) {
- View child = getChildAt( i );
- if ( child.getVisibility() == VISIBLE ) {
- ItemInfo ii = infoForChild( child );
- if ( ii != null && ii.position == mCurItem ) {
- if ( child.requestFocus( direction, previouslyFocusedRect ) ) {
+ for (int i = index; i != end; i += increment) {
+ View child = getChildAt(i);
+ if (child.getVisibility() == VISIBLE) {
+ ItemInfo ii = infoForChild(child);
+ if (ii != null && ii.position == mCurItem) {
+ if (child.requestFocus(direction, previouslyFocusedRect)) {
return true;
}
}
@@ -3093,20 +3099,20 @@ public class OrientedViewPager extends ViewGroup {
}
@Override
- public boolean dispatchPopulateAccessibilityEvent( AccessibilityEvent event ) {
+ public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
// Dispatch scroll events from this ViewPager.
- if ( event.getEventType() == AccessibilityEventCompat.TYPE_VIEW_SCROLLED ) {
- return super.dispatchPopulateAccessibilityEvent( event );
+ if (event.getEventType() == AccessibilityEventCompat.TYPE_VIEW_SCROLLED) {
+ return super.dispatchPopulateAccessibilityEvent(event);
}
// Dispatch all other accessibility events from the current page.
final int childCount = getChildCount();
- for ( int i = 0; i < childCount; i++ ) {
- final View child = getChildAt( i );
- if ( child.getVisibility() == VISIBLE ) {
- final ItemInfo ii = infoForChild( child );
- if ( ii != null && ii.position == mCurItem &&
- child.dispatchPopulateAccessibilityEvent( event ) ) {
+ for (int i = 0; i < childCount; i++) {
+ final View child = getChildAt(i);
+ if (child.getVisibility() == VISIBLE) {
+ final ItemInfo ii = infoForChild(child);
+ if (ii != null && ii.position == mCurItem &&
+ child.dispatchPopulateAccessibilityEvent(event)) {
return true;
}
}
@@ -3121,76 +3127,76 @@ public class OrientedViewPager extends ViewGroup {
}
@Override
- protected ViewGroup.LayoutParams generateLayoutParams( ViewGroup.LayoutParams p ) {
+ protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
return generateDefaultLayoutParams();
}
@Override
- protected boolean checkLayoutParams( ViewGroup.LayoutParams p ) {
- return p instanceof LayoutParams && super.checkLayoutParams( p );
+ protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
+ return p instanceof LayoutParams && super.checkLayoutParams(p);
}
@Override
- public ViewGroup.LayoutParams generateLayoutParams( AttributeSet attrs ) {
- return new LayoutParams( getContext(), attrs );
+ public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) {
+ return new LayoutParams(getContext(), attrs);
}
class MyAccessibilityDelegate extends AccessibilityDelegateCompat {
@Override
- public void onInitializeAccessibilityEvent( View host, AccessibilityEvent event ) {
- super.onInitializeAccessibilityEvent( host, event );
- event.setClassName( ViewPager.class.getName() );
+ public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
+ super.onInitializeAccessibilityEvent(host, event);
+ event.setClassName(ViewPager.class.getName());
final AccessibilityRecordCompat recordCompat = AccessibilityRecordCompat.obtain();
- recordCompat.setScrollable( canScroll() );
- if ( event.getEventType() == AccessibilityEventCompat.TYPE_VIEW_SCROLLED
- && mAdapter != null ) {
- recordCompat.setItemCount( mAdapter.getCount() );
- recordCompat.setFromIndex( mCurItem );
- recordCompat.setToIndex( mCurItem );
+ recordCompat.setScrollable(canScroll());
+ if (event.getEventType() == AccessibilityEventCompat.TYPE_VIEW_SCROLLED
+ && mAdapter != null) {
+ recordCompat.setItemCount(mAdapter.getCount());
+ recordCompat.setFromIndex(mCurItem);
+ recordCompat.setToIndex(mCurItem);
}
}
@Override
- public void onInitializeAccessibilityNodeInfo( View host, AccessibilityNodeInfoCompat info ) {
- super.onInitializeAccessibilityNodeInfo( host, info );
- info.setClassName( ViewPager.class.getName() );
- info.setScrollable( canScroll() );
- if ( mOrientation == Orientation.VERTICAL ) {
- if ( internalCanScrollVertically( 1 ) ) {
- info.addAction( AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD );
+ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+ info.setClassName(ViewPager.class.getName());
+ info.setScrollable(canScroll());
+ if (mOrientation == Orientation.VERTICAL) {
+ if (internalCanScrollVertically(1)) {
+ info.addAction(AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD);
}
- if ( internalCanScrollVertically( -1 ) ) {
- info.addAction( AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD );
+ if (internalCanScrollVertically(-1)) {
+ info.addAction(AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD);
}
} else {
- if ( canScrollHorizontally( 1 ) ) {
- info.addAction( AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD );
+ if (canScrollHorizontally(1)) {
+ info.addAction(AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD);
}
- if ( canScrollHorizontally( -1 ) ) {
- info.addAction( AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD );
+ if (canScrollHorizontally(-1)) {
+ info.addAction(AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD);
}
}
}
@Override
- public boolean performAccessibilityAction( View host, int action, Bundle args ) {
- if ( super.performAccessibilityAction( host, action, args ) ) {
+ public boolean performAccessibilityAction(View host, int action, Bundle args) {
+ if (super.performAccessibilityAction(host, action, args)) {
return true;
}
- switch ( action ) {
+ switch (action) {
case AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD: {
- if ( ( mOrientation == Orientation.VERTICAL && internalCanScrollVertically( 1 ) )
- || ( mOrientation == Orientation.HORIZONTAL && canScrollHorizontally( 1 ) ) ) {
- setCurrentItem( mCurItem + 1 );
+ if ((mOrientation == Orientation.VERTICAL && internalCanScrollVertically(1))
+ || (mOrientation == Orientation.HORIZONTAL && canScrollHorizontally(1))) {
+ setCurrentItem(mCurItem + 1);
return true;
}
}
return false;
case AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD: {
- if ( ( mOrientation == Orientation.VERTICAL && internalCanScrollVertically( -1 ) )
- || ( mOrientation == Orientation.HORIZONTAL && canScrollHorizontally( -1 ) ) ) {
- setCurrentItem( mCurItem - 1 );
+ if ((mOrientation == Orientation.VERTICAL && internalCanScrollVertically(-1))
+ || (mOrientation == Orientation.HORIZONTAL && canScrollHorizontally(-1))) {
+ setCurrentItem(mCurItem - 1);
return true;
}
}
@@ -3200,7 +3206,7 @@ public class OrientedViewPager extends ViewGroup {
}
private boolean canScroll() {
- return ( mAdapter != null ) && ( mAdapter.getCount() > 1 );
+ return (mAdapter != null) && (mAdapter.getCount() > 1);
}
}
@@ -3261,24 +3267,24 @@ public class OrientedViewPager extends ViewGroup {
int childIndex;
public LayoutParams() {
- super( FILL_PARENT, FILL_PARENT );
+ super(FILL_PARENT, FILL_PARENT);
}
- public LayoutParams( Context context, AttributeSet attrs ) {
- super( context, attrs );
+ public LayoutParams(Context context, AttributeSet attrs) {
+ super(context, attrs);
- final TypedArray a = context.obtainStyledAttributes( attrs, LAYOUT_ATTRS );
- gravity = a.getInteger( 0, Gravity.TOP );
+ final TypedArray a = context.obtainStyledAttributes(attrs, LAYOUT_ATTRS);
+ gravity = a.getInteger(0, Gravity.TOP);
a.recycle();
}
}
- static class ViewPositionComparator implements Comparator< View > {
+ static class ViewPositionComparator implements Comparator {
@Override
- public int compare( View lhs, View rhs ) {
- final LayoutParams llp = ( LayoutParams ) lhs.getLayoutParams();
- final LayoutParams rlp = ( LayoutParams ) rhs.getLayoutParams();
- if ( llp.isDecor != rlp.isDecor ) {
+ public int compare(View lhs, View rhs) {
+ final LayoutParams llp = (LayoutParams) lhs.getLayoutParams();
+ final LayoutParams rlp = (LayoutParams) rhs.getLayoutParams();
+ if (llp.isDecor != rlp.isDecor) {
return llp.isDecor ? 1 : -1;
}
return llp.position - rlp.position;
@@ -3291,7 +3297,7 @@ public class OrientedViewPager extends ViewGroup {
/**
* Callbacks a {@link Parcelable} creator should implement.
*/
- public interface ParcelableCompatCreatorCallbacks< T > {
+ public interface ParcelableCompatCreatorCallbacks {
/**
* Create a new instance of the Parcelable class, instantiating it
@@ -3299,11 +3305,11 @@ public class OrientedViewPager extends ViewGroup {
* {@link Parcelable#writeToParcel Parcelable.writeToParcel()} and
* using the given ClassLoader.
*
- * @param in The Parcel to read the object's data from.
+ * @param in The Parcel to read the object's data from.
* @param loader The ClassLoader that this object is being created in.
* @return Returns a new instance of the Parcelable class.
*/
- public T createFromParcel( Parcel in, ClassLoader loader );
+ public T createFromParcel(Parcel in, ClassLoader loader);
/**
* Create a new array of the Parcelable class.
@@ -3312,7 +3318,7 @@ public class OrientedViewPager extends ViewGroup {
* @return Returns an array of the Parcelable class, with every entry
* initialized to null.
*/
- public T[] newArray( int size );
+ public T[] newArray(int size);
}
/**
@@ -3327,58 +3333,58 @@ public class OrientedViewPager extends ViewGroup {
* @param callbacks Creator callbacks implementation.
* @return New creator.
*/
- public static < T > Parcelable.Creator< T > newCreator(
- OrientedViewPager.ParcelableCompatCreatorCallbacks< T > callbacks ) {
- if ( android.os.Build.VERSION.SDK_INT >= 13 ) {
- return ParcelableCompatCreatorHoneycombMR2Stub.instantiate( callbacks );
+ public static Parcelable.Creator newCreator(
+ OrientedViewPager.ParcelableCompatCreatorCallbacks callbacks) {
+ if (android.os.Build.VERSION.SDK_INT >= 13) {
+ return ParcelableCompatCreatorHoneycombMR2Stub.instantiate(callbacks);
}
- return new CompatCreator< T >( callbacks );
+ return new CompatCreator(callbacks);
}
- public static class CompatCreator< T > implements Parcelable.Creator< T > {
- final OrientedViewPager.ParcelableCompatCreatorCallbacks< T > mCallbacks;
+ public static class CompatCreator implements Parcelable.Creator {
+ final OrientedViewPager.ParcelableCompatCreatorCallbacks mCallbacks;
- public CompatCreator( OrientedViewPager.ParcelableCompatCreatorCallbacks< T > callbacks ) {
+ public CompatCreator(OrientedViewPager.ParcelableCompatCreatorCallbacks callbacks) {
mCallbacks = callbacks;
}
@Override
- public T createFromParcel( Parcel source ) {
- return mCallbacks.createFromParcel( source, null );
+ public T createFromParcel(Parcel source) {
+ return mCallbacks.createFromParcel(source, null);
}
@Override
- public T[] newArray( int size ) {
- return mCallbacks.newArray( size );
+ public T[] newArray(int size) {
+ return mCallbacks.newArray(size);
}
}
}
static class ParcelableCompatCreatorHoneycombMR2Stub {
- public static < T > Parcelable.Creator< T > instantiate(
- OrientedViewPager.ParcelableCompatCreatorCallbacks< T > callbacks ) {
- return new ParcelableCompatCreatorHoneycombMR2< T >( callbacks );
+ public static Parcelable.Creator instantiate(
+ OrientedViewPager.ParcelableCompatCreatorCallbacks callbacks) {
+ return new ParcelableCompatCreatorHoneycombMR2(callbacks);
}
}
- static class ParcelableCompatCreatorHoneycombMR2< T > implements Parcelable.ClassLoaderCreator< T > {
- private final OrientedViewPager.ParcelableCompatCreatorCallbacks< T > mCallbacks;
+ static class ParcelableCompatCreatorHoneycombMR2 implements Parcelable.ClassLoaderCreator {
+ private final OrientedViewPager.ParcelableCompatCreatorCallbacks mCallbacks;
public ParcelableCompatCreatorHoneycombMR2(
- OrientedViewPager.ParcelableCompatCreatorCallbacks< T > callbacks ) {
+ OrientedViewPager.ParcelableCompatCreatorCallbacks callbacks) {
mCallbacks = callbacks;
}
- public T createFromParcel( Parcel in ) {
- return mCallbacks.createFromParcel( in, null );
+ public T createFromParcel(Parcel in) {
+ return mCallbacks.createFromParcel(in, null);
}
- public T createFromParcel( Parcel in, ClassLoader loader ) {
- return mCallbacks.createFromParcel( in, loader );
+ public T createFromParcel(Parcel in, ClassLoader loader) {
+ return mCallbacks.createFromParcel(in, loader);
}
- public T[] newArray( int size ) {
- return mCallbacks.newArray( size );
+ public T[] newArray(int size) {
+ return mCallbacks.newArray(size);
}
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/PlaceholderFragmentProvider.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/PlaceholderFragmentProvider.java
index 11b4dcdfd3..4109a1004e 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/PlaceholderFragmentProvider.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/PlaceholderFragmentProvider.java
@@ -19,6 +19,7 @@ import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.module.main.R;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.module.ModuleType;
/**
* @author congtaowang
@@ -80,7 +81,7 @@ public class PlaceholderFragmentProvider implements IMogoModuleProvider {
@Override
public int getType() {
- return TYPE_FRAGMENT;
+ return ModuleType.TYPE_CARD_FRAGMENT;
}
@Override
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalBaseTransformer.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalBaseTransformer.java
index 85d5de7933..329d66a2b4 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalBaseTransformer.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalBaseTransformer.java
@@ -5,6 +5,10 @@ import android.view.View;
import androidx.viewpager.widget.ViewPager;
+
+/**
+ * Created by Nate on 2016/7/22.
+ */
public abstract class VerticalBaseTransformer implements ViewPager.PageTransformer {
/**
* Called each {@link #transformPage(View, float)}.
@@ -13,7 +17,7 @@ public abstract class VerticalBaseTransformer implements ViewPager.PageTransform
* @param position Position of page relative to the current front-and-center position of the pager. 0 is front and
* center. 1 is one full page position to the right, and -1 is one page position to the left.
*/
- protected abstract void onTransform( View page, float position );
+ protected abstract void onTransform(View page, float position);
/**
* Apply a property transformation to the given page. For most use cases, this method should not be overridden.
@@ -24,10 +28,10 @@ public abstract class VerticalBaseTransformer implements ViewPager.PageTransform
* center. 1 is one full page position to the right, and -1 is one page position to the left.
*/
@Override
- public void transformPage( View page, float position ) {
- onPreTransform( page, position );
- onTransform( page, position );
- onPostTransform( page, position );
+ public void transformPage(View page, float position) {
+ onPreTransform(page, position);
+ onTransform(page, position);
+ onPostTransform(page, position);
}
/**
@@ -61,24 +65,24 @@ public abstract class VerticalBaseTransformer implements ViewPager.PageTransform
* @param position Position of page relative to the current front-and-center position of the pager. 0 is front and
* center. 1 is one full page position to the right, and -1 is one page position to the left.
*/
- protected void onPreTransform( View page, float position ) {
+ protected void onPreTransform(View page, float position) {
final float width = page.getWidth();
final float height = page.getHeight();
- page.setRotationX( 0 );
- page.setRotationY( 0 );
- page.setRotation( 0 );
- page.setScaleX( 1 );
- page.setScaleY( 1 );
- page.setPivotX( 0 );
- page.setPivotY( 0 );
- page.setTranslationX( 0 );
- page.setTranslationY( isPagingEnabled() ? 0f : -height * position );
+ page.setRotationX(0);
+ page.setRotationY(0);
+ page.setRotation(0);
+ page.setScaleX(1);
+ page.setScaleY(1);
+ page.setPivotX(0);
+ page.setPivotY(0);
+ page.setTranslationX(0);
+ page.setTranslationY(isPagingEnabled() ? 0f : -height * position);
- if ( hideOffscreenPages() ) {
- page.setAlpha( position <= -1f || position >= 1f ? 0f : 1f );
+ if (hideOffscreenPages()) {
+ page.setAlpha(position <= -1f || position >= 1f ? 0f : 1f);
} else {
- page.setAlpha( 1f );
+ page.setAlpha(1f);
}
/*final float normalizedposition = Math.abs(Math.abs(position) - 1);
@@ -92,7 +96,7 @@ public abstract class VerticalBaseTransformer implements ViewPager.PageTransform
* @param position Position of page relative to the current front-and-center position of the pager. 0 is front and
* center. 1 is one full page position to the right, and -1 is one page position to the left.
*/
- protected void onPostTransform( View page, float position ) {
+ protected void onPostTransform(View page, float position) {
}
/**
@@ -102,7 +106,7 @@ public abstract class VerticalBaseTransformer implements ViewPager.PageTransform
* @param min
* @return
*/
- protected static final float min( float val, float min ) {
+ protected static final float min(float val, float min) {
return val < min ? min : val;
}
}
\ No newline at end of file
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java
index 9184d7b65b..44cde6ab7f 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java
@@ -9,8 +9,8 @@ import com.mogo.utils.WindowUtils;
public class VerticalStackTransformer extends VerticalBaseTransformer {
private Context context;
- private int spaceBetweenFirAndSecWith = 10 * 2;//第一张卡片和第二张卡片宽度差 dp单位
- private int spaceBetweenFirAndSecHeight = 10;//第一张卡片和第二张卡片高度差 dp单位
+ private int spaceBetweenFirAndSecWith = 5 * 2;//第一张卡片和第二张卡片宽度差 dp单位
+ private int spaceBetweenFirAndSecHeight = 5;//第一张卡片和第二张卡片高度差 dp单位
public VerticalStackTransformer( Context context ) {
this.context = context;
@@ -26,10 +26,12 @@ public class VerticalStackTransformer extends VerticalBaseTransformer {
protected void onTransform( View page, float position ) {
if ( position <= 0.0f ) {
page.setAlpha( 1.0f );
+ Log.e( "onTransform", "position <= 0.0f ==>" + position );
page.setTranslationY( 0f );
//控制停止滑动切换的时候,只有最上面的一张卡片可以点击
page.setClickable( true );
- } else if ( position <= 3.0f ) {
+ } else {
+ Log.e( "onTransform", "position <= 3.0f ==>" + position );
float scale = ( float ) ( page.getWidth() - WindowUtils.dip2px( context, spaceBetweenFirAndSecWith * position ) ) / ( float ) ( page.getWidth() );
//控制下面卡片的可见度
page.setAlpha( 1.0f );
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java
new file mode 100644
index 0000000000..129523cbbb
--- /dev/null
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java
@@ -0,0 +1,40 @@
+package com.mogo.module.main.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.text.TextUtils;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-02
+ *
+ * 广播接收者
+ *
+ * {@link Intent#ACTION_POWER_CONNECTED}
+ * {@link Intent#ACTION_POWER_DISCONNECTED}
+ */
+public class MogoReceiver extends BroadcastReceiver {
+
+ public static void register( Context context ) {
+ if ( context == null ) {
+ return;
+ }
+ IntentFilter inputFilter = new IntentFilter();
+ inputFilter.addAction( Intent.ACTION_POWER_CONNECTED );
+ inputFilter.addAction( Intent.ACTION_POWER_DISCONNECTED );
+ context.getApplicationContext().registerReceiver( new MogoReceiver(), inputFilter );
+ }
+
+ @Override
+ public void onReceive( Context context, Intent intent ) {
+ final String action = intent.getAction();
+ if ( TextUtils.equals( action, Intent.ACTION_POWER_CONNECTED ) ) {
+
+ }
+ if ( TextUtils.equals( action, Intent.ACTION_POWER_DISCONNECTED ) ) {
+
+ }
+ }
+}
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index dc896856ae..467245a03b 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -3,26 +3,28 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="#0C0C0C"
android:orientation="vertical">
+ android:layout_height="match_parent"
+ android:layout_marginLeft="35dp"
+ android:layout_marginTop="5dp">
+
@@ -30,17 +32,16 @@
android:id="@+id/module_main_id_cards_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginBottom="50dp"
- android:padding="10dp" />
-
+ android:layout_marginBottom="90dp"
+ android:clipToPadding="false"
+ android:paddingBottom="10dp" />
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
index b38f9e816e..cd67239afe 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java
@@ -102,7 +102,7 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
//设置拖拽手势是否可用。
uiSettings.setScrollGesturesEnabled( true );
//设置倾斜手势是否可用。
- uiSettings.setTiltGesturesEnabled( false );
+ uiSettings.setTiltGesturesEnabled( true );
//设置缩放按钮是否可见。
uiSettings.setZoomControlsEnabled( false );
//设置双指缩放手势是否可用。
diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java
index a0024fd2e3..c35cfb054a 100644
--- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java
+++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java
@@ -14,6 +14,7 @@ import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.module.ModuleType;
/**
* @author congtaowang
@@ -46,7 +47,7 @@ public class MapFragmentProvider implements IMogoModuleProvider {
@Override
public int getType() {
- return IMogoModuleProvider.TYPE_FRAGMENT;
+ return ModuleType.TYPE_MAP;
}
diff --git a/demo/demo-module-map2/.gitignore b/modules/mogo-module-service/.gitignore
similarity index 100%
rename from demo/demo-module-map2/.gitignore
rename to modules/mogo-module-service/.gitignore
diff --git a/demo/demo-module-map/build.gradle b/modules/mogo-module-service/build.gradle
similarity index 74%
rename from demo/demo-module-map/build.gradle
rename to modules/mogo-module-service/build.gradle
index 4cdc37ad48..4c8893f572 100644
--- a/demo/demo-module-map/build.gradle
+++ b/modules/mogo-module-service/build.gradle
@@ -10,6 +10,7 @@ android {
versionCode Integer.valueOf(VERSION_CODE)
versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
@@ -18,6 +19,7 @@ android {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
+
}
buildTypes {
@@ -32,22 +34,27 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- if (Boolean.valueOf(RELEASE)) {
- implementation rootProject.ext.dependencies.mogomap
- implementation rootProject.ext.dependencies.mogoutils
- implementation rootProject.ext.dependencies.mogocommons
- implementation rootProject.ext.dependencies.mogoserviceapi
- implementation rootProject.ext.dependencies.modulecommon
- } else {
- implementation project(":libraries:mogo-map")
- implementation project(":foudations:mogo-utils")
- api project(":foudations:mogo-commons")
- implementation project(':services:mogo-service-api')
- implementation project(':modules:mogo-module-common')
- }
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ implementation rootProject.ext.dependencies.rxjava
+ implementation rootProject.ext.dependencies.rxandroid
+ if (Boolean.valueOf(RELEASE)) {
+ api rootProject.ext.dependencies.mogomap
+ api rootProject.ext.dependencies.mogomapapi
+ api rootProject.ext.dependencies.mogoutils
+ api rootProject.ext.dependencies.mogocommons
+ api rootProject.ext.dependencies.mogoserviceapi
+ implementation rootProject.ext.dependencies.modulecommon
+ } else {
+ api project(":libraries:mogo-map")
+ api project(":libraries:mogo-map-api")
+ api project(":foudations:mogo-utils")
+ api project(":foudations:mogo-commons")
+ api project(':services:mogo-service-api')
+ implementation project(':modules:mogo-module-common')
+ }
}
+
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/demo/demo-module-map2/consumer-rules.pro b/modules/mogo-module-service/consumer-rules.pro
similarity index 100%
rename from demo/demo-module-map2/consumer-rules.pro
rename to modules/mogo-module-service/consumer-rules.pro
diff --git a/demo/demo-module-map2/gradle.properties b/modules/mogo-module-service/gradle.properties
similarity index 54%
rename from demo/demo-module-map2/gradle.properties
rename to modules/mogo-module-service/gradle.properties
index 89b778f5d8..b4f157aabf 100644
--- a/demo/demo-module-map2/gradle.properties
+++ b/modules/mogo-module-service/gradle.properties
@@ -1,3 +1,3 @@
GROUP=com.mogo.module
-POM_ARTIFACT_ID=module-demo2
+POM_ARTIFACT_ID=module-service
VERSION_CODE=1
diff --git a/demo/demo-module-map2/proguard-rules.pro b/modules/mogo-module-service/proguard-rules.pro
similarity index 100%
rename from demo/demo-module-map2/proguard-rules.pro
rename to modules/mogo-module-service/proguard-rules.pro
diff --git a/demo/mogo-module-tanlu/src/main/AndroidManifest.xml b/modules/mogo-module-service/src/main/AndroidManifest.xml
similarity index 62%
rename from demo/mogo-module-tanlu/src/main/AndroidManifest.xml
rename to modules/mogo-module-service/src/main/AndroidManifest.xml
index 0c407d146c..3ef5034430 100644
--- a/demo/mogo-module-tanlu/src/main/AndroidManifest.xml
+++ b/modules/mogo-module-service/src/main/AndroidManifest.xml
@@ -1,2 +1,2 @@
+ package="com.mogo.module.service" />
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/AutoRefreshStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/AutoRefreshStrategy.java
new file mode 100644
index 0000000000..76cee2058f
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/AutoRefreshStrategy.java
@@ -0,0 +1,48 @@
+package com.mogo.module.service;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 自动刷新策略
+ */
+public class AutoRefreshStrategy {
+
+ public static final long ONE_MINUTE = 5 * 1_000L;
+
+ /**
+ * 距离(米)
+ */
+ private int distance = 2_000;
+
+ /**
+ * 时间间距(s)
+ */
+ private long interval = 3 * ONE_MINUTE;
+
+ /**
+ * 用户打断后的延时(s)
+ */
+ private long interruptInterval = 1 * ONE_MINUTE;
+
+ /**
+ * 距离(米)
+ */
+ public int getDistance() {
+ return distance;
+ }
+
+ /**
+ * 时间间距(s)
+ */
+ public long getInterval() {
+ return interval;
+ }
+
+ /**
+ * 用户打断后的延时
+ */
+ public long getInterruptInterval() {
+ return interruptInterval;
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/CustomRefreshStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/CustomRefreshStrategy.java
new file mode 100644
index 0000000000..90005b3c5d
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/CustomRefreshStrategy.java
@@ -0,0 +1,19 @@
+package com.mogo.module.service;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 手动刷新策略
+ */
+public class CustomRefreshStrategy {
+
+ /**
+ * 缩小倍数
+ */
+ private float zoomOutLevel = 2;
+
+ public float getZoomOutLevel() {
+ return zoomOutLevel;
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
new file mode 100644
index 0000000000..4f786c1ddd
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
@@ -0,0 +1,431 @@
+package com.mogo.module.service;
+
+
+import android.content.Context;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.view.MotionEvent;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.map.MogoLatLng;
+import com.mogo.map.listener.IMogoMapListener;
+import com.mogo.map.location.IMogoLocationListener;
+import com.mogo.map.location.MogoLocation;
+import com.mogo.map.marker.IMogoMarker;
+import com.mogo.map.marker.IMogoMarkerManager;
+import com.mogo.map.marker.MogoMarkerOptions;
+import com.mogo.map.model.MogoPoi;
+import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.map.navi.MogoNaviInfo;
+import com.mogo.map.uicontroller.EnumMapUI;
+import com.mogo.map.uicontroller.IMogoMapUIController;
+import com.mogo.module.service.network.RefreshCallback;
+import com.mogo.module.service.network.RefreshModel;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.map.IMogoMapService;
+import com.mogo.service.module.IMogoModuleLifecycle;
+import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.module.ModuleType;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.logger.Logger;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 数据刷新策略
+ */
+@Route( path = ServiceConst.PATH_REFRESH_STRATEGY )
+public class MogoServiceProvider implements IMogoModuleProvider,
+ IMogoMapListener,
+ IMogoLocationListener,
+ IMogoNaviListener,
+ IMogoStatusChangedListener {
+
+ private static final String TAG = "MogoRefreshStrategyProvider";
+
+ /**
+ * 自动刷新策略
+ */
+ private AutoRefreshStrategy mAutoRefreshStrategy = new AutoRefreshStrategy();
+ private MogoLatLng mLastAutoRefreshLocation = null;
+ private long mLastRefreshTime = 0;
+
+ private IMogoMarkerManager mMarkerManager;
+ private IMogoMapUIController mUiController;
+
+ /**
+ * 是否已计算出地图显示状态
+ */
+ private boolean mIsMapStatusOk = false;
+
+ /**
+ * 地图显示是横屏还是竖屏:根据地图右上角和左下角坐标计算
+ */
+ boolean mIsVertical = false;
+
+ /**
+ * 手动刷新策略
+ */
+ private CustomRefreshStrategy mCustomRefreshStrategy = new CustomRefreshStrategy();
+ private float mLastZoomLevel = 0;
+ private RefreshModel mRefreshModel;
+ private long mRefreshRemainingTime = Long.MAX_VALUE;
+ // 上次手动操作的中心点坐标
+ private MogoLatLng mLastCustomRefreshCenterLocation;
+
+ private IMogoMapService mMogoMapService;
+ private IMogoMarker mCameraCenterMarker = null;
+ private IMogoStatusManager mStatusManager;
+
+ /**
+ * 地图视图初始化
+ */
+ private boolean mIsCameraInited = true;
+
+ private Handler mHandler = new Handler( Looper.getMainLooper() ) {
+ @Override
+ public void handleMessage( @NonNull Message msg ) {
+ super.handleMessage( msg );
+ switch ( msg.what ) {
+ case ServiceConst.MSG_TYPE_REFRESH_DECREASE:
+ mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL;
+ if ( mRefreshRemainingTime == 0 ) {
+ notifyRefreshData( mAutoRefreshCallback );
+ } else {
+ mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL );
+ }
+ break;
+ }
+ }
+ };
+ private Context mContext;
+
+ /**
+ * 地图视图西南角坐标
+ */
+ private MogoLatLng mCameraSouthWestPosition;
+
+ /**
+ * 地图视图东北角坐标
+ */
+ private MogoLatLng mCameraNorthEastPosition;
+
+ /**
+ * 手动刷新回调
+ */
+ private RefreshCallback mCustomRefreshCallback = new RefreshCallback() {
+ @Override
+ public void onSuccess() {
+ // 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true );
+ mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, false, false );
+ }
+
+ @Override
+ public void onFail() {
+
+ }
+ };
+
+ /**
+ * 自动刷新回调
+ */
+ private RefreshCallback mAutoRefreshCallback = new RefreshCallback() {
+ @Override
+ public void onSuccess() {
+ invokeAutoRefreshStrategy();
+ }
+
+ @Override
+ public void onFail() {
+ invokeAutoRefreshStrategy();
+ }
+
+ private void invokeAutoRefreshStrategy() {
+ mRefreshRemainingTime = mAutoRefreshStrategy.getInterval();
+ mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE );
+ mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_TYPE_REFRESH_DECREASE, ServiceConst.DECREASE_INTERVAL );
+ }
+ };
+
+ @Override
+ public final Fragment createFragment( Context context, Bundle data ) {
+ return null;
+ }
+
+ @Override
+ public final View createView( Context context ) {
+ return null;
+ }
+
+ @Override
+ public final IMogoModuleLifecycle getCardLifecycle() {
+ return null;
+ }
+
+ @Override
+ public IMogoMapListener getMapListener() {
+ return this;
+ }
+
+ @Override
+ public int getType() {
+ return ModuleType.TYPE_SERVICE;
+ }
+
+ @Override
+ public IMogoNaviListener getNaviListener() {
+ return this;
+ }
+
+ @Override
+ public IMogoLocationListener getLocationListener() {
+ return this;
+ }
+
+ @NonNull
+ @Override
+ public String getModuleName() {
+ return ServiceConst.TYPE;
+ }
+
+ @Override
+ public void init( Context context ) {
+ mContext = context;
+ mRefreshModel = new RefreshModel( context );
+ mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
+ mMarkerManager = mMogoMapService.getMarkerManager( context );
+ mUiController = mMogoMapService.getMapUIController();
+ mStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( context );
+ mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, this );
+ }
+
+ @Override
+ public void onMapLoaded() {
+ refreshCameraPosition();
+ }
+
+ private void initMapStatus() {
+ if ( mIsMapStatusOk ) {
+ return;
+ }
+ try {
+ float width = getMapCameraFactWidth();
+ float height = getMapCameraFactHeight();
+ mIsVertical = width < height;
+ Logger.i( TAG, "map status is vertical : " + mIsVertical );
+ mIsMapStatusOk = true;
+ } catch ( Exception e ) {
+
+ }
+ }
+
+ /**
+ * 地图视图对应的实际宽度
+ *
+ * @return
+ */
+ private float getMapCameraFactWidth() {
+ return Utils.calculateLineDistance( mCameraNorthEastPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
+ }
+
+ /**
+ * 地图视图对应的实际高度
+ *
+ * @return
+ */
+ private float getMapCameraFactHeight() {
+ return Utils.calculateLineDistance( mCameraSouthWestPosition, new MogoLatLng( mCameraNorthEastPosition.lat, mCameraSouthWestPosition.lng ) );
+ }
+
+ /**
+ * 刷新视图范围坐标
+ */
+ private void refreshCameraPosition() {
+ mCameraSouthWestPosition = mUiController.getCameraSouthWestPosition();
+ mCameraNorthEastPosition = mUiController.getCameraNorthEastPosition();
+
+ initMapStatus();
+
+ if ( mIsVertical ) {
+ float width = getMapCameraFactWidth();
+ Logger.i( TAG, "current zoom level width: %f m", width );
+ } else {
+ float height = getMapCameraFactHeight();
+ Logger.i( TAG, "current zoom level height: %f m", height );
+ }
+ }
+
+ @Override
+ public void onTouch( MotionEvent motionEvent ) {
+ switch ( motionEvent.getActionMasked() ) {
+ case MotionEvent.ACTION_DOWN:
+ if ( mLastZoomLevel == 0 ) {
+ mLastZoomLevel = mUiController.getZoomLevel();
+ Logger.i( TAG, "初始化缩放级别 为:%f", mLastZoomLevel );
+ }
+ break;
+ case MotionEvent.ACTION_UP:
+ break;
+ }
+ }
+
+ private void stopAutoRefreshStrategy() {
+ mHandler.removeMessages( ServiceConst.MSG_TYPE_REFRESH_DECREASE );
+ }
+
+ @Override
+ public void onPOIClick( MogoPoi poi ) {
+
+ }
+
+ @Override
+ public void onMapClick( MogoLatLng latLng ) {
+
+ }
+
+ @Override
+ public void onLockMap( boolean isLock ) {
+
+ }
+
+ @Override
+ public void onMapModeChanged( EnumMapUI ui ) {
+
+ }
+
+ @Override
+ public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) {
+
+
+ if ( mIsCameraInited ) {
+ mLastCustomRefreshCenterLocation = latLng;
+ mIsCameraInited = false;
+ return;
+ }
+
+ if ( mCameraCenterMarker == null ) {
+ mCameraCenterMarker = mMarkerManager.addMarker( ServiceConst.TYPE,
+ new MogoMarkerOptions()
+ .icon( BitmapFactory.decodeResource( mContext.getResources(), R.drawable.ic_search_poi_location ) )
+ .latitude( latLng.lat )
+ .longitude( latLng.lng )
+ .owner( ServiceConst.TYPE )
+ );
+ } else {
+ mCameraCenterMarker.setPosition( latLng.lat, latLng.lng );
+ }
+
+ if ( mLastZoomLevel != zoom ) {
+ refreshCameraPosition();
+ }
+
+ // 手动刷新触发
+ if ( mLastZoomLevel - zoom > mCustomRefreshStrategy.getZoomOutLevel() ) {
+ // 缩放级别缩小
+ notifyRefreshData( mCustomRefreshCallback );
+ mLastCustomRefreshCenterLocation = latLng;
+ mLastZoomLevel = zoom;
+ } else if ( mLastZoomLevel == zoom ) {
+ // 手动平移
+ if ( invokeRefreshWhenTranslationByUser( latLng ) ) {
+ notifyRefreshData( mCustomRefreshCallback );
+ mLastCustomRefreshCenterLocation = latLng;
+ }
+ }
+ Logger.d( TAG, "current map status: %s, zoom = %f, tilt = %f, bearing = %f", latLng, zoom, tilt, bearing );
+ }
+
+ /**
+ * 平移地图刷新策略
+ *
+ * @return
+ */
+ private boolean invokeRefreshWhenTranslationByUser( MogoLatLng latLng ) {
+ try {
+ float factor = 0.0f;
+ if ( mIsVertical ) {
+ factor = getMapCameraFactWidth();
+ } else {
+ factor = getMapCameraFactHeight();
+ }
+ if ( factor == 0.0f ) {
+ return false;
+ }
+ float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation );
+ return distance > factor;
+ } catch ( Exception e ) {
+ Logger.w( TAG, "warming. ", e );
+ return false;
+ }
+ }
+
+ @Override
+ public void onLocationChanged( MogoLocation location ) {
+ if ( location == null ) {
+ return;
+ }
+ // 自动刷新触发
+ if ( mLastAutoRefreshLocation == null ) {
+ mLastAutoRefreshLocation = new MogoLatLng( location.getLatitude(), location.getLongitude() );
+ notifyRefreshData( mAutoRefreshCallback );
+ } else {
+ float distance = Utils.calculateLineDistance( mLastAutoRefreshLocation, new MogoLatLng( location.getLatitude(), location.getLongitude() ) );
+ if ( distance > mAutoRefreshStrategy.getDistance() ) {
+ notifyRefreshData( mAutoRefreshCallback );
+ }
+ }
+ }
+
+ /**
+ * 刷新数据
+ */
+ private void notifyRefreshData( RefreshCallback callback ) {
+ Logger.d( TAG, mAutoRefreshCallback == callback ? "触发自动刷新" : "触发手动刷新" );
+ mRefreshModel.refreshData( callback );
+ }
+
+ @Override
+ public void onInitNaviFailure() {
+
+ }
+
+ @Override
+ public void onInitNaviSuccess() {
+
+ }
+
+ @Override
+ public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
+
+ }
+
+ @Override
+ public void onStartNavi() {
+
+ }
+
+ @Override
+ public void onStopNavi() {
+
+ }
+
+ @Override
+ public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
+ if ( descriptor == StatusDescriptor.USER_INTERACTED && isTrue ) {
+ Logger.i( TAG, "用户状态改变,自动刷新时间延时" );
+ mRefreshRemainingTime += mAutoRefreshStrategy.getInterruptInterval();
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java
new file mode 100644
index 0000000000..0d7d74b0b7
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java
@@ -0,0 +1,29 @@
+package com.mogo.module.service;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 描述
+ */
+public class ServiceConst {
+
+ /**
+ * 类型
+ */
+ public static final String TYPE = "STRATEGY_REFRESH";
+
+ /**
+ * 刷新策略模块地址
+ */
+ public static final String PATH_REFRESH_STRATEGY = "/strategy/refresh";
+
+ /**
+ * 倒计时消息
+ */
+ public static final int MSG_TYPE_REFRESH_DECREASE = 0x100;
+ /**
+ * 倒计时间隔
+ */
+ public static final int DECREASE_INTERVAL = 1_000;
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java
new file mode 100644
index 0000000000..cb47981c3f
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/Utils.java
@@ -0,0 +1,51 @@
+package com.mogo.module.service;
+
+import com.amap.api.maps.AMapException;
+import com.amap.api.maps.model.LatLng;
+import com.mogo.map.MogoLatLng;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 描述
+ */
+public class Utils {
+
+ public static float calculateLineDistance( MogoLatLng point1, MogoLatLng point2 ) {
+ if ( point1 != null && point2 != null ) {
+ try {
+ double var2 = point1.lng;
+ double var4 = point1.lat;
+ double var6 = point2.lng;
+ double var8 = point2.lat;
+ var2 *= 0.01745329251994329D;
+ var4 *= 0.01745329251994329D;
+ var6 *= 0.01745329251994329D;
+ var8 *= 0.01745329251994329D;
+ double var10 = Math.sin( var2 );
+ double var12 = Math.sin( var4 );
+ double var14 = Math.cos( var2 );
+ double var16 = Math.cos( var4 );
+ double var18 = Math.sin( var6 );
+ double var20 = Math.sin( var8 );
+ double var22 = Math.cos( var6 );
+ double var24 = Math.cos( var8 );
+ double[] var28 = new double[3];
+ double[] var29 = new double[3];
+ var28[0] = var16 * var14;
+ var28[1] = var16 * var10;
+ var28[2] = var12;
+ var29[0] = var24 * var22;
+ var29[1] = var24 * var18;
+ var29[2] = var20;
+ return ( float ) ( Math.asin( Math.sqrt( ( var28[0] - var29[0] ) * ( var28[0] - var29[0] ) + ( var28[1] - var29[1] ) * ( var28[1] - var29[1] ) + ( var28[2] - var29[2] ) * ( var28[2] - var29[2] ) ) / 2.0D ) * 1.27420015798544E7D );
+ } catch ( Throwable var26 ) {
+ var26.printStackTrace();
+ return 0.0F;
+ }
+ } else {
+ return 0.0F;
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java
new file mode 100644
index 0000000000..875fa04b98
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshApiService.java
@@ -0,0 +1,22 @@
+package com.mogo.module.service.network;
+
+import com.mogo.commons.data.BaseData;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import io.reactivex.Single;
+import retrofit2.http.GET;
+import retrofit2.http.QueryMap;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 接口描述
+ */
+public interface RefreshApiService {
+
+ @GET( "" )
+ Observable< BaseData > refreshData( @QueryMap Map< String, Object > params );
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java
new file mode 100644
index 0000000000..64575bb66c
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshCallback.java
@@ -0,0 +1,14 @@
+package com.mogo.module.service.network;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 刷新回调
+ */
+public interface RefreshCallback {
+
+ void onSuccess();
+
+ void onFail();
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java
new file mode 100644
index 0000000000..5fdbce5600
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java
@@ -0,0 +1,65 @@
+package com.mogo.module.service.network;
+
+import android.content.Context;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.commons.data.BaseData;
+import com.mogo.commons.network.ParamsProvider;
+import com.mogo.commons.network.SubscribeImpl;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.network.IMogoNetwork;
+import com.mogo.utils.network.RequestOptions;
+
+import java.util.Map;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 刷新数据
+ */
+public class RefreshModel {
+
+ private final Context mContext;
+ private RefreshApiService mRefreshApiService;
+
+ public RefreshModel( Context context ) {
+ this.mContext = context;
+ IMogoNetwork network = ( IMogoNetwork ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_NETWORK ).navigation( context );
+ this.mRefreshApiService = network.create( RefreshApiService.class, "http://www.baidu.com/" );
+ }
+
+ public void refreshData( final RefreshCallback callback ) {
+ if ( callback != null ) {
+ callback.onSuccess();
+ return;
+ }
+ if ( mRefreshApiService != null ) {
+ final Map< String, Object > params = new ParamsProvider.Builder( mContext ).build();
+ mRefreshApiService.refreshData( params )
+ .subscribeOn( Schedulers.io() )
+ .observeOn( AndroidSchedulers.mainThread() )
+ .subscribe( new SubscribeImpl< BaseData >( RequestOptions.create( mContext ) ) {
+ @Override
+ public void onSuccess( BaseData o ) {
+ super.onSuccess( o );
+ if ( callback != null ) {
+ callback.onSuccess();
+ }
+ }
+
+ @Override
+ public void onError( String message, int code ) {
+ super.onError( message, code );
+ if ( callback != null ) {
+ callback.onFail();
+ }
+ }
+ } );
+ }
+ }
+}
diff --git a/modules/mogo-module-service/src/main/res/values/strings.xml b/modules/mogo-module-service/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..27efab9b88
--- /dev/null
+++ b/modules/mogo-module-service/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ mogo-module-service
+
diff --git a/demo/mogo-module-tanlu/.gitignore b/modules/mogo-module-tanlu/.gitignore
similarity index 100%
rename from demo/mogo-module-tanlu/.gitignore
rename to modules/mogo-module-tanlu/.gitignore
diff --git a/demo/mogo-module-tanlu/build.gradle b/modules/mogo-module-tanlu/build.gradle
similarity index 74%
rename from demo/mogo-module-tanlu/build.gradle
rename to modules/mogo-module-tanlu/build.gradle
index 568e7ff94e..4110051bd6 100644
--- a/demo/mogo-module-tanlu/build.gradle
+++ b/modules/mogo-module-tanlu/build.gradle
@@ -1,4 +1,6 @@
apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-android'
apply plugin: 'com.alibaba.arouter'
android {
@@ -30,6 +32,13 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.core:core-ktx:1.0.2'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test:runner:1.2.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogomap
@@ -48,6 +57,14 @@ dependencies {
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
annotationProcessor rootProject.ext.dependencies.aroutercompiler
+
+ implementation 'com.shuyu:gsyVideoPlayer-armv7a:7.1.1'
+ implementation 'com.shuyu:gsyVideoPlayer-arm64:7.1.1'
+ implementation 'com.shuyu:gsyVideoPlayer-java:7.1.1'
+
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
+repositories {
+ mavenCentral()
+}
diff --git a/demo/mogo-module-tanlu/consumer-rules.pro b/modules/mogo-module-tanlu/consumer-rules.pro
similarity index 100%
rename from demo/mogo-module-tanlu/consumer-rules.pro
rename to modules/mogo-module-tanlu/consumer-rules.pro
diff --git a/demo/mogo-module-tanlu/gradle.properties b/modules/mogo-module-tanlu/gradle.properties
similarity index 100%
rename from demo/mogo-module-tanlu/gradle.properties
rename to modules/mogo-module-tanlu/gradle.properties
diff --git a/demo/mogo-module-tanlu/proguard-rules.pro b/modules/mogo-module-tanlu/proguard-rules.pro
similarity index 100%
rename from demo/mogo-module-tanlu/proguard-rules.pro
rename to modules/mogo-module-tanlu/proguard-rules.pro
diff --git a/demo/mogo-module-tanlu/src/androidTest/java/com/zhidao/tanlu/ExampleInstrumentedTest.java b/modules/mogo-module-tanlu/src/androidTest/java/com/zhidao/tanlu/ExampleInstrumentedTest.java
similarity index 100%
rename from demo/mogo-module-tanlu/src/androidTest/java/com/zhidao/tanlu/ExampleInstrumentedTest.java
rename to modules/mogo-module-tanlu/src/androidTest/java/com/zhidao/tanlu/ExampleInstrumentedTest.java
diff --git a/modules/mogo-module-tanlu/src/main/AndroidManifest.xml b/modules/mogo-module-tanlu/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..c910375626
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/AndroidManifest.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/constant/Const.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/constant/Const.kt
new file mode 100644
index 0000000000..7dc93f919b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/constant/Const.kt
@@ -0,0 +1,8 @@
+package com.mogo.tanlu.constant
+
+const val REQUESTCODE_MAINACTIVITY = 0
+const val REQUESTCODE_MEDIAACTIVITY = 1
+
+//EXTRA_STATE
+const val AUTO_NAVI_START = 8 //开始导航
+const val AUTO_NAVI_END = 9 //结束导航
diff --git a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluConstants.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/constant/TanluConstants.java
similarity index 81%
rename from demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluConstants.java
rename to modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/constant/TanluConstants.java
index 8eafc95191..a58ccebf23 100644
--- a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluConstants.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/constant/TanluConstants.java
@@ -1,4 +1,4 @@
-package com.mogo.tanlu;
+package com.mogo.tanlu.constant;
/**
* @author congtaowang
@@ -9,4 +9,5 @@ package com.mogo.tanlu;
public class TanluConstants {
public static final String TAG = "/tanlu/ui";
+
}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java
new file mode 100644
index 0000000000..1b4781b8f0
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java
@@ -0,0 +1,262 @@
+package com.mogo.tanlu.fragment;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.commons.mvp.IView;
+import com.mogo.commons.mvp.MvpFragment;
+import com.mogo.commons.mvp.Presenter;
+import com.mogo.map.MogoLatLng;
+import com.mogo.map.listener.IMogoMapListener;
+import com.mogo.map.location.IMogoLocationListener;
+import com.mogo.map.location.MogoLocation;
+import com.mogo.map.marker.IMogoMarker;
+import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.map.model.MogoPoi;
+import com.mogo.map.search.geo.MogoPoiItem;
+import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
+import com.mogo.map.search.poisearch.MogoPoiResult;
+import com.mogo.map.uicontroller.EnumMapUI;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.imageloader.IMogoImageloader;
+import com.mogo.service.module.IMogoModuleLifecycle;
+import com.mogo.tanlu.R;
+import com.mogo.tanlu.video.FullMediaActivity;
+import com.mogo.tanlu.video.SimpleCoverVideoPlayer;
+import com.mogo.tanlu.view.AutoZoomInImageView;
+import com.mogo.utils.TipToast;
+import com.mogo.utils.logger.Logger;
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
+
+import static com.mogo.tanlu.video.VideoInitKt.initVideo;
+
+/**
+ * @author lixiaopeng
+ * @description 探路卡片
+ * @since 2020-01-02
+ */
+public class TanluCardViewFragment extends MvpFragment>
+ implements IView,
+ IMogoMarkerClickListener,
+ IMogoModuleLifecycle,
+ IMogoMapListener,
+ IMogoPoiSearchListener,
+ IMogoLocationListener,
+ View.OnClickListener {
+
+ private static final String TAG = "liyz";
+
+ //map
+ private IMogoMarker mPoiMarker;
+ private int position = -1;
+
+ //media
+ private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder();
+ // private String videoUrl = "";
+ private String videoUrl = "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8";
+ private String imageUrl = "https://oimagec4.ydstatic.com/image?id=-5397300958976572132&product=adpublish&w=520&h=347";
+ SimpleCoverVideoPlayer simpleCoverVideoPlayer;
+ AutoZoomInImageView autoZoomInImageView;
+ private IMogoImageloader mogoImageloader;
+ private TextView mPreviousTv;
+ private TextView mNextTv;
+
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.tanlu_item_main_media_recycler;
+ }
+
+ @Override
+ protected void initViews() {
+ initVideo();
+ position = getArguments().getInt("position");
+ simpleCoverVideoPlayer = findViewById(R.id.video_player_main);
+ autoZoomInImageView = findViewById(R.id.tanlu_photo_imageView);
+ mPreviousTv = findViewById(R.id.tv_previous_res);
+ mNextTv = findViewById(R.id.tv_next_res);
+ mPreviousTv.setOnClickListener(this);
+ mNextTv.setOnClickListener(this);
+
+ simpleCoverVideoPlayer.setVisibility(View.VISIBLE);
+ autoZoomInImageView.setVisibility(View.GONE);
+
+ //视频配置
+ gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG)
+ .build(simpleCoverVideoPlayer);
+// simpleCoverVideoPlayer.getStartButton().performClick();
+ simpleCoverVideoPlayer.getStartButton().setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Logger.d(TAG, "simpleCoverVideoPlayer onClick -------> ");
+ FullMediaActivity.Companion.launch(getActivity(), videoUrl, "image");
+ }
+ });
+
+ //图片配置
+ mogoImageloader = (IMogoImageloader) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_IMAGE_LOADER).navigation();
+
+ //当前定位信息
+ TanluServiceHandler.getPoiSearch().setPoiSearchListener(this);
+// mLocation = TanluServiceHandler.getLocationClient().getLastKnowLocation();
+
+ TanluServiceHandler.getLocationClient().addLocationListener(new IMogoLocationListener() {
+ @Override
+ public void onLocationChanged(MogoLocation location) {
+// mLocation = location;
+ Logger.d(TAG, "demo模块定位,定位间隔4s");
+ }
+ });
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ getViewLifecycleOwner().getLifecycle().addObserver(mPresenter);
+ }
+
+
+ /**
+ * TODO
+ *
+ * @param view
+ */
+ @Override
+ public void onClick(View view) {
+ int id = view.getId();
+ if (id == R.id.tv_previous_res) { //上一个
+ //判断是图片还是视频,第一个时,上一个不可点击
+ simpleCoverVideoPlayer.setVisibility(View.VISIBLE);
+ autoZoomInImageView.setVisibility(View.GONE);
+ //视频配置
+ gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG)
+ .build(simpleCoverVideoPlayer);
+
+ } else if (id == R.id.tv_next_res) { //下一个
+ //判断是图片还是视频,最后一个时,下一个不可点击
+ //图片显示
+ autoZoomInImageView.setVisibility(View.VISIBLE);
+ simpleCoverVideoPlayer.setVisibility(View.GONE);
+ mogoImageloader.displayImage(imageUrl, autoZoomInImageView);
+ }
+ }
+
+ /**
+ * marker点击事件 TODO
+ *
+ * @param marker
+ * @return
+ */
+ @Override
+ public boolean onMarkerClicked(IMogoMarker marker) {
+ marker.getObject();
+
+ return true;
+ }
+
+ @NonNull
+ @Override
+ protected Presenter createPresenter() {
+ return new Presenter(this) {
+ };
+ }
+
+ //TODO C位事件,如何获取数据,需要有默认数据
+ @Override
+ public void onPerform() {
+ Logger.d(TAG, "卡片2有效");
+
+ }
+
+ //TODO 离开C位事件
+ @Override
+ public void onDisable() {
+ Logger.d(TAG, "卡片2无效");
+ }
+
+ @Override
+ public void accOn() {
+
+ }
+
+ @Override
+ public void onMapLoaded() {
+ Logger.d(TAG, "地图加载事件");
+ }
+
+ @Override
+ public void onTouch(MotionEvent motionEvent) {
+// Logger.d( TAG, "地图触摸事件" );
+ }
+
+ @Override
+ public void onPOIClick(MogoPoi poi) {
+ if (poi != null) {
+ TipToast.shortTip(poi.getName());
+ }
+ TanluServiceHandler.getPoiSearch().searchPOIIdAsyn(poi.getPoiId());
+ }
+
+ @Override
+ public void onPoiSearched(MogoPoiResult result, int errorCode) {
+
+ }
+
+ @Override
+ public void onPoiItemSearched(MogoPoiItem item, int errorCode) {
+ if (item == null) {
+ return;
+ }
+ }
+
+
+ @Override
+ public void onLocationChanged(MogoLocation location) {
+// if (location.getErrCode() == 0) {
+// Logger.d(TAG, "onLocationChanged 当前位置 -->" + location.getAddress());
+// } else {
+// Logger.d(TAG, "onLocationChanged 定位失败 -->" + location.getErrInfo());
+// }
+ }
+
+
+ @Override
+ public void onMapClick(MogoLatLng latLng) {
+
+ }
+
+ @Override
+ public void onLockMap(boolean isLock) {
+
+ }
+
+ @Override
+ public void onMapModeChanged(EnumMapUI ui) {
+ Logger.d(TAG, ui.name());
+ }
+
+ @Override
+ public void onMapChanged(MogoLatLng location, float zoom, float tilt, float bearing) {
+
+ }
+
+ @Override
+ public void onDestroyView() {
+ Logger.w(TAG, "onDestroyView position=" + position);
+ super.onDestroyView();
+ getViewLifecycleOwner().getLifecycle().removeObserver(mPresenter);
+ TanluServiceHandler.getLocationClient().removeLocationListener(this);
+ }
+
+}
+
+
+
+
diff --git a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewProvider.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java
similarity index 88%
rename from demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewProvider.java
rename to modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java
index cff3d92473..8710a2a56f 100644
--- a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewProvider.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java
@@ -1,4 +1,4 @@
-package com.mogo.tanlu;
+package com.mogo.tanlu.fragment;
import android.content.Context;
import android.os.Bundle;
@@ -12,6 +12,8 @@ import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.service.module.ModuleType;
+import com.mogo.tanlu.constant.TanluConstants;
import com.mogo.utils.logger.Logger;
/**
@@ -24,7 +26,6 @@ import com.mogo.utils.logger.Logger;
public class TanluCardViewProvider implements IMogoModuleProvider {
private static final String TAG = "TanluCardViewProvider";
-
private TanluCardViewFragment fragment;
@Override
@@ -42,7 +43,7 @@ public class TanluCardViewProvider implements IMogoModuleProvider {
@Override
public String getModuleName() {
- return TanluConstants.TAG;
+ return "CARD_TYPE_ROAD_CODITION";
}
@Override
@@ -63,7 +64,7 @@ public class TanluCardViewProvider implements IMogoModuleProvider {
@Override
public int getType() {
- return IMogoModuleProvider.TYPE_FRAGMENT;
+ return ModuleType.TYPE_CARD_FRAGMENT;
}
@Override
diff --git a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluInfoWindowAdapter.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluInfoWindowAdapter.java
similarity index 98%
rename from demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluInfoWindowAdapter.java
rename to modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluInfoWindowAdapter.java
index ffa9a0d294..654903888b 100644
--- a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluInfoWindowAdapter.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluInfoWindowAdapter.java
@@ -1,4 +1,4 @@
-package com.mogo.tanlu;
+package com.mogo.tanlu.fragment;
import android.content.Context;
import android.graphics.Bitmap;
@@ -16,6 +16,7 @@ import com.mogo.map.search.geo.MogoPoiItem;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.imageloader.MogoImageView;
+import com.mogo.tanlu.R;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
import java.text.SimpleDateFormat;
diff --git a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluServiceHandler.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluServiceHandler.java
similarity index 98%
rename from demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluServiceHandler.java
rename to modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluServiceHandler.java
index cd7591ab19..1128cd336b 100644
--- a/demo/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluServiceHandler.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluServiceHandler.java
@@ -1,4 +1,4 @@
-package com.mogo.tanlu;
+package com.mogo.tanlu.fragment;
import android.content.Context;
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Information.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Information.java
new file mode 100644
index 0000000000..a65ca8b47f
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Information.java
@@ -0,0 +1,72 @@
+package com.mogo.tanlu.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.ArrayList;
+
+/**
+ * @author lixiaopeng
+ * @description 列表数据
+ * @since 2020-01-05
+ */
+public class Information implements Parcelable {
+ private int type;
+ private Double lon;
+ private Double lat;
+ private String addr;
+ private Long generateTime;
+ private String cityName;
+ private ArrayList items;
+ private int distance;
+ private String nickName;
+ private String headImgUrl;
+
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(this.type);
+ dest.writeValue(this.lon);
+ dest.writeValue(this.lat);
+ dest.writeString(this.addr);
+ dest.writeValue(this.generateTime);
+ dest.writeString(this.cityName);
+ dest.writeTypedList(this.items);
+ dest.writeInt(this.distance);
+ dest.writeString(this.nickName);
+ dest.writeString(this.headImgUrl);
+ }
+
+ public Information() {
+ }
+
+ protected Information(Parcel in) {
+ this.type = in.readInt();
+ this.lon = (Double) in.readValue(Double.class.getClassLoader());
+ this.lat = (Double) in.readValue(Double.class.getClassLoader());
+ this.addr = in.readString();
+ this.generateTime = (Long) in.readValue(Long.class.getClassLoader());
+ this.cityName = in.readString();
+ this.items = in.createTypedArrayList(Items.CREATOR);
+ this.distance = in.readInt();
+ this.nickName = in.readString();
+ this.headImgUrl = in.readString();
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public Information createFromParcel(Parcel source) {
+ return new Information(source);
+ }
+
+ @Override
+ public Information[] newArray(int size) {
+ return new Information[size];
+ }
+ };
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Informations.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Informations.kt
new file mode 100644
index 0000000000..6793083965
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Informations.kt
@@ -0,0 +1,67 @@
+package com.mogo.tanlu.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.amap.api.maps.model.LatLng
+
+fun Informations.toLatLng(): LatLng {
+ return LatLng(lat, lon)
+}
+
+class Informations(
+ var type: Int,
+ var lon: Double,
+ var lat: Double,
+ var addr: String?,
+ var generateTime: Long,
+ var cityName: String?,
+// var items: ArrayList,
+ var distance: Int,
+ var nickName: String?,
+ var headImgUrl: String?
+) :
+ Parcelable {
+
+ var position = 0
+
+ constructor(parcel: Parcel) : this(
+ parcel.readInt(),
+ parcel.readDouble(),
+ parcel.readDouble(),
+ parcel.readString(),
+ parcel.readLong(),
+ parcel.readString(),
+// parcel.readArrayList(Items::class.java.classLoader) as ArrayList,
+ parcel.readInt(),
+ parcel.readString(),
+ parcel.readString()
+ )
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ parcel.writeInt(type)
+ parcel.writeDouble(lon)
+ parcel.writeDouble(lat)
+ parcel.writeString(addr)
+ parcel.writeLong(generateTime)
+ parcel.writeString(cityName)
+// parcel.writeList(items)
+ parcel.writeInt(distance)
+ parcel.writeString(nickName)
+ parcel.writeString(headImgUrl)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): Informations {
+ return Informations(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Items.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Items.kt
new file mode 100644
index 0000000000..d7f75dc33e
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/Items.kt
@@ -0,0 +1,33 @@
+package com.mogo.tanlu.model
+
+import android.os.Parcel
+import android.os.Parcelable
+
+class Items(var url: String? = null, var thumbnail: String? = null) : Parcelable {
+ constructor(parcel: Parcel) : this(
+ parcel.readString(),
+ parcel.readString()
+ ) {
+ }
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ parcel.writeString(url)
+ parcel.writeString(thumbnail)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): Items {
+ return Items(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/global/GlobalSharedInformation.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/global/GlobalSharedInformation.kt
new file mode 100644
index 0000000000..31fe2a771b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/model/global/GlobalSharedInformation.kt
@@ -0,0 +1,15 @@
+package com.mogo.tanlu.model.global
+
+import com.mogo.tanlu.model.Information
+import java.util.ArrayList
+
+/**
+ * @author congtaowang
+ * @since 2019-12-02
+ *
+ * 共享的情报列表,避免在点击大屏查看视频时intent序列化造成的开销
+ */
+object GlobalSharedInformation {
+
+ var informationList: ArrayList? = null
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/util/DoubleCheckUtil.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/util/DoubleCheckUtil.kt
new file mode 100644
index 0000000000..b0582d8da9
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/util/DoubleCheckUtil.kt
@@ -0,0 +1,30 @@
+package com.mogo.tanlu.util
+
+
+
+const val SPACE_TIME = 1000
+var lastClickTime = 0L
+var viewId: Int = 0
+
+fun isDoubleClick(view: Int): Boolean {
+ val time = System.currentTimeMillis()
+ val timeD = time - lastClickTime
+ if (timeD < SPACE_TIME && viewId == view) {
+ return true
+ }
+ lastClickTime = time
+ viewId = view
+ return false
+}
+
+
+fun isDoubleClickTime(view: Int,spaceTime:Int): Boolean {
+ val time = System.currentTimeMillis()
+ val timeD = time - lastClickTime
+ if (timeD < spaceTime && viewId == view) {
+ return true
+ }
+ lastClickTime = time
+ viewId = view
+ return false
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/util/HideControl.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/util/HideControl.kt
new file mode 100644
index 0000000000..0307d5c53e
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/util/HideControl.kt
@@ -0,0 +1,71 @@
+package com.mogo.tanlu.util
+
+import android.os.Message
+import android.view.View
+import androidx.constraintlayout.widget.Group
+
+class HideControl {
+
+ companion object {
+ const val MSG_HIDE = 0x01
+ }
+
+ private var mHideHandler: HideHandler = HideHandler()
+ var view1: Group? = null
+ var view2: Group? = null
+
+ val hideRunable = Runnable {
+ mHideHandler.obtainMessage(MSG_HIDE).sendToTarget()
+ }
+
+ private inner class HideHandler : android.os.Handler() {
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ when (msg.what) {
+ MSG_HIDE -> {
+ view1?.let {
+ it.visibility = View.GONE
+ }
+ view2?.let {
+ it.visibility = View.GONE
+ }
+ }
+ }
+ }
+
+ }
+
+ fun startHideTimer(view1: Group,view2: Group? = null) {
+ this.view1 = view1
+ this.view2 = view2
+ mHideHandler.removeCallbacks(hideRunable)
+ if (view1.visibility == View.GONE) {
+ view1.visibility = View.VISIBLE
+ }
+ if (view2?.visibility == View.GONE) {
+ view2.visibility = View.VISIBLE
+ }
+ mHideHandler.postDelayed(hideRunable, 3000)
+ }
+
+ fun resetHideTimer() {
+ if(view1 != null){
+ view1!!.visibility = View.VISIBLE
+ }
+ if(view2 != null){
+ view2!!.visibility = View.VISIBLE
+ }
+ mHideHandler.removeCallbacks(hideRunable)
+ mHideHandler.postDelayed(hideRunable, 3000)
+ }
+
+ fun endHideTime() {
+ mHideHandler.removeCallbacks(hideRunable)
+ if (view1 != null) {
+ view1 = null
+ }
+ if (view2 != null) {
+ view2 = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/FullMediaActivity.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/FullMediaActivity.kt
new file mode 100644
index 0000000000..b995ac516b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/FullMediaActivity.kt
@@ -0,0 +1,147 @@
+package com.mogo.tanlu.video
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import com.mogo.tanlu.R
+import com.mogo.tanlu.model.Informations
+import com.mogo.tanlu.util.HideControl
+import com.mogo.utils.logger.Logger
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
+import kotlinx.android.synthetic.main.tanlu_activity_media_full.*
+import java.util.*
+
+/**
+ * 全屏显示适配
+ */
+
+class FullMediaActivity : AppCompatActivity(), View.OnClickListener {
+ companion object {
+ const val PARAM_MEDIA_DATA = "PARAM_MEDIA_DATA"
+ const val PARAM_MEDIA_POSITION_CALLBACK = "PARAM_MEDIA_POSITION_CALLBACK"
+ const val TAG = "FullMediaActivity"
+
+ const val PARAM_VIDEO_URL = "param_video_url"
+ const val PARAM_THUMB_URL = "param_thumb_url"
+
+
+// fun launch(context: Activity, strategyInfo: List, position: Int) {
+// val intent = Intent(context, FullMediaActivity::class.java)
+// intent.putExtra(PARAM_MEDIA_POSITION, position)
+// // 使用全局静态对象代替,避免序列化开销
+// GlobalSharedInformation.informationList = strategyInfo as ArrayList
+// context.startActivityForResult(intent, REQUESTCODE_MAINACTIVITY)
+// context.overridePendingTransition(0, 0)
+// }
+
+ fun launch(context: Activity, videoUrl: String, thumbnail: String) {
+ val intent = Intent(context, FullMediaActivity::class.java)
+ intent.putExtra(PARAM_VIDEO_URL, videoUrl)
+ intent.putExtra(PARAM_THUMB_URL, thumbnail)
+ context.startActivity(intent)
+ context.overridePendingTransition(0, 0)
+ }
+ }
+
+ private var strategyInfo: ArrayList = arrayListOf()
+ private var currentImgPosition: Int = 0
+ private var currentPosition: Int = 50
+ private var control = HideControl()
+ private var gsyVideoOptionBuilder = GSYVideoOptionBuilder()
+ private var videoUrl: String? = null
+ private var thumbUrl: String? = null
+
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.tanlu_activity_media_full)
+ handleIntent()
+ setListener()
+ }
+
+ private fun handleIntent() {
+ var intent = intent
+
+ videoUrl = intent.getStringExtra(PARAM_VIDEO_URL)
+ thumbUrl = intent.getStringExtra(PARAM_THUMB_URL)
+
+ Logger.e("liyz", "videoUrl = $videoUrl --->thumbUrl = $thumbUrl")
+ }
+
+ override fun onResume() {
+ super.onResume()
+ updateInformation()
+ GSYVideoManager.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ GSYVideoManager.onPause()
+ }
+
+ //需要监听完成事件
+ private fun setListener() {
+ iv_media_back.setOnClickListener(this)
+
+ //重置timer
+ video_view.addSingleClickListener(object :
+ MediaCoverVideoPlayer.SingleClickListener {
+ override fun onClick() {
+ control.resetHideTimer()
+ }
+ })
+
+ //视频播放完成
+ video_view.onCompletionListener(object :
+ MediaCoverVideoPlayer.CompletionListener {
+ override fun onCompletion() {
+ GSYVideoManager.releaseAllVideos()
+ finish()
+ }
+ })
+
+ video_view.loadCoverImage(thumbUrl!!)
+ //设置url,点击播放
+ gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(true)
+ .setPlayTag(TAG).build(video_view)
+ video_view.startButton.performClick()
+ }
+
+
+ private fun updateInformation() {
+ tv_media_title_content.text = "北京市"
+ tv_media_title_time.text = "2020-1-6"
+ }
+
+
+ override fun onClick(view: View) {
+ view?.let {
+ when (view) {
+ iv_media_back -> {
+ handleBack()
+ }
+
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ GSYVideoManager.releaseAllVideos()
+ overridePendingTransition(0, 0)
+ }
+
+ private fun handleBack() {
+ Logger.d("liyz", "handleBack ------> finish ")
+ finish()
+ }
+
+ override fun onBackPressed() {
+ super.onBackPressed()
+ handleBack()
+ }
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/MediaCoverVideoPlayer.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/MediaCoverVideoPlayer.kt
new file mode 100644
index 0000000000..c71fc8d361
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/MediaCoverVideoPlayer.kt
@@ -0,0 +1,159 @@
+package com.mogo.tanlu.video
+
+import android.content.Context
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View
+import android.widget.ImageView
+import com.bumptech.glide.Glide
+import com.mogo.tanlu.R
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
+import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge
+
+
+/**
+ * 全屏播放
+ */
+class MediaCoverVideoPlayer : StandardGSYVideoPlayer {
+
+ private lateinit var coverImage: ImageView
+ private lateinit var start: ImageView
+ private lateinit var fullscreen: ImageView
+ private lateinit var singleClickListener: SingleClickListener
+ private lateinit var completionListener: CompletionListener
+
+ constructor(context: Context?) : super(context)
+ constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
+ constructor(context: Context?, fullFlag: Boolean?) : super(context, fullFlag)
+
+ interface SingleClickListener {
+ fun onClick()
+ }
+
+ interface CompletionListener {
+ fun onCompletion()
+ }
+
+ override fun init(context: Context) {
+ super.init(context)
+ coverImage = findViewById(R.id.thumbImage)
+ start = findViewById(R.id.start)
+ fullscreen = findViewById(R.id.fullscreen)
+ if (mThumbImageViewLayout != null
+ && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR)
+ ) {
+ mThumbImageViewLayout.visibility = View.VISIBLE
+ }
+ }
+
+ fun addSingleClickListener(singleClickListener: SingleClickListener) {
+ this.singleClickListener = singleClickListener
+ }
+
+ fun onCompletionListener(completionListener: CompletionListener) {
+ this.completionListener = completionListener
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.tanlu_item_video_cover_media
+ }
+
+ override fun getGSYVideoManager(): GSYVideoViewBridge {
+ GSYVideoManager.instance().initContext(context.applicationContext)
+ return GSYVideoManager.instance()
+ }
+
+ override fun setProgressAndTime(
+ progress: Int,
+ secProgress: Int,
+ currentTime: Int,
+ totalTime: Int
+ ) {
+ super.setProgressAndTime(progress, secProgress, currentTime, totalTime)
+ if (progress != 0) {
+ mProgressBar.progress = progress
+ }
+ }
+
+ fun loadCoverImage(url: String) {
+ Glide.with(context)
+ .load(url)
+ .into(coverImage)
+ }
+
+ override fun updateStartImage() {
+ when (mCurrentState) {
+ GSYVideoView.CURRENT_STATE_PLAYING -> start.setImageResource(R.drawable.selector_bg_btn_pause)
+ GSYVideoView.CURRENT_STATE_ERROR -> start.setImageResource(R.mipmap.main_video_refresh_btn)
+ else -> start.setImageResource(R.drawable.selector_bg_btn_play)
+ }
+ }
+
+ fun setFullClickListener(listener: OnClickListener) {
+ fullscreen.setOnClickListener(listener)
+ }
+
+ override fun onClickUiToggle() {
+ super.onClickUiToggle()
+ singleClickListener.let {
+ it.onClick()
+ }
+ }
+
+ override fun changeUiToCompleteShow() {
+ super.changeUiToCompleteShow()
+ setViewShowState(mBottomContainer, View.INVISIBLE)
+ }
+
+ override fun onAutoCompletion() {
+ super.onAutoCompletion()
+ mProgressBar.progress = 0
+ }
+
+ override fun showWifiDialog() {
+ //直接播放,不显示WIFI对话框
+ startPlayLogic()
+ }
+
+ override fun onClick(v: View?) {
+ super.onClick(v)
+ v?.let {
+ when (v) {
+ start -> {
+
+ }
+ else -> {
+
+ }
+ }
+ }
+ }
+
+ override fun onPrepared() {
+ super.onPrepared()
+ }
+
+ /**
+ * 多次回调? TODO
+ */
+ override fun onCompletion() {
+ Log.d("liyz", "onCompletion --------->")
+// completionListener.let {
+// it.onCompletion()
+// }
+ }
+
+ override fun onDetachedFromWindow() {
+ super.onDetachedFromWindow()
+ mFullPauseBitmap?.let {
+ if (!it.isRecycled) {
+ it.recycle()
+ }
+ }
+ mFullPauseBitmap = null
+ Log.d("MediaCoverVideoPlayer", "recycle.")
+ }
+
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/SimpleCoverVideoPlayer.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/SimpleCoverVideoPlayer.kt
new file mode 100644
index 0000000000..7093db9c1c
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/SimpleCoverVideoPlayer.kt
@@ -0,0 +1,134 @@
+package com.mogo.tanlu.video
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.Surface
+import android.view.View
+import android.widget.ImageView
+import com.bumptech.glide.Glide
+import com.mogo.tanlu.R
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.utils.GSYVideoType
+import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
+import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
+import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge
+
+
+class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
+ private lateinit var coverImage: ImageView
+ private lateinit var start: ImageView
+ private lateinit var fullscreen: ImageView
+
+ constructor(context: Context?) : super(context)
+ constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
+ constructor(context: Context?, fullFlag: Boolean?) : super(context, fullFlag)
+
+ override fun init(context: Context) {
+ super.init(context)
+ coverImage = findViewById(R.id.thumbImage)
+ start = findViewById(R.id.start)
+ fullscreen = findViewById(R.id.fullscreen)
+ if (mThumbImageViewLayout != null
+ && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR)
+ ) {
+ mThumbImageViewLayout.visibility = View.VISIBLE
+ }
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.tanlu_item_video_cover
+ }
+
+ override fun getGSYVideoManager(): GSYVideoViewBridge {
+ GSYVideoManager.instance().initContext(context.applicationContext)
+ return GSYVideoManager.instance()
+ }
+
+ override fun setProgressAndTime(
+ progress: Int,
+ secProgress: Int,
+ currentTime: Int,
+ totalTime: Int
+ ) {
+ super.setProgressAndTime(progress, secProgress, currentTime, totalTime)
+ if (progress != 0) {
+ mProgressBar.progress = progress
+ }
+ }
+
+// fun loadCoverImage(url: String, mContext: Context) {
+// Glide.with(mContext.applicationContext)
+// .load(url)
+// .error(R.color.color_303447)
+// .into(coverImage)
+// }
+
+ override fun updateStartImage() {
+ when (mCurrentState) {
+ GSYVideoView.CURRENT_STATE_PLAYING -> start.setImageResource(R.drawable.selector_bg_btn_pause)
+ GSYVideoView.CURRENT_STATE_ERROR -> start.setImageResource(R.mipmap.main_video_refresh_btn)
+ else -> start.setImageResource(R.drawable.selector_bg_btn_play)
+ }
+ }
+
+ fun setFullClickListener(listener: OnClickListener) {
+ fullscreen.setOnClickListener(listener)
+ }
+
+ override fun changeUiToCompleteShow() {
+ super.changeUiToCompleteShow()
+ setViewShowState(mBottomContainer, View.INVISIBLE)
+ }
+
+ override fun onAutoCompletion() {
+ super.onAutoCompletion()
+ mProgressBar.progress = 0
+ }
+
+ override fun showWifiDialog() {
+ //直接播放,不显示WIFI对话框
+ startPlayLogic()
+ }
+
+ override fun onDetachedFromWindow() {
+ super.onDetachedFromWindow()
+ mProgressBar.progress = 0
+ mFullPauseBitmap = null
+ }
+
+ override fun onClick(v: View?) {
+ super.onClick(v)
+ }
+
+
+ override fun onPrepared() {
+ super.onPrepared()
+ }
+
+ override fun onCompletion() {
+
+ }
+
+ override fun onSurfaceUpdated(surface: Surface) {
+ super.onSurfaceUpdated(surface)
+ if (mThumbImageViewLayout != null && mThumbImageViewLayout.visibility == View.VISIBLE) {
+ mThumbImageViewLayout.visibility = View.INVISIBLE
+ }
+ }
+
+ override fun setViewShowState(view: View?, visibility: Int) {
+ if (view === mThumbImageViewLayout && visibility != View.VISIBLE) {
+ return
+ }
+ super.setViewShowState(view, visibility)
+ }
+
+ override fun onSurfaceAvailable(surface: Surface) {
+ super.onSurfaceAvailable(surface)
+ if (GSYVideoType.getRenderType() != GSYVideoType.TEXTURE) {
+ if (mThumbImageViewLayout != null && mThumbImageViewLayout.visibility == View.VISIBLE) {
+ mThumbImageViewLayout.visibility = View.INVISIBLE
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/VideoInit.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/VideoInit.kt
new file mode 100644
index 0000000000..8d9ee59d98
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/video/VideoInit.kt
@@ -0,0 +1,22 @@
+package com.mogo.tanlu.video
+
+import com.shuyu.gsyvideoplayer.GSYVideoManager
+import com.shuyu.gsyvideoplayer.cache.CacheFactory
+import com.shuyu.gsyvideoplayer.cache.ProxyCacheManager
+import com.shuyu.gsyvideoplayer.model.VideoOptionModel
+import com.shuyu.gsyvideoplayer.player.IjkPlayerManager
+import com.shuyu.gsyvideoplayer.player.PlayerFactory
+import com.shuyu.gsyvideoplayer.utils.GSYVideoType
+import tv.danmaku.ijk.media.player.IjkMediaPlayer
+
+
+fun initVideo() {
+ PlayerFactory.setPlayManager(IjkPlayerManager::class.java)
+ CacheFactory.setCacheManager(ProxyCacheManager::class.java)
+ var list = mutableListOf()
+ list.add(VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1))
+ list.add(VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "videotoolbox", 0))
+ GSYVideoManager.instance().optionModelList = list
+ GSYVideoType.enableMediaCodec()
+ GSYVideoType.enableMediaCodecTexture()
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/view/AutoZoomInImageView.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/view/AutoZoomInImageView.kt
new file mode 100644
index 0000000000..391727aa8d
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/view/AutoZoomInImageView.kt
@@ -0,0 +1,222 @@
+package com.mogo.tanlu.view
+
+import android.animation.Animator
+import android.animation.ValueAnimator
+import android.content.Context
+import android.graphics.Matrix
+import android.graphics.drawable.Drawable
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View
+import android.widget.ImageView
+import com.mogo.service.imageloader.MogoImageView
+
+class AutoZoomInImageView : MogoImageView {
+
+ companion object {
+ const val TAG = "AutoZoomInImageView"
+ }
+
+ private var mDrawableW: Int = 0
+ private var mDrawableH: Int = 0
+ private var mImageViewW: Int = 0
+ private var mImageViewH: Int = 0
+ private var mDurationMillis = 3000L
+
+ private var mValues = FloatArray(9)
+ var isInit: Boolean = false
+ private var mScaleDelta = 0.2f
+ private var va: ValueAnimator = ValueAnimator.ofFloat(0f, mScaleDelta)
+
+ private lateinit var mDrawable: Drawable
+ private lateinit var mMatrix: Matrix
+
+ private var onStart: (View.() -> Unit)? = null
+
+ private var onUpdate: ((view: View, progress: Float) -> Unit)? = null
+
+ private var onEnd: (View.() -> Unit)? = null
+
+ infix fun onStart(onStart: View.() -> Unit) :AutoZoomInImageView{
+ this.onStart = onStart
+ return this
+ }
+
+ infix fun onUpdate(onUpdate: (view: View, progress: Float) -> Unit) :AutoZoomInImageView{
+ this.onUpdate = onUpdate
+ return this
+ }
+
+ infix fun onEnd(onEnd: View.() -> Unit):AutoZoomInImageView {
+ this.onEnd = onEnd
+ return this
+ }
+
+ constructor(context: Context?) : super(context) {
+ this.scaleType = ScaleType.MATRIX
+ }
+
+ constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
+ this.scaleType = ScaleType.MATRIX
+ }
+
+ constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
+ context,
+ attrs,
+ defStyleAttr
+ ) {
+ this.scaleType = ScaleType.MATRIX
+ }
+
+
+ fun init(): AutoZoomInImageView {
+ initInternalValues()
+ initPicturePosition()
+ isInit = true
+ return this
+ }
+
+ fun init(drawable: Drawable) {
+ initInternalValues(drawable)
+ initPicturePosition()
+ }
+
+ private fun initInternalValues() {
+ mDrawable = drawable
+
+ mDrawableW = mDrawable.intrinsicWidth
+ mDrawableH = mDrawable.intrinsicHeight
+
+ mImageViewW = measuredWidth
+ mImageViewH = measuredHeight
+
+ mMatrix = imageMatrix
+ mMatrix.getValues(mValues)
+ }
+
+ private fun initInternalValues(drawable: Drawable) {
+ mDrawable = drawable
+
+ mDrawableW = mDrawable.intrinsicWidth
+ mDrawableH = mDrawable.intrinsicHeight
+
+ mImageViewW = measuredWidth
+ mImageViewH = measuredHeight
+
+ mMatrix = imageMatrix
+ mMatrix.getValues(mValues)
+ }
+
+ private fun initPicturePosition() {
+ updateMatrixValuesOrigin(
+ mMatrix,
+ mValues,
+ mDrawableW.toFloat(),
+ mDrawableH.toFloat(),
+ mImageViewW.toFloat(),
+ mImageViewH.toFloat()
+ )
+ imageMatrix = mMatrix
+ }
+
+ fun setDurationMillis(durationMillis: Long): AutoZoomInImageView {
+ mDurationMillis = durationMillis
+ return this
+ }
+
+ fun startZoomInByScaleDelta(scaleDelta: Float = 0.2f, duration: Long = 3000) {
+ val oriScaleX = mValues[0]
+ val oriScaleY = mValues[4]
+
+ va.addUpdateListener { animation ->
+ val value = animation.animatedValue as Float
+ onUpdate?.invoke(this@AutoZoomInImageView, value / scaleDelta)
+ updateMatrixValuesSpan(
+ mValues,
+ mDrawableW.toFloat(),
+ mDrawableH.toFloat(),
+ mImageViewW.toFloat(),
+ mImageViewH.toFloat(),
+ oriScaleX,
+ oriScaleY,
+ value
+ )
+ mMatrix.setValues(mValues)
+ imageMatrix = mMatrix
+ }
+ va.addListener(object : Animator.AnimatorListener {
+ override fun onAnimationStart(animation: Animator) {
+ onStart?.invoke(this@AutoZoomInImageView)
+ }
+
+ override fun onAnimationEnd(animation: Animator) {
+ onEnd?.invoke(this@AutoZoomInImageView)
+ }
+
+ override fun onAnimationCancel(animation: Animator) {}
+ override fun onAnimationRepeat(animation: Animator) {}
+ })
+ va.duration = duration
+ va.start()
+ }
+
+ fun zoomPause() {
+ if (va.isRunning) {
+ Log.d(TAG, "pause")
+ va.pause()
+ }
+ }
+
+
+ fun zoomResume() {
+ if (va.isStarted && va.isPaused) {
+ Log.d(TAG, "resume")
+ va.resume()
+ } else {
+ Log.d(TAG, "restart")
+ va.start()
+ }
+ }
+
+ private fun updateMatrixValuesOrigin(
+ outMatrix: Matrix?,
+ outValues: FloatArray?,
+ drawW: Float,
+ drawH: Float,
+ imageW: Float,
+ imageH: Float
+ ) {
+ if (outMatrix == null || outValues == null) {
+ throw IllegalArgumentException("please set the source of AutoZoomInImageView's matrix and values")
+ }
+ outMatrix.reset()
+
+ if (imageH * drawW > drawH * imageW) {
+ val scale1 = imageH / drawH
+ val offset1 = (drawW * scale1 - imageW) / 2
+ outMatrix.postScale(scale1, scale1)
+ outMatrix.postTranslate(-offset1, 0f)
+ } else {
+ val scale2 = imageW / drawW
+ val offset2 = (drawH * scale2 - imageH) / 2
+ outMatrix.postScale(scale2, scale2)
+ outMatrix.postTranslate(0f, -offset2)
+ }
+ outMatrix.getValues(outValues)
+ }
+
+ private fun updateMatrixValuesSpan(
+ outValues: FloatArray,
+ drawW: Float, drawH: Float,
+ imageW: Float, imageH: Float,
+ oriScaleX: Float, oriScaleY: Float,
+ scaleDelta: Float
+ ) {
+ outValues[0] = oriScaleX * (1 + scaleDelta)
+ outValues[4] = oriScaleY * (1 + scaleDelta)
+ val offsetwidth = (drawW * outValues[0] - imageW) / 2
+ outValues[2] = -offsetwidth
+ val offsetHeight = (drawH * outValues[4] - imageH) / 2
+ outValues[5] = -offsetHeight
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_bus.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_bus.png
new file mode 100755
index 0000000000..66f73f4454
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_bus.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_car.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_car.png
new file mode 100755
index 0000000000..b12b10c83f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_car.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_end.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_end.png
new file mode 100755
index 0000000000..5503dc5a28
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_end.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_man.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_man.png
new file mode 100755
index 0000000000..16842d5d12
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_man.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_ride.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_ride.png
new file mode 100755
index 0000000000..2fa5633c59
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_ride.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_0_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_0_arrow.png
new file mode 100755
index 0000000000..21793fea2b
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_0_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_1_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_1_arrow.png
new file mode 100755
index 0000000000..d7d832857f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_1_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_2_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_2_arrow.png
new file mode 100755
index 0000000000..c1d019b4ae
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_2_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_3_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_3_arrow.png
new file mode 100755
index 0000000000..b3318ad436
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_3_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_4_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_4_arrow.png
new file mode 100755
index 0000000000..038e63f485
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_4_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_5_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_5_arrow.png
new file mode 100755
index 0000000000..e15ce84e87
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_5_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_6_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_6_arrow.png
new file mode 100755
index 0000000000..9f3540757a
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_6_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_7_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_7_arrow.png
new file mode 100755
index 0000000000..cef675f06f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_7_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_8_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_8_arrow.png
new file mode 100755
index 0000000000..c4d67d38a4
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_8_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_9_arrow.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_9_arrow.png
new file mode 100755
index 0000000000..3c92f82f0d
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_route_color_texture_9_arrow.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_start.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_start.png
new file mode 100755
index 0000000000..cd716c8840
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_start.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_through.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_through.png
new file mode 100755
index 0000000000..e636b446c1
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/amap_through.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/app_icon.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/app_icon.png
new file mode 100644
index 0000000000..c97be4be12
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/app_icon.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/default_image.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/default_image.png
new file mode 100644
index 0000000000..fdc210cd25
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/default_image.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir1.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir1.png
new file mode 100755
index 0000000000..fec3f4ec69
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir1.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir10.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir10.png
new file mode 100755
index 0000000000..34c2228f6c
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir10.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir11.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir11.png
new file mode 100755
index 0000000000..df9e8dc67c
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir11.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir12.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir12.png
new file mode 100755
index 0000000000..a4ba8c22cb
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir12.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir13.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir13.png
new file mode 100755
index 0000000000..39ad870c5f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir13.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir14.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir14.png
new file mode 100755
index 0000000000..a3c1632562
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir14.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir15.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir15.png
new file mode 100755
index 0000000000..c99fb65b94
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir15.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir16.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir16.png
new file mode 100755
index 0000000000..86898c2144
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir16.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir2.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir2.png
new file mode 100755
index 0000000000..750b6fbb7e
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir2.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir3.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir3.png
new file mode 100755
index 0000000000..8cbe886e81
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir3.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir4.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir4.png
new file mode 100755
index 0000000000..cfe7d6c0fb
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir4.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir5.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir5.png
new file mode 100755
index 0000000000..e465d5eec2
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir5.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir6.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir6.png
new file mode 100755
index 0000000000..0d2f3c0360
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir6.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir7.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir7.png
new file mode 100755
index 0000000000..e53c9ff451
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir7.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir8.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir8.png
new file mode 100755
index 0000000000..edfdbe1df0
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir8.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir9.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir9.png
new file mode 100755
index 0000000000..a762d0b74a
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir9.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_end.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_end.png
new file mode 100755
index 0000000000..f3cb78aed4
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_end.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_start.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_start.png
new file mode 100755
index 0000000000..4d2a797823
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_start.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_station.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_station.png
new file mode 100755
index 0000000000..2ed622283b
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/dir_station.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/ic_refresh.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/ic_refresh.png
new file mode 100644
index 0000000000..d86c3f8024
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/ic_refresh.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/ic_snapshot_ph.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/ic_snapshot_ph.png
new file mode 100644
index 0000000000..281f1bb163
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/ic_snapshot_ph.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/join_checkbox_bg.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/join_checkbox_bg.png
new file mode 100755
index 0000000000..89d00803c5
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/join_checkbox_bg.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/live_exit.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/live_exit.png
new file mode 100644
index 0000000000..7d9b50f159
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/live_exit.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/location_city_image.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/location_city_image.png
new file mode 100644
index 0000000000..ce5515c529
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/location_city_image.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_left_page_up_normal.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_left_page_up_normal.png
new file mode 100644
index 0000000000..9c1a2a4aea
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_left_page_up_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_left_page_up_press.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_left_page_up_press.png
new file mode 100644
index 0000000000..d927b18877
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_left_page_up_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_right_page_up_normal.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_right_page_up_normal.png
new file mode 100644
index 0000000000..dda526f475
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_right_page_up_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_right_page_up_press.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_right_page_up_press.png
new file mode 100644
index 0000000000..2289209d9a
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/main_solid_right_page_up_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/mainpage_location_img.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/mainpage_location_img.png
new file mode 100644
index 0000000000..7a463ac3ab
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/mainpage_location_img.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/map_location_normal.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/map_location_normal.png
new file mode 100644
index 0000000000..53f5b5a14a
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/map_location_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/map_location_press.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/map_location_press.png
new file mode 100644
index 0000000000..e3e430c8d6
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/map_location_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/not_join_checkbox_bg.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/not_join_checkbox_bg.png
new file mode 100755
index 0000000000..663addd255
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/not_join_checkbox_bg.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/public_arrow_back_iv.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/public_arrow_back_iv.png
new file mode 100644
index 0000000000..cd7159e219
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/public_arrow_back_iv.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/search_information_normal.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/search_information_normal.png
new file mode 100644
index 0000000000..69529ef0bd
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/search_information_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/search_information_press.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/search_information_press.png
new file mode 100644
index 0000000000..8338cc95ae
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/search_information_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/video_loading_img.png b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/video_loading_img.png
new file mode 100644
index 0000000000..48be2bdd18
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-ldpi/video_loading_img.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/loading_bg.xml b/modules/mogo-module-tanlu/src/main/res/drawable/loading_bg.xml
new file mode 100644
index 0000000000..24614c444e
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/loading_bg.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_enlarge.xml b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_enlarge.xml
new file mode 100644
index 0000000000..d293f7d7c9
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_enlarge.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_pause.xml b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_pause.xml
new file mode 100644
index 0000000000..6d6c9f9987
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_pause.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_play.xml b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_play.xml
new file mode 100644
index 0000000000..0d2fec0819
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_btn_play.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_solid_left_page_up.xml b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_solid_left_page_up.xml
new file mode 100644
index 0000000000..5448ebf742
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_solid_left_page_up.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_solid_right_page_up.xml b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_solid_right_page_up.xml
new file mode 100644
index 0000000000..a3879591d8
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/selector_bg_solid_right_page_up.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533.xml b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533.xml
new file mode 100644
index 0000000000..18f8f6ba5b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533_6px_bottom.xml b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533_6px_bottom.xml
new file mode 100644
index 0000000000..1b882ade41
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533_6px_bottom.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533_6px_top.xml b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533_6px_top.xml
new file mode 100644
index 0000000000..2835c0389f
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_222533_6px_top.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_99191c25_4px.xml b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_99191c25_4px.xml
new file mode 100644
index 0000000000..f459707924
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/drawable/shape_bg_99191c25_4px.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_activity_media_full.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_activity_media_full.xml
new file mode 100644
index 0000000000..aada8efa34
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_activity_media_full.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/mogo-module-tanlu/src/main/res/layout/tanlu_bubble_marker.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_bubble_marker.xml
similarity index 100%
rename from demo/mogo-module-tanlu/src/main/res/layout/tanlu_bubble_marker.xml
rename to modules/mogo-module-tanlu/src/main/res/layout/tanlu_bubble_marker.xml
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_card_view.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_card_view.xml
new file mode 100644
index 0000000000..03c7c97f3b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_card_view.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_fullscreen_video_view_pager.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_fullscreen_video_view_pager.xml
new file mode 100644
index 0000000000..47a838abdc
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_fullscreen_video_view_pager.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/mogo-module-tanlu/src/main/res/layout/tanlu_info_window.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_info_window.xml
similarity index 100%
rename from demo/mogo-module-tanlu/src/main/res/layout/tanlu_info_window.xml
rename to modules/mogo-module-tanlu/src/main/res/layout/tanlu_info_window.xml
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml
new file mode 100644
index 0000000000..ccbb8d827b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_photo_recycler.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_photo_recycler.xml
new file mode 100644
index 0000000000..5e12cbfff3
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_photo_recycler.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_video_cover.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_video_cover.xml
new file mode 100644
index 0000000000..acfb127b77
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_video_cover.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_video_cover_media.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_video_cover_media.xml
new file mode 100644
index 0000000000..5f77e5bca3
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_video_cover_media.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/mogo-module-tanlu/src/main/res/layout/tanlu_poi_info_window.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_poi_info_window.xml
similarity index 100%
rename from demo/mogo-module-tanlu/src/main/res/layout/tanlu_poi_info_window.xml
rename to modules/mogo-module-tanlu/src/main/res/layout/tanlu_poi_info_window.xml
diff --git a/demo/demo-module-map/src/main/res/drawable/ic_launcher.png b/modules/mogo-module-tanlu/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from demo/demo-module-map/src/main/res/drawable/ic_launcher.png
rename to modules/mogo-module-tanlu/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-hdpi/ic_launcher_round.png b/modules/mogo-module-tanlu/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..dffca3601e
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send.png
new file mode 100644
index 0000000000..85e35f9b8f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send_loading.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send_loading.png
new file mode 100644
index 0000000000..cd5e91fa7e
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send_loading.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send_success.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send_success.png
new file mode 100644
index 0000000000..3666376705
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/custom_send_success.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/ic_launcher.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/ic_launcher.png
new file mode 100644
index 0000000000..898f3ed59a
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/ic_launcher.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/ic_launcher_round.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/ic_launcher_round.png
new file mode 100644
index 0000000000..dffca3601e
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/ic_launcher_round.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_enlarge_btn_normal.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_enlarge_btn_normal.png
new file mode 100644
index 0000000000..fe005906f2
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_enlarge_btn_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_enlarge_btn_press.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_enlarge_btn_press.png
new file mode 100644
index 0000000000..fe005906f2
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_enlarge_btn_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_page_title.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_page_title.png
new file mode 100644
index 0000000000..f83b9643f3
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_page_title.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_upload_info_image.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_upload_info_image.png
new file mode 100644
index 0000000000..97b8f14e19
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_upload_info_image.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_pause_btn_normal.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_pause_btn_normal.png
new file mode 100644
index 0000000000..2e60a6f3ed
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_pause_btn_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_pause_btn_press.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_pause_btn_press.png
new file mode 100644
index 0000000000..e7fd238cd1
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_pause_btn_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_btn_normal.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_btn_normal.png
new file mode 100644
index 0000000000..a8f818fd7a
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_btn_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_btn_press.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_btn_press.png
new file mode 100644
index 0000000000..69557977d3
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_btn_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_mini.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_mini.png
new file mode 100644
index 0000000000..7e1bd42bfe
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_play_mini.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_refresh_btn.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_refresh_btn.png
new file mode 100644
index 0000000000..7f021fc1a9
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_video_refresh_btn.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_view_empty_bg.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_view_empty_bg.png
new file mode 100644
index 0000000000..ec33ce3768
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/main_view_empty_bg.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/not_join_checkbox_bg.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/not_join_checkbox_bg.png
new file mode 100755
index 0000000000..663addd255
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/not_join_checkbox_bg.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/share_back_image.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/share_back_image.png
new file mode 100755
index 0000000000..72305ea904
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/share_back_image.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn.png
new file mode 100755
index 0000000000..8e3084a15f
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn_bg.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn_bg.png
new file mode 100644
index 0000000000..be5d00d302
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn_bg.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn_press.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn_press.png
new file mode 100755
index 0000000000..de1ed58b95
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_confirm_btn_press.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_title.png b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_title.png
new file mode 100644
index 0000000000..0169722bb1
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-ldpi/splash_title.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-mdpi/ic_launcher.png b/modules/mogo-module-tanlu/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000..64ba76f75e
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/demo/demo-module-map/src/main/res/drawable/ic_launcher_round.png b/modules/mogo-module-tanlu/src/main/res/mipmap-mdpi/ic_launcher_round.png
similarity index 100%
rename from demo/demo-module-map/src/main/res/drawable/ic_launcher_round.png
rename to modules/mogo-module-tanlu/src/main/res/mipmap-mdpi/ic_launcher_round.png
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-xhdpi/ic_launcher.png b/modules/mogo-module-tanlu/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000..e5ed46597e
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/modules/mogo-module-tanlu/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000000..14ed0af350
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/values/colors.xml b/modules/mogo-module-tanlu/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..0ed1b64aeb
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/values/colors.xml
@@ -0,0 +1,32 @@
+
+
+ #000000
+ #000000
+ #1F7FFF
+ #FFFFFF
+ #80FFFFFF
+ #1E212C
+ #1F7FFF
+ #171F7FFF
+ #4d191C25
+ #99191C25
+ #222533
+ #303447
+ #323131
+ #4B5369
+ #9A9A9A
+ #A2A2A2
+ #5a979797
+ #80FFFFFF
+ #b3000000
+ #0DFFFFFF
+ #000000
+ #69718B
+ #213142
+ #33FFFFFF
+ #B3000000
+ #333333
+ #0091FF
+ #d9000000
+ #FF1B1B
+
diff --git a/modules/mogo-module-tanlu/src/main/res/values/strings.xml b/modules/mogo-module-tanlu/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..624c47aa7f
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/res/values/strings.xml
@@ -0,0 +1,30 @@
+
+ tanlu
+ 返回
+ 取消授权
+ 《探路共享计划》
+ 已同意
+ 探路共享计划 >>
+ 探路APP用户服务协议
+ 未找到其他用户分享的路况, 您可以试试上报路况 ]]>
+ 未知区域
+ 上报路况
+ 正在更新情报数据
+ 欢迎使用探路,您可以在探路内查看到周边的实时路况,也可以通过关键词“上报路况”来分享一段视频给其他车主
+ 您还可以试试语音上报
+ 为您找到%s条路况信息
+ 开启小智车联
+ 共享计划
+
+
+ - 正在为您搜索路况
+ - 探路系统正在为您搜索
+ - 小智这就去查,您稍等一下
+
+
+ - 找不到相关地址
+ - 找不到地址,是小智不好
+ - 未找到其他车主分享的路况信息
+
+
+
diff --git a/demo/mogo-module-tanlu/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java b/modules/mogo-module-tanlu/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java
similarity index 100%
rename from demo/mogo-module-tanlu/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java
rename to modules/mogo-module-tanlu/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
index f2e95af196..0dd30836fa 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
@@ -45,4 +45,9 @@ public class MogoServicePaths {
* netty 长链
*/
public static final String PATH_SOCKET_MANAGER = "/socket/manager";
+
+ /**
+ * 状态管理接口
+ */
+ public static final String PATH_STATUS_MANAGER = "/statusmanager/api";
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/analytics/IMogoAnalytics.java b/services/mogo-service-api/src/main/java/com/mogo/service/analytics/IMogoAnalytics.java
index e8fe14fe8b..d3ef9f6bdb 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/analytics/IMogoAnalytics.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/analytics/IMogoAnalytics.java
@@ -15,6 +15,7 @@ import java.util.Map;
@Keep
public interface IMogoAnalytics extends IProvider {
+
/**
* 埋点
*
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java
index eaad44faa9..dc2dad5741 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java
@@ -17,4 +17,9 @@ public interface IMogoModuleLifecycle {
* 卡片不可用,任何卡片的操作都会被launcher忽略
*/
void onDisable();
+
+ /**
+ * accOn 事件回调
+ */
+ void accOn();
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java
index 71edd74821..9c88e7ad3f 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java
@@ -20,21 +20,6 @@ import com.mogo.map.navi.IMogoNaviListener;
*/
public interface IMogoModuleProvider extends IProvider {
- /**
- * 模块类型为fragment
- */
- int TYPE_FRAGMENT = 1;
-
- /**
- * 模块类型为view
- */
- int TYPE_VIEW = 2;
-
- /**
- * 服务模块
- */
- int TYPE_SERVICE = 3;
-
/**
* 创建卡片
*
@@ -76,8 +61,7 @@ public interface IMogoModuleProvider extends IProvider {
/**
* 是哪种类型的提供者
*
- * {@link #TYPE_FRAGMENT}
- * {@link #TYPE_VIEW}
+ * {@link ModuleType}
*
* @return
*/
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/ModuleType.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/ModuleType.java
new file mode 100644
index 0000000000..7ebd3a1079
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/ModuleType.java
@@ -0,0 +1,51 @@
+package com.mogo.service.module;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-03
+ *
+ * 模块类型
+ */
+public interface ModuleType {
+
+ /**
+ * 卡片类型 - fragment
+ */
+ int TYPE_CARD_FRAGMENT = 1;
+
+ /**
+ * 卡片类型 - view
+ */
+ @Deprecated
+ int TYPE_CARD_VIEW = 2;
+
+ /**
+ * 服务类型的模块
+ */
+ int TYPE_SERVICE = 3;
+
+ /**
+ * APP 列表模块
+ */
+ int TYPE_APP_LIST = 4;
+
+ /**
+ * 小智语音形象
+ */
+ int TYPE_VOICE = 5;
+
+ /**
+ * 地图模块
+ */
+ int TYPE_MAP = 6;
+
+ /**
+ * 导航模块
+ */
+ int TYPE_NAVI = 7;
+
+ /**
+ * 小智、天气、时间等
+ */
+ int TYPE_EXTENSION = 8;
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusChangedListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusChangedListener.java
new file mode 100644
index 0000000000..908af22c34
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusChangedListener.java
@@ -0,0 +1,16 @@
+package com.mogo.service.statusmanager;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-04
+ *
+ * 状态控制器监听
+ */
+public interface IMogoStatusChangedListener {
+
+ /**
+ * @param descriptor 状态类型
+ * @param isTrue true - accOn、adas ui show、voice ui show、push ui show、v2x ui show
+ */
+ void onStatusChanged( StatusDescriptor descriptor, boolean isTrue );
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java
new file mode 100644
index 0000000000..03a7536373
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java
@@ -0,0 +1,122 @@
+package com.mogo.service.statusmanager;
+
+import com.alibaba.android.arouter.facade.template.IProvider;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-02
+ *
+ * 车机状态
+ */
+public interface IMogoStatusManager extends IProvider {
+
+ /**
+ * 小智语音 UI 是否在展示
+ *
+ * @return
+ */
+ boolean isVoiceShow();
+
+ /**
+ * adas UI 是否在展示
+ *
+ * @return
+ */
+ boolean isADASShow();
+
+ /**
+ * v2x UI 是否在展示
+ *
+ * @return
+ */
+ boolean isV2XShow();
+
+ /**
+ * push UI 是否在展示
+ *
+ * @return
+ */
+ boolean isPushShow();
+
+ /**
+ * 是否开机
+ *
+ * @return true - 开机 false - 关机
+ */
+ boolean isAccOn();
+
+
+ /**
+ * 是否有用户交互
+ *
+ * @return
+ */
+ boolean isUserInteracted();
+
+ /**
+ * 设置小智语音UI状态
+ *
+ * @param tag 业务类型
+ * @param show true - 显示 false - 隐藏
+ */
+ void setVoiceUIShow( String tag, boolean show );
+
+ /**
+ * 设置 ADAS UI 状态
+ *
+ * @param tag 业务类型
+ * @param show true - 显示 false - 隐藏
+ */
+ void setADASUIShow( String tag, boolean show );
+
+ /**
+ * 设置 V2X UI 状态
+ *
+ * @param tag 业务类型
+ * @param show true - 显示 false - 隐藏
+ */
+ void setV2XUIShow( String tag, boolean show );
+
+ /**
+ * 设置 PUSH UI 状态
+ *
+ * @param tag 业务类型
+ * @param show true - 显示 false - 隐藏
+ */
+ void setPushUIShow( String tag, boolean show );
+
+ /**
+ * 设置 acc 状态
+ *
+ * @param tag 业务类型
+ * @param isOn true - on, false - off
+ */
+ void setAccStatus( String tag, boolean isOn );
+
+ /**
+ * 设置用户交互状态:地图手势交互、语音控制
+ *
+ * @param tag 业务类型
+ * @param interrupt true - 用户在交互
+ * @param callback 是否引起回调
+ */
+ void setUserInteractionStatus( String tag, boolean interrupt, boolean callback );
+
+ /**
+ * 注册监听
+ *
+ * @param tag 业务类型
+ * @param descriptor 监听类型
+ * @param listener 监听回调
+ */
+ void registerStatusChangedListener( String tag, StatusDescriptor descriptor, IMogoStatusChangedListener listener );
+
+ /**
+ * 注销
+ *
+ * @param tag 业务类型
+ * @param descriptor 注销类型
+ * @param listener 注销回调
+ */
+ void unregisterStatusChangedListener( String tag, StatusDescriptor descriptor, IMogoStatusChangedListener listener );
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java
new file mode 100644
index 0000000000..3481271897
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java
@@ -0,0 +1,40 @@
+package com.mogo.service.statusmanager;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-04
+ *
+ * 状态描述
+ */
+public enum StatusDescriptor {
+
+ /**
+ * adas UI
+ */
+ ADAS_UI,
+
+ /**
+ * 推送UI:弹窗
+ */
+ PUSH_UI,
+
+ /**
+ * v2x UI
+ */
+ V2X_UI,
+
+ /**
+ * 小智语音交互 UI
+ */
+ VOICE_UI,
+
+ /**
+ * 开机状态
+ */
+ ACC_STATUS,
+
+ /**
+ * 用户交互状态
+ */
+ USER_INTERACTED
+}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java b/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java
index f25602ebf9..8682de95d8 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java
@@ -37,7 +37,6 @@ import com.mogo.utils.network.RetrofitFactory;
@Route( path = MogoServicePaths.PATH_SERVICES_NETWORK)
public class MogoNetWorkService implements IMogoNetwork {
-
@Override
public void init( Context context ) {
MogoInitor.init( context );
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
new file mode 100644
index 0000000000..ae7cd5b6d8
--- /dev/null
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
@@ -0,0 +1,159 @@
+package com.mogo.service.impl.statusmanager;
+
+
+import android.content.Context;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.logger.Logger;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author congtaowang
+ * @since 2020-01-02
+ *
+ * 状态控制器
+ */
+@Route( path = MogoServicePaths.PATH_STATUS_MANAGER )
+public class MogoStatusManager implements IMogoStatusManager {
+
+ /**
+ * 状态记录
+ */
+ private static final Map< StatusDescriptor, Boolean > mStatus = new ConcurrentHashMap<>();
+
+ /**
+ * 回调集合
+ */
+ private static final Map< StatusDescriptor, List< IMogoStatusChangedListener > > mListeners = new ConcurrentHashMap<>();
+
+ /**
+ * 状态类型修改记录
+ */
+ private static final Map< StatusDescriptor, String > mModifier = new ConcurrentHashMap<>();
+
+ @Override
+ public boolean isVoiceShow() {
+ return get_bool_val( StatusDescriptor.VOICE_UI );
+ }
+
+ @Override
+ public boolean isADASShow() {
+ return get_bool_val( StatusDescriptor.ADAS_UI );
+ }
+
+ @Override
+ public boolean isV2XShow() {
+ return get_bool_val( StatusDescriptor.V2X_UI );
+ }
+
+ @Override
+ public boolean isPushShow() {
+ return get_bool_val( StatusDescriptor.PUSH_UI );
+ }
+
+ @Override
+ public boolean isAccOn() {
+ return get_bool_val( StatusDescriptor.ACC_STATUS );
+ }
+
+ @Override
+ public boolean isUserInteracted() {
+ return get_bool_val( StatusDescriptor.USER_INTERACTED );
+ }
+
+ private boolean get_bool_val( StatusDescriptor descriptor ) {
+ Boolean val = mStatus.get( descriptor );
+ return val == null ? false : val;
+ }
+
+ @Override
+ public void setVoiceUIShow( String tag, boolean show ) {
+ mStatus.put( StatusDescriptor.VOICE_UI, show );
+ invokeStatusChangedListener( StatusDescriptor.VOICE_UI, show );
+ recorderStatusModifier( tag, StatusDescriptor.VOICE_UI );
+ }
+
+ @Override
+ public void setADASUIShow( String tag, boolean show ) {
+ mStatus.put( StatusDescriptor.ADAS_UI, show );
+ invokeStatusChangedListener( StatusDescriptor.ADAS_UI, show );
+ recorderStatusModifier( tag, StatusDescriptor.ADAS_UI );
+ }
+
+ @Override
+ public void setV2XUIShow( String tag, boolean show ) {
+ mStatus.put( StatusDescriptor.V2X_UI, show );
+ invokeStatusChangedListener( StatusDescriptor.V2X_UI, show );
+ recorderStatusModifier( tag, StatusDescriptor.V2X_UI );
+ }
+
+ @Override
+ public void setPushUIShow( String tag, boolean show ) {
+ mStatus.put( StatusDescriptor.PUSH_UI, show );
+ invokeStatusChangedListener( StatusDescriptor.PUSH_UI, show );
+ recorderStatusModifier( tag, StatusDescriptor.PUSH_UI );
+ }
+
+ @Override
+ public void setAccStatus( String tag, boolean isOn ) {
+ mStatus.put( StatusDescriptor.ACC_STATUS, isOn );
+ invokeStatusChangedListener( StatusDescriptor.ACC_STATUS, isOn );
+ recorderStatusModifier( tag, StatusDescriptor.ACC_STATUS );
+ }
+
+ @Override
+ public void setUserInteractionStatus( String tag, boolean interrupt, boolean callback ) {
+ mStatus.put( StatusDescriptor.USER_INTERACTED, interrupt );
+ if ( callback ) {
+ invokeStatusChangedListener( StatusDescriptor.USER_INTERACTED, interrupt );
+ }
+ recorderStatusModifier( tag, StatusDescriptor.USER_INTERACTED );
+ }
+
+ private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) {
+ if ( mListeners.containsKey( descriptor ) ) {
+ Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();
+ while ( iterator.hasNext() ) {
+ IMogoStatusChangedListener listener = iterator.next();
+ if ( listener != null ) {
+ listener.onStatusChanged( descriptor, status );
+ }
+ }
+ }
+ }
+
+ private void recorderStatusModifier( String tag, StatusDescriptor descriptor ) {
+ mModifier.put( descriptor, tag );
+ }
+
+ @Override
+ public void registerStatusChangedListener( String tag, StatusDescriptor descriptor, IMogoStatusChangedListener listeners ) {
+ if ( listeners == null || descriptor == null ) {
+ return;
+ }
+ if ( !mListeners.containsKey( descriptor ) ) {
+ mListeners.put( descriptor, new ArrayList<>() );
+ }
+ mListeners.get( descriptor ).add( listeners );
+ }
+
+ @Override
+ public void unregisterStatusChangedListener( String tag, StatusDescriptor descriptor, IMogoStatusChangedListener listener ) {
+ if ( mListeners.get( descriptor ) != null ) {
+ mListeners.get( descriptor ).remove( listener );
+ }
+ }
+
+ @Override
+ public void init( Context context ) {
+ }
+}
diff --git a/settings.gradle b/settings.gradle
index 67ad407758..d98d79d1a8 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -9,11 +9,11 @@ include ':modules:mogo-module-map'
include ':modules:mogo-module-common'
include ':modules:mogo-module-main'
include ':modules:mogo-module-navi'
-include ':demo:demo-module-map'
-include ':demo:demo-module-map2'
-include ':demo:mogo-module-tanlu'
+include ':modules:mogo-module-tanlu'
+include ':modules:mogo-module-service'
include ':libraries:map-amap'
//include ':libraries:map-baidu'
include ':libraries:mogo-map-api'
include ':modules:mogo-module-apps'
+include ':modules:mogo-module-extensions'
include ':foudations:mogo-connection'
diff --git a/upload.sh b/upload.sh
index e941b47914..7fc06055a3 100755
--- a/upload.sh
+++ b/upload.sh
@@ -10,9 +10,8 @@
./gradlew :services:mogo-service:clean :services:mogo-service:uploadArchives
./gradlew :modules:mogo-module-common:clean :modules:mogo-module-common:uploadArchives
./gradlew :modules:mogo-module-map:clean :modules:mogo-module-map:uploadArchives
-./gradlew :demo:demo-module-map:clean :demo:demo-module-map:uploadArchives
-./gradlew :demo:demo-module-map2:clean :demo:demo-module-map2:uploadArchives
-./gradlew :demo:tanlu-module:clean :demo:tanlu-module:uploadArchives
+./gradlew :modules:mogo-module-tanlu:clean :modules:mogo-module-tanlu:uploadArchives
./gradlew :modules:mogo-module-apps:clean :modules:mogo-module-apps:uploadArchives
+./gradlew :modules:mogo-module-service:clean :modules:mogo-module-service:uploadArchives
+./gradlew :modules:mogo-module-extensions:clean :modules:mogo-module-service:uploadArchives
./gradlew :modules:mogo-module-main:clean :modules:mogo-module-main:uploadArchives
-./gradlew :demo:mogo-module-tanlu:clean :demo:mogo-module-tanlu:uploadArchives