Commit 022ad6460225bf3e74a402b87d43463c793a2270
Exists in
master
Merge branch 'master' of http://timesfun.net/chudinhbka/lifelog_android
Showing 8 changed files Inline Diff
- .idea/modules.xml
- app/src/main/AndroidManifest.xml
- app/src/main/java/com/dinhcv/lifelogpedometer/activity/MapFragment.java
- app/src/main/java/com/dinhcv/lifelogpedometer/activity/PedometerActivity.java
- app/src/main/java/com/dinhcv/lifelogpedometer/activity/WelcomeActivity.java
- app/src/main/res/drawable/test_selector.xml
- app/src/main/res/layout/customtab.xml
- app/src/main/res/layout/notice_list_item.xml
.idea/modules.xml
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <project version="4"> | 2 | <project version="4"> |
| 3 | <component name="ProjectModuleManager"> | 3 | <component name="ProjectModuleManager"> |
| 4 | <modules> | 4 | <modules> |
| 5 | <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> | 5 | <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> |
| 6 | <module fileurl="file://$PROJECT_DIR$/lifelog_android.iml" filepath="$PROJECT_DIR$/lifelog_android.iml" /> | 6 | <module fileurl="file://$PROJECT_DIR$/lifelog_new.iml" filepath="$PROJECT_DIR$/lifelog_new.iml" /> |
| 7 | <module fileurl="file://D:\Project\Git\lifelog_android\lifelogpedometer.iml" filepath="D:\Project\Git\lifelog_android\lifelogpedometer.iml" /> | 7 | <module fileurl="file://D:\Project\Git\lifelog_android\lifelogpedometer.iml" filepath="D:\Project\Git\lifelog_android\lifelogpedometer.iml" /> |
| 8 | </modules> | 8 | </modules> |
| 9 | </component> | 9 | </component> |
| 10 | </project> | 10 | </project> |
app/src/main/AndroidManifest.xml
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | package="com.dinhcv.lifelogpedometer"> | 3 | package="com.dinhcv.lifelogpedometer"> |
| 4 | 4 | ||
| 5 | <uses-feature | 5 | <uses-feature |
| 6 | android:name="android.hardware.sensor.stepcounter" | 6 | android:name="android.hardware.sensor.stepcounter" |
| 7 | android:required="true" /> | 7 | android:required="true" /> |
| 8 | 8 | ||
| 9 | <uses-permission android:name="android.permission.INTERNET" /> | 9 | <uses-permission android:name="android.permission.INTERNET" /> |
| 10 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | 10 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
| 11 | <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> | 11 | <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> |
| 12 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | 12 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
| 13 | <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> | 13 | <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> |
| 14 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | 14 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> |
| 15 | <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> | ||
| 15 | 16 | ||
| 16 | <application | 17 | <application |
| 17 | android:name=".LifeLogApplication" | 18 | android:name=".LifeLogApplication" |
| 18 | android:allowBackup="true" | 19 | android:allowBackup="true" |
| 19 | android:icon="@mipmap/ic_launcher" | 20 | android:icon="@mipmap/ic_launcher" |
| 20 | android:label="@string/app_name" | 21 | android:label="@string/app_name" |
| 21 | android:roundIcon="@mipmap/ic_launcher_round" | 22 | android:roundIcon="@mipmap/ic_launcher_round" |
| 22 | android:supportsRtl="true" | 23 | android:supportsRtl="true" |
| 23 | android:largeHeap="true" | 24 | android:largeHeap="true" |
| 24 | android:theme="@style/AppTheme"> | 25 | android:theme="@style/AppTheme"> |
| 25 | <meta-data | 26 | <meta-data |
| 26 | android:name="com.google.android.maps.v2.API_KEY" | 27 | android:name="com.google.android.maps.v2.API_KEY" |
| 27 | android:value="AIzaSyCDKYsvb0iDXSRm9YnQ8kh5Gzpbpzcpz4s" /> | 28 | android:value="AIzaSyCDKYsvb0iDXSRm9YnQ8kh5Gzpbpzcpz4s" /> |
| 28 | 29 | ||
| 29 | <activity | 30 | <activity |
| 30 | android:name=".activity.WelcomeActivity" | 31 | android:name=".activity.WelcomeActivity" |
| 31 | android:screenOrientation="portrait" | 32 | android:screenOrientation="portrait" |
| 32 | android:theme="@style/AppNoActionBar"> | 33 | android:theme="@style/AppNoActionBar"> |
| 33 | <intent-filter> | 34 | <intent-filter> |
| 34 | <action android:name="android.intent.action.MAIN" /> | 35 | <action android:name="android.intent.action.MAIN" /> |
| 35 | 36 | ||
| 36 | <category android:name="android.intent.category.LAUNCHER" /> | 37 | <category android:name="android.intent.category.LAUNCHER" /> |
| 37 | </intent-filter> | 38 | </intent-filter> |
| 38 | </activity> | 39 | </activity> |
| 39 | <activity | 40 | <activity |
| 40 | android:name=".activity.LoginActivity" | 41 | android:name=".activity.LoginActivity" |
| 41 | android:screenOrientation="portrait" | 42 | android:screenOrientation="portrait" |
| 42 | android:theme="@style/AppNoActionBar"/> | 43 | android:theme="@style/AppNoActionBar"/> |
| 43 | 44 | ||
| 44 | <activity | 45 | <activity |
| 45 | android:name=".activity.PedometerActivity" | 46 | android:name=".activity.PedometerActivity" |
| 46 | android:screenOrientation="portrait" | 47 | android:screenOrientation="portrait" |
| 47 | android:theme="@style/AppNoActionBar"/> | 48 | android:theme="@style/AppNoActionBar"/> |
| 48 | <activity | 49 | <activity |
| 49 | android:name=".activity.RegisterActivity" | 50 | android:name=".activity.RegisterActivity" |
| 50 | android:screenOrientation="portrait" | 51 | android:screenOrientation="portrait" |
| 51 | android:theme="@style/AppNoActionBar"/> | 52 | android:theme="@style/AppNoActionBar"/> |
| 52 | <activity | 53 | <activity |
| 53 | android:name=".activity.InputConfirmCodeActivity" | 54 | android:name=".activity.InputConfirmCodeActivity" |
| 54 | android:screenOrientation="portrait" | 55 | android:screenOrientation="portrait" |
| 55 | android:theme="@style/AppNoActionBar"/> | 56 | android:theme="@style/AppNoActionBar"/> |
| 56 | 57 | ||
| 57 | 58 | ||
| 58 | <!--<activity--> | 59 | <!--<activity--> |
| 59 | <!--android:name=".activity.HistoryFragment"--> | 60 | <!--android:name=".activity.HistoryFragment"--> |
| 60 | <!--android:screenOrientation="portrait"--> | 61 | <!--android:screenOrientation="portrait"--> |
| 61 | <!--android:theme="@style/AppNoActionBar"></activity>--> | 62 | <!--android:theme="@style/AppNoActionBar"></activity>--> |
| 62 | 63 | ||
| 63 | </application> | 64 | </application> |
| 64 | 65 | ||
| 65 | </manifest> | 66 | </manifest> |
app/src/main/java/com/dinhcv/lifelogpedometer/activity/MapFragment.java
| 1 | package com.dinhcv.lifelogpedometer.activity; | 1 | package com.dinhcv.lifelogpedometer.activity; |
| 2 | 2 | ||
| 3 | import android.Manifest; | ||
| 3 | import android.app.Activity; | 4 | import android.app.Activity; |
| 4 | import android.content.Context; | 5 | import android.content.Context; |
| 6 | import android.content.pm.PackageManager; | ||
| 7 | import android.location.Location; | ||
| 8 | import android.location.LocationListener; | ||
| 9 | import android.location.LocationManager; | ||
| 5 | import android.os.Bundle; | 10 | import android.os.Bundle; |
| 6 | import android.support.annotation.Nullable; | 11 | import android.support.annotation.Nullable; |
| 12 | import android.support.v4.app.ActivityCompat; | ||
| 13 | import android.support.v4.content.ContextCompat; | ||
| 7 | import android.support.v4.app.Fragment; | 14 | import android.support.v4.app.Fragment; |
| 8 | import android.util.Log; | 15 | import android.util.Log; |
| 9 | import android.view.LayoutInflater; | 16 | import android.view.LayoutInflater; |
| 10 | import android.view.View; | 17 | import android.view.View; |
| 11 | import android.view.ViewGroup; | 18 | import android.view.ViewGroup; |
| 12 | 19 | ||
| 13 | import com.dinhcv.lifelogpedometer.R; | 20 | import com.dinhcv.lifelogpedometer.R; |
| 21 | import com.google.android.gms.maps.CameraUpdateFactory; | ||
| 14 | import com.google.android.gms.maps.GoogleMap; | 22 | import com.google.android.gms.maps.GoogleMap; |
| 15 | import com.google.android.gms.maps.OnMapReadyCallback; | 23 | import com.google.android.gms.maps.OnMapReadyCallback; |
| 24 | import com.google.android.gms.maps.SupportMapFragment; | ||
| 25 | import com.google.android.gms.maps.model.LatLng; | ||
| 26 | import com.google.android.gms.maps.model.MarkerOptions; | ||
| 27 | import com.google.android.gms.maps.model.PolylineOptions; | ||
| 16 | 28 | ||
| 29 | import static android.content.Context.LOCATION_SERVICE; | ||
| 30 | |||
| 17 | public class MapFragment extends Fragment implements SettingFragmentPresenter, OnMapReadyCallback { | 31 | public class MapFragment extends Fragment implements SettingFragmentPresenter, OnMapReadyCallback { |
| 18 | private View mRootView; | 32 | private View mRootView; |
| 33 | private PolylineOptions polylineOptions = new PolylineOptions(); | ||
| 34 | private LocationManager mLocationManager; | ||
| 35 | // The minimum distance to change Updates in meters | ||
| 36 | private static final long LOCATION_REFRESH_DISTANCE = 10; | ||
| 19 | 37 | ||
| 38 | // The minimum time between updates in milliseconds | ||
| 39 | private static final long LOCATION_REFRESH_TIME = 10000; | ||
| 40 | |||
| 41 | private double lat = 0; | ||
| 42 | private double log = 0; | ||
| 43 | |||
| 44 | private SupportMapFragment mapFragment; | ||
| 45 | private GoogleMap googleMap; | ||
| 46 | |||
| 20 | @Override | 47 | @Override |
| 21 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle | 48 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle |
| 22 | savedInstanceState) { | 49 | savedInstanceState) { |
| 23 | // Inflate the layout for this fragment | 50 | // Inflate the layout for this fragment |
| 24 | mRootView = inflater.inflate(R.layout.fragment_map, container, false); | 51 | mRootView = inflater.inflate(R.layout.fragment_map, container, false); |
| 25 | 52 | ||
| 26 | initView(mRootView); | 53 | initView(mRootView); |
| 27 | 54 | ||
| 28 | initData(); | 55 | initData(); |
| 29 | 56 | ||
| 30 | return mRootView; | 57 | return mRootView; |
| 31 | } | 58 | } |
| 32 | 59 | ||
| 33 | /** | 60 | /** |
| 34 | * init view | 61 | * init view |
| 35 | * | 62 | * |
| 36 | * @param rootView view | 63 | * @param rootView view |
| 37 | */ | 64 | */ |
| 38 | private void initView(View rootView) { | 65 | private void initView(View rootView) { |
| 66 | mapFragment = (SupportMapFragment) getChildFragmentManager() | ||
| 67 | .findFragmentById(R.id.map); | ||
| 39 | 68 | ||
| 69 | polylineOptions.color(ContextCompat.getColor(getActivity(),android.R.color.holo_red_dark)); | ||
| 70 | |||
| 40 | } | 71 | } |
| 41 | 72 | ||
| 42 | /** | 73 | /** |
| 43 | * Init data | 74 | * Init data |
| 44 | */ | 75 | */ |
| 45 | private void initData() { | 76 | private void initData() { |
| 77 | mLocationManager = (LocationManager) getActivity().getSystemService(LOCATION_SERVICE); | ||
| 46 | 78 | ||
| 79 | if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { | ||
| 80 | return; | ||
| 81 | } | ||
| 82 | mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME, | ||
| 83 | LOCATION_REFRESH_DISTANCE, mLocationListener); | ||
| 47 | } | 84 | } |
| 48 | 85 | ||
| 86 | private final LocationListener mLocationListener = new LocationListener() { | ||
| 87 | @Override | ||
| 88 | public void onLocationChanged(final Location location) { | ||
| 89 | //your code here | ||
| 90 | lat = location.getLatitude(); | ||
| 91 | log = location.getLongitude(); | ||
| 92 | polylineOptions.add(new LatLng(lat, log)); | ||
| 93 | if (googleMap!= null) { | ||
| 94 | googleMap.addPolyline(polylineOptions); | ||
| 95 | } | ||
| 96 | //update | ||
| 97 | update(); | ||
| 98 | } | ||
| 49 | 99 | ||
| 100 | @Override | ||
| 101 | public void onStatusChanged(String s, int i, Bundle bundle) { | ||
| 102 | |||
| 103 | } | ||
| 104 | |||
| 105 | @Override | ||
| 106 | public void onProviderEnabled(String s) { | ||
| 107 | |||
| 108 | } | ||
| 109 | |||
| 110 | @Override | ||
| 111 | public void onProviderDisabled(String s) { | ||
| 112 | |||
| 113 | } | ||
| 114 | }; | ||
| 115 | |||
| 116 | private void update(){ | ||
| 117 | mapFragment.getMapAsync(this); | ||
| 118 | } | ||
| 119 | |||
| 120 | private void updateLine(){ | ||
| 121 | LatLng sydney = new LatLng(-34, 151); | ||
| 122 | LatLng melbourne=new LatLng(37.813, 144.9631); | ||
| 123 | LatLng auckland=new LatLng(36.8485, 174.7633); | ||
| 124 | |||
| 125 | polylineOptions.add(new LatLng[]{sydney,melbourne,auckland}); | ||
| 126 | if (googleMap!= null) { | ||
| 127 | googleMap.addPolyline(polylineOptions); | ||
| 128 | } | ||
| 129 | } | ||
| 130 | |||
| 50 | @Override | 131 | @Override |
| 51 | public void onAttach(Context context) { | 132 | public void onAttach(Context context) { |
| 52 | super.onAttach(context); | 133 | super.onAttach(context); |
| 53 | if (context instanceof Activity) { | 134 | if (context instanceof Activity) { |
| 54 | 135 | ||
| 55 | } | 136 | } |
| 56 | } | 137 | } |
| 57 | 138 | ||
| 58 | 139 | ||
| 59 | /** | 140 | /** |
| 60 | * Save data | 141 | * Save data |
| 61 | */ | 142 | */ |
| 62 | @Override | 143 | @Override |
| 63 | public void onSaveData() { | 144 | public void onSaveData() { |
| 64 | } | 145 | } |
| 65 | 146 | ||
| 66 | @Override | 147 | @Override |
| 67 | public void onInvalidate(boolean isInit) { | 148 | public void onInvalidate(boolean isInit) { |
| 68 | initData(); | 149 | initData(); |
| 69 | } | 150 | } |
| 70 | 151 | ||
| 71 | 152 | ||
| 72 | @Override | 153 | @Override |
| 73 | public void onViewStateRestored(@Nullable Bundle savedInstanceState) { | 154 | public void onViewStateRestored(@Nullable Bundle savedInstanceState) { |
| 74 | super.onViewStateRestored(savedInstanceState); | 155 | super.onViewStateRestored(savedInstanceState); |
| 75 | 156 | ||
| 76 | initData(); | 157 | initData(); |
| 77 | } | 158 | } |
| 78 | 159 | ||
| 79 | @Override | 160 | @Override |
| 80 | public void onMapReady(GoogleMap googleMap) { | 161 | public void onMapReady(GoogleMap gm) { |
| 162 | |||
| 163 | googleMap = gm; | ||
| 164 | LatLng pos=new LatLng(lat, log); | ||
| 165 | googleMap.addMarker(new MarkerOptions() | ||
| 166 | .position(pos)); | ||
| 167 | googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(pos, 15.0f)); | ||
| 168 | |||
| 81 | Log.i("SonLT","Readdy"); | 169 | Log.i("SonLT","Readdy"); |
| 170 | |||
| 171 | //updateLine(); | ||
| 82 | } | 172 | } |
| 83 | } | 173 | } |
| 84 | 174 |
app/src/main/java/com/dinhcv/lifelogpedometer/activity/PedometerActivity.java
| 1 | package com.dinhcv.lifelogpedometer.activity; | 1 | package com.dinhcv.lifelogpedometer.activity; |
| 2 | 2 | ||
| 3 | import android.Manifest; | 3 | import android.Manifest; |
| 4 | import android.content.Context; | ||
| 4 | import android.content.Intent; | 5 | import android.content.Intent; |
| 5 | import android.os.Build; | 6 | import android.os.Build; |
| 6 | import android.os.Bundle; | 7 | import android.os.Bundle; |
| 7 | import android.support.design.widget.TabLayout; | 8 | import android.support.design.widget.TabLayout; |
| 8 | import android.support.v4.app.Fragment; | 9 | import android.support.v4.app.Fragment; |
| 9 | import android.support.v4.app.FragmentManager; | 10 | import android.support.v4.app.FragmentManager; |
| 10 | import android.support.v4.app.FragmentPagerAdapter; | 11 | import android.support.v4.app.FragmentPagerAdapter; |
| 11 | import android.support.v4.content.PermissionChecker; | 12 | import android.support.v4.content.PermissionChecker; |
| 12 | import android.support.v4.view.ViewPager; | 13 | import android.support.v4.view.ViewPager; |
| 13 | import android.support.v7.widget.PopupMenu; | 14 | import android.support.v7.widget.PopupMenu; |
| 14 | import android.support.v7.widget.Toolbar; | 15 | import android.support.v7.widget.Toolbar; |
| 15 | import android.view.Gravity; | 16 | import android.view.Gravity; |
| 17 | import android.view.LayoutInflater; | ||
| 16 | import android.view.MenuItem; | 18 | import android.view.MenuItem; |
| 17 | import android.view.View; | 19 | import android.view.View; |
| 18 | import android.view.Window; | 20 | import android.view.Window; |
| 19 | import android.view.WindowManager; | 21 | import android.view.WindowManager; |
| 20 | import android.widget.ImageView; | 22 | import android.widget.ImageView; |
| 21 | import android.widget.PopupWindow; | 23 | import android.widget.PopupWindow; |
| 24 | import android.widget.TabHost; | ||
| 22 | import android.widget.TextView; | 25 | import android.widget.TextView; |
| 23 | import android.widget.Toast; | 26 | import android.widget.Toast; |
| 24 | 27 | ||
| 25 | import com.dinhcv.lifelogpedometer.R; | 28 | import com.dinhcv.lifelogpedometer.R; |
| 26 | import com.dinhcv.lifelogpedometer.model.Shareprefer.Setting; | 29 | import com.dinhcv.lifelogpedometer.model.Shareprefer.Setting; |
| 27 | import com.dinhcv.lifelogpedometer.utils.Debug; | 30 | import com.dinhcv.lifelogpedometer.utils.Debug; |
| 28 | import com.dinhcv.lifelogpedometer.utils.Utils; | 31 | import com.dinhcv.lifelogpedometer.utils.Utils; |
| 29 | 32 | ||
| 30 | import java.util.ArrayList; | 33 | import java.util.ArrayList; |
| 31 | import java.util.List; | 34 | import java.util.List; |
| 32 | 35 | ||
| 33 | public class PedometerActivity extends ActivityBase { | 36 | public class PedometerActivity extends ActivityBase { |
| 34 | private Toolbar mToolBar; | 37 | private Toolbar mToolBar; |
| 35 | private ViewPager mViewPager; | 38 | private ViewPager mViewPager; |
| 36 | private int mCurrentTab = 0; | 39 | private int mCurrentTab = 0; |
| 37 | private TabLayout mTabLayout; | 40 | private TabLayout mTabLayout; |
| 38 | private TextView tvPageTitle; | 41 | private TextView tvPageTitle; |
| 39 | private ImageView ivHome; | 42 | private ImageView ivHome; |
| 40 | private ImageView imvMenu; | 43 | private ImageView imvMenu; |
| 41 | 44 | ||
| 42 | private TopFragment mTopFragment; | 45 | private TopFragment mTopFragment; |
| 43 | private HistoryFragment mHistoryFragment; | 46 | private HistoryFragment mHistoryFragment; |
| 44 | private SnsFragment mSnsFragment; | 47 | private SnsFragment mSnsFragment; |
| 45 | 48 | ||
| 46 | private int[] tabIcons = { | 49 | private int[] tabIcons = { |
| 47 | R.drawable.today_ic, | 50 | R.drawable.today_ic, |
| 48 | R.drawable.history_ic, | 51 | R.drawable.history_ic, |
| 49 | R.drawable.rank_ic, | 52 | R.drawable.rank_ic, |
| 50 | R.drawable.map_ic, | 53 | R.drawable.map_ic, |
| 51 | R.drawable.sns_ic | 54 | R.drawable.sns_ic |
| 52 | }; | 55 | }; |
| 53 | 56 | ||
| 54 | public enum TAB { | 57 | public enum TAB { |
| 55 | DATE_TAB(0), | 58 | DATE_TAB(0), |
| 56 | HISTORY_TAB(1), | 59 | HISTORY_TAB(1), |
| 57 | RANK_TAB(2), | 60 | RANK_TAB(2), |
| 58 | MAP_TAB(3), | 61 | MAP_TAB(3), |
| 59 | SNS_TAB(4); | 62 | SNS_TAB(4); |
| 60 | 63 | ||
| 61 | private final int index; | 64 | private final int index; |
| 62 | 65 | ||
| 63 | TAB(int index) { | 66 | TAB(int index) { |
| 64 | this.index = index; | 67 | this.index = index; |
| 65 | } | 68 | } |
| 66 | 69 | ||
| 67 | public int getValue() { | 70 | public int getValue() { |
| 68 | return index; | 71 | return index; |
| 69 | } | 72 | } |
| 70 | } | 73 | } |
| 71 | 74 | ||
| 72 | @Override | 75 | @Override |
| 73 | protected void onCreate(Bundle savedInstanceState) { | 76 | protected void onCreate(Bundle savedInstanceState) { |
| 74 | super.onCreate(savedInstanceState); | 77 | super.onCreate(savedInstanceState); |
| 75 | 78 | ||
| 76 | setContentView(R.layout.activity_pedometer); | 79 | setContentView(R.layout.activity_pedometer); |
| 77 | getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); | 80 | getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); |
| 78 | 81 | ||
| 79 | initView(); | 82 | initView(); |
| 80 | 83 | ||
| 81 | if (android.support.v4.BuildConfig.DEBUG && Build.VERSION.SDK_INT >= 23 && PermissionChecker | 84 | if (android.support.v4.BuildConfig.DEBUG && Build.VERSION.SDK_INT >= 23 && PermissionChecker |
| 82 | .checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != | 85 | .checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != |
| 83 | PermissionChecker.PERMISSION_GRANTED) { | 86 | PermissionChecker.PERMISSION_GRANTED) { |
| 84 | requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); | 87 | requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); |
| 85 | } | 88 | } |
| 86 | } | 89 | } |
| 87 | 90 | ||
| 88 | private void initView() { | 91 | private void initView() { |
| 89 | 92 | ||
| 90 | tvPageTitle = (TextView) findViewById(R.id.tv_pageTitle); | 93 | tvPageTitle = (TextView) findViewById(R.id.tv_pageTitle); |
| 91 | ivHome = (ImageView) findViewById(R.id.iv_home); | 94 | ivHome = (ImageView) findViewById(R.id.iv_home); |
| 92 | imvMenu = (ImageView) findViewById(R.id.imv_menu); | 95 | imvMenu = (ImageView) findViewById(R.id.imv_menu); |
| 93 | 96 | ||
| 94 | mViewPager = (ViewPager) findViewById(R.id.viewpager); | 97 | mViewPager = (ViewPager) findViewById(R.id.viewpager); |
| 95 | mViewPager.setOffscreenPageLimit(5); | 98 | mViewPager.setOffscreenPageLimit(5); |
| 96 | setupViewPager(mViewPager); | 99 | setupViewPager(mViewPager); |
| 97 | mTabLayout = (TabLayout) findViewById(R.id.tabs); | 100 | mTabLayout = (TabLayout) findViewById(R.id.tabs); |
| 98 | mTabLayout.setupWithViewPager(mViewPager); | 101 | mTabLayout.setupWithViewPager(mViewPager); |
| 99 | //Set tab selected | 102 | //Set tab selected |
| 100 | TabLayout.Tab tab = mTabLayout.getTabAt(mCurrentTab); | 103 | TabLayout.Tab tab = mTabLayout.getTabAt(mCurrentTab); |
| 101 | if (tab != null) { | 104 | if (tab != null) { |
| 102 | tab.select(); | 105 | tab.select(); |
| 103 | } | 106 | } |
| 107 | //mTabLayout.addTab(); | ||
| 108 | View view1 = getLayoutInflater().inflate(R.layout.customtab, null); | ||
| 109 | view1.findViewById(R.id.icon).setBackgroundResource(R.drawable.today_ic); | ||
| 110 | //mTabLayout.addTab(mTabLayout.newTab().setCustomView(view1)); | ||
| 104 | 111 | ||
| 112 | |||
| 113 | View view2 = getLayoutInflater().inflate(R.layout.customtab, null); | ||
| 114 | view2.findViewById(R.id.icon).setBackgroundResource(R.drawable.history_ic); | ||
| 115 | //mTabLayout.addTab(mTabLayout.newTab().setCustomView(view2)); | ||
| 116 | |||
| 117 | |||
| 118 | View view3 = getLayoutInflater().inflate(R.layout.customtab, null); | ||
| 119 | view3.findViewById(R.id.icon).setBackgroundResource(R.drawable.rank_ic); | ||
| 120 | //mTabLayout.addTab(mTabLayout.newTab().setCustomView(view3)); | ||
| 121 | |||
| 122 | |||
| 123 | View view4 = getLayoutInflater().inflate(R.layout.customtab, null); | ||
| 124 | view4.findViewById(R.id.icon).setBackgroundResource(R.drawable.map_ic); | ||
| 125 | //mTabLayout.addTab(mTabLayout.newTab().setCustomView(view4)); | ||
| 126 | |||
| 127 | |||
| 128 | View view5 = getLayoutInflater().inflate(R.layout.customtab, null); | ||
| 129 | view5.findViewById(R.id.icon).setBackgroundResource(R.drawable.sns_ic); | ||
| 130 | //mTabLayout.addTab(mTabLayout.newTab().setCustomView(view5)); | ||
| 131 | |||
| 132 | |||
| 133 | mTabLayout.getTabAt(0).setCustomView(view1); | ||
| 134 | mTabLayout.getTabAt(1).setCustomView(view2); | ||
| 135 | mTabLayout.getTabAt(2).setCustomView(view3); | ||
| 136 | mTabLayout.getTabAt(3).setCustomView(view4); | ||
| 137 | mTabLayout.getTabAt(4).setCustomView(view5); | ||
| 138 | |||
| 105 | changeColorStatusBar(); | 139 | changeColorStatusBar(); |
| 106 | setupTabIcons(); | 140 | //setupTabIcons(); |
| 107 | 141 | ||
| 108 | //SonLT Add | 142 | //SonLT Add |
| 109 | ivHome.setOnClickListener(new View.OnClickListener() { | 143 | ivHome.setOnClickListener(new View.OnClickListener() { |
| 110 | @Override | 144 | @Override |
| 111 | public void onClick(View v) { | 145 | public void onClick(View v) { |
| 112 | switch (mCurrentTab){ | 146 | switch (mCurrentTab){ |
| 113 | case 0: mTopFragment.clickBackToHome(); break; | 147 | case 0: mTopFragment.clickBackToHome(); break; |
| 114 | case 1: mHistoryFragment.clickBackToHome(); break; | 148 | case 1: mHistoryFragment.clickBackToHome(); break; |
| 115 | case 4: mSnsFragment.handleToolbarClick(0); break; | 149 | case 4: mSnsFragment.handleToolbarClick(0); break; |
| 116 | default: break; | 150 | default: break; |
| 117 | } | 151 | } |
| 118 | } | 152 | } |
| 119 | }); | 153 | }); |
| 120 | 154 | ||
| 121 | imvMenu.setOnClickListener(new View.OnClickListener() { | 155 | imvMenu.setOnClickListener(new View.OnClickListener() { |
| 122 | @Override | 156 | @Override |
| 123 | public void onClick(View v) { | 157 | public void onClick(View v) { |
| 124 | //Creating the instance of PopupMenu | 158 | //Creating the instance of PopupMenu |
| 125 | PopupMenu popup = new PopupMenu(PedometerActivity.this, imvMenu); | 159 | PopupMenu popup = new PopupMenu(PedometerActivity.this, imvMenu); |
| 126 | //Inflating the Popup using xml file | 160 | //Inflating the Popup using xml file |
| 127 | popup.getMenuInflater().inflate(R.menu.main, popup.getMenu()); | 161 | popup.getMenuInflater().inflate(R.menu.main, popup.getMenu()); |
| 128 | 162 | ||
| 129 | //registering popup with OnMenuItemClickListener | 163 | //registering popup with OnMenuItemClickListener |
| 130 | popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { | 164 | popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { |
| 131 | public boolean onMenuItemClick(MenuItem item) { | 165 | public boolean onMenuItemClick(MenuItem item) { |
| 132 | switch (item.getItemId()){ | 166 | switch (item.getItemId()){ |
| 133 | case R.id.action_setting: | 167 | case R.id.action_setting: |
| 134 | Toast.makeText( | 168 | Toast.makeText( |
| 135 | PedometerActivity.this, | 169 | PedometerActivity.this, |
| 136 | "Have not spec : " + item.getTitle(), | 170 | "Have not spec : " + item.getTitle(), |
| 137 | Toast.LENGTH_SHORT | 171 | Toast.LENGTH_SHORT |
| 138 | ).show(); | 172 | ).show(); |
| 139 | break; | 173 | break; |
| 140 | case R.id.action_profile: | 174 | case R.id.action_profile: |
| 141 | Toast.makeText( | 175 | Toast.makeText( |
| 142 | PedometerActivity.this, | 176 | PedometerActivity.this, |
| 143 | "Have not spec : " + item.getTitle(), | 177 | "Have not spec : " + item.getTitle(), |
| 144 | Toast.LENGTH_SHORT | 178 | Toast.LENGTH_SHORT |
| 145 | ).show(); | 179 | ).show(); |
| 146 | break; | 180 | break; |
| 147 | case R.id.action_logout: | 181 | case R.id.action_logout: |
| 148 | logout(); | 182 | logout(); |
| 149 | break; | 183 | break; |
| 150 | default: | 184 | default: |
| 151 | Debug.warn("Not run here"); | 185 | Debug.warn("Not run here"); |
| 152 | break; | 186 | break; |
| 153 | } | 187 | } |
| 154 | 188 | ||
| 155 | return true; | 189 | return true; |
| 156 | } | 190 | } |
| 157 | }); | 191 | }); |
| 158 | 192 | ||
| 159 | popup.show(); //showing popup menu | 193 | popup.show(); //showing popup menu |
| 160 | } | 194 | } |
| 161 | }); //closing the setOnClickListener method | 195 | }); //closing the setOnClickListener method |
| 162 | } | 196 | } |
| 163 | 197 | ||
| 198 | public TabHost.TabSpec setIndicator(Context ctx, TabHost.TabSpec spec, int viewId, int resId, String name) { | ||
| 199 | View v = LayoutInflater.from(ctx).inflate(R.layout.customtab, null); | ||
| 200 | ImageView imgTab = (ImageView) v.findViewById(viewId); | ||
| 201 | imgTab.setImageDrawable(getResources().getDrawable(resId)); | ||
| 202 | |||
| 203 | return spec.setIndicator(v); | ||
| 204 | } | ||
| 205 | |||
| 164 | private void setupTabIcons() { | 206 | private void setupTabIcons() { |
| 165 | mTabLayout.getTabAt(0).setIcon(tabIcons[0]); | 207 | mTabLayout.getTabAt(0).setCustomView(tabIcons[0]); |
| 166 | mTabLayout.getTabAt(1).setIcon(tabIcons[1]); | 208 | mTabLayout.getTabAt(1).setIcon(tabIcons[1]); |
| 167 | mTabLayout.getTabAt(2).setIcon(tabIcons[2]); | 209 | mTabLayout.getTabAt(2).setIcon(tabIcons[2]); |
| 168 | mTabLayout.getTabAt(3).setIcon(tabIcons[3]); | 210 | mTabLayout.getTabAt(3).setIcon(tabIcons[3]); |
| 169 | mTabLayout.getTabAt(4).setIcon(tabIcons[4]); | 211 | mTabLayout.getTabAt(4).setIcon(tabIcons[4]); |
| 170 | } | 212 | } |
| 171 | 213 | ||
| 172 | 214 | ||
| 173 | private void setTabView() { | 215 | private void setTabView() { |
| 174 | 216 | ||
| 175 | for (int i = 0; i < mTabLayout.getTabCount(); i++) { | 217 | for (int i = 0; i < mTabLayout.getTabCount(); i++) { |
| 176 | TextView tv = (TextView) mTabLayout.getChildAt(0).findViewById(android.R.id.title); | 218 | TextView tv = (TextView) mTabLayout.getChildAt(0).findViewById(android.R.id.title); |
| 177 | //tv.setTextColor(Color.BLACK); | 219 | //tv.setTextColor(Color.BLACK); |
| 178 | tv.setPadding(10, 10, 10, 15); | 220 | tv.setPadding(10, 10, 10, 15); |
| 179 | tv.setTextSize((float) 20.0); | 221 | tv.setTextSize((float) 20.0); |
| 180 | //tv.setTypeface(null, Typeface.BOLD); | 222 | //tv.setTypeface(null, Typeface.BOLD); |
| 181 | //tv.setBackgroundResource(R.drawable.icon); | 223 | //tv.setBackgroundResource(R.drawable.icon); |
| 182 | tv.setHeight(100); | 224 | tv.setHeight(100); |
| 183 | tv.setWidth(100); | 225 | tv.setWidth(100); |
| 184 | } | 226 | } |
| 185 | 227 | ||
| 186 | } | 228 | } |
| 187 | 229 | ||
| 188 | private void changeColorStatusBar() { | 230 | private void changeColorStatusBar() { |
| 189 | if (android.os.Build.VERSION.SDK_INT >= 21) { | 231 | if (android.os.Build.VERSION.SDK_INT >= 21) { |
| 190 | Window window = this.getWindow(); | 232 | Window window = this.getWindow(); |
| 191 | window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); | 233 | window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); |
| 192 | window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); | 234 | window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); |
| 193 | // window.setStatusBarColor(Utils.getColorWrapper(this, R.color.white)); | 235 | // window.setStatusBarColor(Utils.getColorWrapper(this, R.color.white)); |
| 194 | } | 236 | } |
| 195 | } | 237 | } |
| 196 | 238 | ||
| 197 | // @Override | 239 | // @Override |
| 198 | // public boolean onCreateOptionsMenu(Menu menu) { | 240 | // public boolean onCreateOptionsMenu(Menu menu) { |
| 199 | // getMenuInflater().inflate(R.menu.setting_menu, menu); | 241 | // getMenuInflater().inflate(R.menu.setting_menu, menu); |
| 200 | // return true; | 242 | // return true; |
| 201 | // } | 243 | // } |
| 202 | 244 | ||
| 203 | @Override | 245 | @Override |
| 204 | public boolean onOptionsItemSelected(MenuItem item) { | 246 | public boolean onOptionsItemSelected(MenuItem item) { |
| 205 | return super.onOptionsItemSelected(item); | 247 | return super.onOptionsItemSelected(item); |
| 206 | } | 248 | } |
| 207 | 249 | ||
| 208 | /** | 250 | /** |
| 209 | * Setup pager | 251 | * Setup pager |
| 210 | * | 252 | * |
| 211 | * @param viewPager: view pager | 253 | * @param viewPager: view pager |
| 212 | */ | 254 | */ |
| 213 | private void setupViewPager(ViewPager viewPager) { | 255 | private void setupViewPager(ViewPager viewPager) { |
| 214 | ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); | 256 | ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); |
| 215 | mTopFragment = new TopFragment(); | 257 | mTopFragment = new TopFragment(); |
| 216 | adapter.addFragment(mTopFragment, getString(R.string.date)); | 258 | adapter.addFragment(mTopFragment, getString(R.string.date)); |
| 217 | mHistoryFragment = new HistoryFragment(); | 259 | mHistoryFragment = new HistoryFragment(); |
| 218 | adapter.addFragment(mHistoryFragment, getString(R.string.history)); | 260 | adapter.addFragment(mHistoryFragment, getString(R.string.history)); |
| 219 | adapter.addFragment(new RankFragment(), getString(R.string.ranking)); | 261 | adapter.addFragment(new RankFragment(), getString(R.string.ranking)); |
| 220 | adapter.addFragment(new MapFragment(), getString(R.string.map)); | 262 | adapter.addFragment(new MapFragment(), getString(R.string.map)); |
| 221 | mSnsFragment = new SnsFragment(); | 263 | mSnsFragment = new SnsFragment(); |
| 222 | adapter.addFragment(mSnsFragment, getString(R.string.sns)); | 264 | adapter.addFragment(mSnsFragment, getString(R.string.sns)); |
| 223 | viewPager.setAdapter(adapter); | 265 | viewPager.setAdapter(adapter); |
| 224 | } | 266 | } |
| 225 | 267 | ||
| 226 | /** | 268 | /** |
| 227 | * Class FragmentPagerAdapter | 269 | * Class FragmentPagerAdapter |
| 228 | */ | 270 | */ |
| 229 | class ViewPagerAdapter extends FragmentPagerAdapter { | 271 | class ViewPagerAdapter extends FragmentPagerAdapter { |
| 230 | private final List<Fragment> mFragmentList = new ArrayList<>(); | 272 | private final List<Fragment> mFragmentList = new ArrayList<>(); |
| 231 | private final List<String> mFragmentTitleList = new ArrayList<>(); | 273 | private final List<String> mFragmentTitleList = new ArrayList<>(); |
| 232 | 274 | ||
| 233 | public ViewPagerAdapter(FragmentManager manager) { | 275 | public ViewPagerAdapter(FragmentManager manager) { |
| 234 | super(manager); | 276 | super(manager); |
| 235 | } | 277 | } |
| 236 | 278 | ||
| 237 | @Override | 279 | @Override |
| 238 | public Fragment getItem(int position) { | 280 | public Fragment getItem(int position) { |
| 239 | return mFragmentList.get(position); | 281 | return mFragmentList.get(position); |
| 240 | } | 282 | } |
| 241 | 283 | ||
| 242 | @Override | 284 | @Override |
| 243 | public int getCount() { | 285 | public int getCount() { |
| 244 | return mFragmentList.size(); | 286 | return mFragmentList.size(); |
| 245 | } | 287 | } |
| 246 | 288 | ||
| 247 | private void addFragment(Fragment fragment, String title) { | 289 | private void addFragment(Fragment fragment, String title) { |
| 248 | mFragmentList.add(fragment); | 290 | mFragmentList.add(fragment); |
| 249 | mFragmentTitleList.add(title); | 291 | mFragmentTitleList.add(title); |
| 250 | } | 292 | } |
| 251 | 293 | ||
| 252 | @Override | 294 | @Override |
| 253 | public CharSequence getPageTitle(int position) { | 295 | public CharSequence getPageTitle(int position) { |
| 254 | //return mFragmentTitleList.get(position); | 296 | //return mFragmentTitleList.get(position); |
| 255 | return null; | 297 | return null; |
| 256 | } | 298 | } |
| 257 | } | 299 | } |
| 258 | 300 | ||
| 259 | @Override | 301 | @Override |
| 260 | protected void onResume() { | 302 | protected void onResume() { |
| 261 | super.onResume(); | 303 | super.onResume(); |
| 262 | mViewPager.addOnPageChangeListener(mPageChangeListener); | 304 | mViewPager.addOnPageChangeListener(mPageChangeListener); |
| 263 | } | 305 | } |
| 264 | 306 | ||
| 265 | @Override | 307 | @Override |
| 266 | protected void onPause() { | 308 | protected void onPause() { |
| 267 | super.onPause(); | 309 | super.onPause(); |
| 268 | mViewPager.removeOnPageChangeListener(mPageChangeListener); | 310 | mViewPager.removeOnPageChangeListener(mPageChangeListener); |
| 269 | } | 311 | } |
| 270 | 312 | ||
| 271 | private int mLastTab = 0; | 313 | private int mLastTab = 0; |
| 272 | private final ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager | 314 | private final ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager |
| 273 | .OnPageChangeListener | 315 | .OnPageChangeListener |
| 274 | () { | 316 | () { |
| 275 | @Override | 317 | @Override |
| 276 | public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { | 318 | public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { |
| 277 | //Nothing here | 319 | //Nothing here |
| 278 | } | 320 | } |
| 279 | 321 | ||
| 280 | @Override | 322 | @Override |
| 281 | public void onPageSelected(int position) { | 323 | public void onPageSelected(int position) { |
| 282 | ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); | 324 | ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); |
| 283 | SettingFragmentPresenter presenter = (SettingFragmentPresenter) adapter.getItem | 325 | SettingFragmentPresenter presenter = (SettingFragmentPresenter) adapter.getItem |
| 284 | (position); | 326 | (position); |
| 285 | 327 | ||
| 286 | switch (position) { | 328 | switch (position) { |
| 287 | case 4: | 329 | case 4: |
| 288 | tvPageTitle.setText(getString(R.string.sns_fragment)); | 330 | tvPageTitle.setText(getString(R.string.sns_fragment)); |
| 289 | ivHome.setVisibility(View.VISIBLE); | 331 | ivHome.setVisibility(View.VISIBLE); |
| 290 | break; | 332 | break; |
| 291 | case 1: | 333 | case 1: |
| 292 | tvPageTitle.setText(getString(R.string.today)); | 334 | tvPageTitle.setText(getString(R.string.today)); |
| 293 | ivHome.setVisibility(View.VISIBLE); | 335 | ivHome.setVisibility(View.VISIBLE); |
| 294 | break; | 336 | break; |
| 295 | 337 | ||
| 296 | case 0: | 338 | case 0: |
| 297 | tvPageTitle.setText(getString(R.string.home)); | 339 | tvPageTitle.setText(getString(R.string.home)); |
| 298 | ivHome.setVisibility(View.GONE); | 340 | ivHome.setVisibility(View.GONE); |
| 299 | break; | 341 | break; |
| 300 | 342 | ||
| 301 | default: | 343 | default: |
| 302 | tvPageTitle.setText(getString(R.string.home)); | 344 | tvPageTitle.setText(getString(R.string.home)); |
| 303 | ivHome.setVisibility(View.GONE); | 345 | ivHome.setVisibility(View.GONE); |
| 304 | break; | 346 | break; |
| 305 | } | 347 | } |
| 306 | // if (position == 1){ | 348 | // if (position == 1){ |
| 307 | // tvPageTitle.setText(getString(R.string.today)); | 349 | // tvPageTitle.setText(getString(R.string.today)); |
| 308 | // ivHome.setVisibility(View.VISIBLE); | 350 | // ivHome.setVisibility(View.VISIBLE); |
| 309 | // }else { | 351 | // }else { |
| 310 | // tvPageTitle.setText(getString(R.string.home)); | 352 | // tvPageTitle.setText(getString(R.string.home)); |
| 311 | // ivHome.setVisibility(View.GONE); | 353 | // ivHome.setVisibility(View.GONE); |
| 312 | // } | 354 | // } |
| 313 | 355 | ||
| 314 | presenter.onInvalidate(false); | 356 | presenter.onInvalidate(false); |
| 315 | mLastTab = position; | 357 | mLastTab = position; |
| 316 | mCurrentTab = position; | 358 | mCurrentTab = position; |
| 317 | } | 359 | } |
| 318 | 360 | ||
| 319 | @Override | 361 | @Override |
| 320 | public void onPageScrollStateChanged(int state) { | 362 | public void onPageScrollStateChanged(int state) { |
| 321 | //Nothing here | 363 | //Nothing here |
| 322 | if (state == ViewPager.SCROLL_STATE_SETTLING) { | 364 | if (state == ViewPager.SCROLL_STATE_SETTLING) { |
| 323 | if (mLastTab >= 0) { | 365 | if (mLastTab >= 0) { |
| 324 | ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); | 366 | ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); |
| 325 | SettingFragmentPresenter presenter = (SettingFragmentPresenter) adapter | 367 | SettingFragmentPresenter presenter = (SettingFragmentPresenter) adapter |
| 326 | .getItem(mLastTab); | 368 | .getItem(mLastTab); |
| 327 | 369 | ||
| 328 | Debug.normal("Save data in tab:" + mLastTab); | 370 | Debug.normal("Save data in tab:" + mLastTab); |
| 329 | presenter.onSaveData(); | 371 | presenter.onSaveData(); |
| 330 | } | 372 | } |
| 331 | } | 373 | } |
| 332 | } | 374 | } |
| 333 | }; | 375 | }; |
| 334 | 376 | ||
| 335 | public void setVisibleIconHome(boolean isVisible){ | 377 | public void setVisibleIconHome(boolean isVisible){ |
| 336 | if (isVisible) { | 378 | if (isVisible) { |
| 337 | ivHome.setVisibility(View.VISIBLE); | 379 | ivHome.setVisibility(View.VISIBLE); |
| 338 | }else { | 380 | }else { |
| 339 | ivHome.setVisibility(View.GONE); | 381 | ivHome.setVisibility(View.GONE); |
| 340 | } | 382 | } |
| 341 | 383 | ||
| 342 | setTitleTop(isVisible); | 384 | setTitleTop(isVisible); |
| 343 | } | 385 | } |
| 344 | 386 | ||
| 345 | public void setTitleTop(boolean isVisible){ | 387 | public void setTitleTop(boolean isVisible){ |
| 346 | if (isVisible) { | 388 | if (isVisible) { |
| 347 | tvPageTitle.setText(getString(R.string.today)); | 389 | tvPageTitle.setText(getString(R.string.today)); |
| 348 | }else { | 390 | }else { |
| 349 | tvPageTitle.setText(getString(R.string.home)); | 391 | tvPageTitle.setText(getString(R.string.home)); |
| 350 | } | 392 | } |
| 351 | } | 393 | } |
| 352 | 394 | ||
| 353 | 395 | ||
| 354 | 396 | ||
| 355 | private void logout(){ | 397 | private void logout(){ |
| 356 | // clear data | 398 | // clear data |
| 357 | Setting.clearUserIdSharepre(PedometerActivity.this); | 399 | Setting.clearUserIdSharepre(PedometerActivity.this); |
| 358 | // go to login | 400 | // go to login |
| 359 | Intent intent = new Intent(PedometerActivity.this, LoginActivity.class); | 401 | Intent intent = new Intent(PedometerActivity.this, LoginActivity.class); |
| 360 | intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); | 402 | intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); |
| 361 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 403 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| 362 | startActivity(intent); | 404 | startActivity(intent); |
| 363 | } | 405 | } |
| 364 | 406 | ||
| 365 | } | 407 | } |
| 366 | 408 |
app/src/main/java/com/dinhcv/lifelogpedometer/activity/WelcomeActivity.java
| 1 | package com.dinhcv.lifelogpedometer.activity; | 1 | package com.dinhcv.lifelogpedometer.activity; |
| 2 | 2 | ||
| 3 | import android.Manifest; | ||
| 3 | import android.app.ProgressDialog; | 4 | import android.app.ProgressDialog; |
| 4 | import android.content.DialogInterface; | 5 | import android.content.DialogInterface; |
| 5 | import android.content.Intent; | 6 | import android.content.Intent; |
| 7 | import android.content.pm.PackageManager; | ||
| 6 | import android.net.Uri; | 8 | import android.net.Uri; |
| 9 | import android.os.Build; | ||
| 7 | import android.os.Bundle; | 10 | import android.os.Bundle; |
| 8 | import android.os.Handler; | 11 | import android.os.Handler; |
| 12 | import android.support.v4.app.ActivityCompat; | ||
| 13 | import android.support.v4.content.ContextCompat; | ||
| 9 | import android.support.v7.app.AlertDialog; | 14 | import android.support.v7.app.AlertDialog; |
| 15 | import android.widget.Toast; | ||
| 10 | 16 | ||
| 11 | import com.dinhcv.lifelogpedometer.R; | 17 | import com.dinhcv.lifelogpedometer.R; |
| 12 | import com.dinhcv.lifelogpedometer.interfaces.LLAPIManagerListener; | 18 | import com.dinhcv.lifelogpedometer.interfaces.LLAPIManagerListener; |
| 13 | import com.dinhcv.lifelogpedometer.model.Shareprefer.Setting; | 19 | import com.dinhcv.lifelogpedometer.model.Shareprefer.Setting; |
| 14 | import com.dinhcv.lifelogpedometer.portal.ApiServices; | 20 | import com.dinhcv.lifelogpedometer.portal.ApiServices; |
| 15 | import com.dinhcv.lifelogpedometer.portal.LLAPIManager; | 21 | import com.dinhcv.lifelogpedometer.portal.LLAPIManager; |
| 16 | import com.dinhcv.lifelogpedometer.utils.Debug; | 22 | import com.dinhcv.lifelogpedometer.utils.Debug; |
| 17 | 23 | ||
| 18 | import org.json.JSONArray; | 24 | import org.json.JSONArray; |
| 19 | import org.json.JSONObject; | 25 | import org.json.JSONObject; |
| 20 | 26 | ||
| 21 | 27 | ||
| 22 | public class WelcomeActivity extends ActivityBase implements Runnable { | 28 | public class WelcomeActivity extends ActivityBase implements Runnable { |
| 23 | private boolean isRefresh = false; | 29 | private boolean isRefresh = false; |
| 30 | private static final int PERMISSIONS_REQUEST = 999; | ||
| 31 | |||
| 24 | @Override | 32 | @Override |
| 25 | protected void onCreate(Bundle savedInstanceState) { | 33 | protected void onCreate(Bundle savedInstanceState) { |
| 26 | super.onCreate(savedInstanceState); | 34 | super.onCreate(savedInstanceState); |
| 27 | setContentView(R.layout.activity_welcome); | 35 | setContentView(R.layout.activity_welcome); |
| 28 | checkRefreshToken(); | 36 | checkPermission(); |
| 29 | } | 37 | } |
| 30 | 38 | ||
| 31 | private void checkRefreshToken(){ | 39 | private void checkRefreshToken(){ |
| 32 | int id = Setting.getUserIdSharepre(WelcomeActivity.this); | 40 | int id = Setting.getUserIdSharepre(WelcomeActivity.this); |
| 33 | Debug.normal("String id: "+ id); | 41 | Debug.normal("String id: "+ id); |
| 34 | if (id != 0){ | 42 | if (id != 0){ |
| 35 | handleRefreshToken(id); | 43 | handleRefreshToken(id); |
| 36 | }else { | 44 | }else { |
| 37 | refeshDone(); | 45 | refeshDone(); |
| 38 | } | 46 | } |
| 39 | } | 47 | } |
| 40 | 48 | ||
| 41 | 49 | ||
| 42 | private void handleRefreshToken(int id) { | 50 | private void handleRefreshToken(int id) { |
| 43 | 51 | ||
| 44 | ApiServices.refreshToken(WelcomeActivity.this, id, new LLAPIManagerListener() { | 52 | ApiServices.refreshToken(WelcomeActivity.this, id, new LLAPIManagerListener() { |
| 45 | @Override | 53 | @Override |
| 46 | public void onError(Error error) { | 54 | public void onError(Error error) { |
| 47 | Debug.error("Version JSON result: ERROR " + error); | 55 | Debug.error("Version JSON result: ERROR " + error); |
| 48 | String err = getResources().getString(R.string.login_error); | 56 | String err = getResources().getString(R.string.login_error); |
| 49 | isRefresh = false; | 57 | isRefresh = false; |
| 50 | refeshDone(); | 58 | refeshDone(); |
| 51 | } | 59 | } |
| 52 | 60 | ||
| 53 | @Override | 61 | @Override |
| 54 | public void onSuccess(String json) { | 62 | public void onSuccess(String json) { |
| 55 | Debug.warn("Version JSON result: " + json.toString()); | 63 | Debug.warn("Version JSON result: " + json.toString()); |
| 56 | isRefresh = true; | 64 | isRefresh = true; |
| 57 | refeshDone(); | 65 | refeshDone(); |
| 58 | } | 66 | } |
| 59 | 67 | ||
| 60 | @Override | 68 | @Override |
| 61 | public void onSuccess(JSONObject object) { | 69 | public void onSuccess(JSONObject object) { |
| 62 | Debug.warn("Version JSON object result: Success"); | 70 | Debug.warn("Version JSON object result: Success"); |
| 63 | isRefresh = true; | 71 | isRefresh = true; |
| 64 | refeshDone(); | 72 | refeshDone(); |
| 65 | } | 73 | } |
| 66 | }); | 74 | }); |
| 67 | } | 75 | } |
| 68 | 76 | ||
| 69 | private void refeshDone(){ | 77 | private void refeshDone(){ |
| 70 | Handler handler = new Handler(); | 78 | Handler handler = new Handler(); |
| 71 | handler.postDelayed(WelcomeActivity.this, 2000); | 79 | handler.postDelayed(WelcomeActivity.this, 2000); |
| 72 | } | 80 | } |
| 73 | 81 | ||
| 74 | private void notifyErr(String err){ | 82 | private void notifyErr(String err){ |
| 75 | AlertDialog.Builder alertDialog = new AlertDialog.Builder(WelcomeActivity.this); | 83 | AlertDialog.Builder alertDialog = new AlertDialog.Builder(WelcomeActivity.this); |
| 76 | alertDialog.setMessage(err); | 84 | alertDialog.setMessage(err); |
| 77 | alertDialog.setCancelable(false); | 85 | alertDialog.setCancelable(false); |
| 78 | alertDialog.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { | 86 | alertDialog.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { |
| 79 | @Override | 87 | @Override |
| 80 | public void onClick(DialogInterface dialog, int which) { | 88 | public void onClick(DialogInterface dialog, int which) { |
| 81 | finish(); | 89 | finish(); |
| 82 | } | 90 | } |
| 83 | }); | 91 | }); |
| 84 | AlertDialog alert = alertDialog.create(); | 92 | AlertDialog alert = alertDialog.create(); |
| 85 | alert.show(); | 93 | alert.show(); |
| 86 | } | 94 | } |
| 87 | 95 | ||
| 88 | @Override | 96 | @Override |
| 89 | public void run() { | 97 | public void run() { |
| 90 | // go to main screen | 98 | // go to main screen |
| 91 | if ( isRefresh) { | 99 | if ( isRefresh) { |
| 92 | gotoActivity(PedometerActivity.class); | 100 | gotoActivity(PedometerActivity.class); |
| 93 | } else { | 101 | } else { |
| 94 | // Bundle bundle = new Bundle(); | 102 | // Bundle bundle = new Bundle(); |
| 95 | // bundle.putString(Const.URL, url); | 103 | // bundle.putString(Const.URL, url); |
| 96 | gotoActivity(LoginActivity.class); | 104 | gotoActivity(LoginActivity.class); |
| 97 | } | 105 | } |
| 98 | finish(); | 106 | finish(); |
| 99 | } | 107 | } |
| 100 | 108 | ||
| 101 | @Override | 109 | @Override |
| 102 | protected void onResume() { | 110 | protected void onResume() { |
| 103 | super.onResume(); | 111 | super.onResume(); |
| 112 | } | ||
| 113 | |||
| 114 | private void checkPermission() { | ||
| 115 | // Check all permission in android 6.0 | ||
| 116 | if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | ||
| 117 | if ((ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) | ||
| 118 | == PackageManager.PERMISSION_GRANTED) && (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) | ||
| 119 | == PackageManager.PERMISSION_GRANTED)) { | ||
| 120 | checkRefreshToken(); | ||
| 121 | |||
| 122 | } else { | ||
| 123 | // Requset permisson of device | ||
| 124 | if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission | ||
| 125 | .ACCESS_COARSE_LOCATION) | ||
| 126 | && ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest | ||
| 127 | .permission.ACCESS_FINE_LOCATION)) { | ||
| 128 | ActivityCompat.requestPermissions(this, | ||
| 129 | new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, | ||
| 130 | Manifest.permission.ACCESS_FINE_LOCATION}, | ||
| 131 | PERMISSIONS_REQUEST); | ||
| 132 | |||
| 133 | } else { | ||
| 134 | ActivityCompat.requestPermissions(this, | ||
| 135 | new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, | ||
| 136 | Manifest.permission.ACCESS_FINE_LOCATION}, | ||
| 137 | PERMISSIONS_REQUEST); | ||
| 138 | } | ||
| 139 | } | ||
| 140 | |||
| 141 | } else { | ||
| 142 | checkRefreshToken(); | ||
| 143 | } | ||
| 144 | } | ||
| 145 | |||
| 146 | @Override | ||
| 147 | public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] | ||
| 148 | grantResults) { | ||
| 149 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); | ||
| 150 | |||
| 151 | if (requestCode == PERMISSIONS_REQUEST) { | ||
| 152 | if (grantResults.length > 0) { | ||
| 153 | if (grantResults[0] == PackageManager.PERMISSION_GRANTED | ||
| 154 | && grantResults[1] == PackageManager.PERMISSION_GRANTED | ||
| 155 | && grantResults[2] == PackageManager.PERMISSION_GRANTED) { | ||
| 156 | checkRefreshToken(); | ||
| 157 | return; | ||
| 158 | } | ||
| 159 | } else { | ||
| 160 | Toast.makeText(this, "Permission was not granted ", Toast.LENGTH_SHORT).show(); | ||
| 161 | finish(); | ||
| 162 | } | ||
| 163 | } else { | ||
| 164 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); | ||
| 165 | } | ||
| 104 | } | 166 | } |
| 105 | } | 167 | } |
| 106 | 168 |
app/src/main/res/drawable/test_selector.xml
| File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | <selector xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| 3 | <item android:drawable="@drawable/history_ic" android:state_selected="true"/> | ||
| 4 | <item android:drawable="@drawable/today_ic"/> | ||
| 5 | </selector> |
app/src/main/res/layout/customtab.xml
| File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | android:orientation="vertical" | ||
| 4 | android:layout_width="match_parent" | ||
| 5 | android:layout_height="match_parent" | ||
| 6 | android:padding="3dp"> | ||
| 7 | |||
| 8 | <ImageView | ||
| 9 | android:layout_width="wrap_content" | ||
| 10 | android:layout_height="wrap_content" | ||
| 11 | android:adjustViewBounds="true" | ||
| 12 | android:src="@drawable/tab_ic" | ||
| 13 | android:id="@+id/icon" | ||
| 14 | android:layout_gravity="center" /> | ||
| 15 | </LinearLayout> |
app/src/main/res/layout/notice_list_item.xml
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | android:orientation="vertical" | 3 | android:orientation="vertical" |
| 4 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
| 5 | android:layout_height="wrap_content" | 5 | android:layout_height="wrap_content" |
| 6 | android:background="@color/background_main" | ||
| 7 | android:padding="4dp"> | 6 | android:padding="4dp"> |
| 8 | 7 | ||
| 9 | <TextView | 8 | <TextView |
| 10 | android:id="@+id/tv_content" | 9 | android:id="@+id/tv_content" |
| 11 | android:layout_width="match_parent" | 10 | android:layout_width="match_parent" |
| 12 | android:layout_height="wrap_content" | 11 | android:layout_height="wrap_content" |
| 13 | android:gravity="left" | 12 | android:gravity="left" |
| 14 | android:paddingLeft="20dp" | 13 | android:paddingLeft="20dp" |
| 15 | android:textColor="@color/white" | 14 | android:textColor="@color/white" |
| 16 | android:text="description" /> | 15 | android:text="description" /> |
| 17 | 16 | ||
| 18 | 17 | ||
| 19 | </LinearLayout> | 18 | </LinearLayout> |
| 20 | 19 |