diff --git a/app/build.gradle b/app/build.gradle index b67ed03..7c3c79b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.uiui.os" minSdkVersion 24 targetSdkVersion 29 - versionCode 4 - versionName "1.3" + versionCode 6 + versionName "1.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -144,7 +144,7 @@ dependencies { implementation "androidx.recyclerview:recyclerview-selection:1.1.0" implementation "androidx.viewpager2:viewpager2:1.0.0" // Java language implementation - implementation "androidx.fragment:fragment:1.3.6" + implementation "androidx.fragment:fragment:1.4.0" implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.3' @@ -159,8 +159,8 @@ dependencies { // implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' implementation "com.squareup.retrofit2:adapter-rxjava3:2.9.0" //Gson - implementation 'com.google.code.gson:gson:2.8.7' - implementation 'com.google.zxing:core:3.3.0' + implementation 'com.google.code.gson:gson:2.8.9' + implementation 'com.google.zxing:core:3.4.1' //生命周期管理 implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2' @@ -168,19 +168,19 @@ dependencies { implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2' //bindView - implementation 'com.jakewharton:butterknife:10.1.0' - annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0' + implementation 'com.jakewharton:butterknife:10.2.3' + annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' //高德地图定位 implementation 'com.amap.api:location:5.1.0' //MMKV - implementation 'com.tencent:mmkv-static:1.2.10' + implementation 'com.tencent:mmkv-static:1.2.11' //状态栏透明 - implementation 'com.gitee.zackratos:UltimateBarX:0.7.1' + implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' //指示器 implementation 'com.github.hackware1993:MagicIndicator:1.7.0' // for androidx implementation 'com.king.view:circleprogressview:1.1.2' //工具类 - implementation 'com.blankj:utilcodex:1.30.6' + implementation 'com.blankj:utilcodex:1.31.0' //aria implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aefb5bf..47e3266 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,8 +2,7 @@ - - + @@ -37,9 +36,12 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> + android:screenOrientation="sensorLandscape" /> + - + + applicationInfoList = APKUtils.getSystemApp(APPListActivity.this); + PackageManager pm = getPackageManager(); + if (null != applicationInfoList) { + List appinfoList = new ArrayList<>(); + for (ApplicationInfo applicationInfo : applicationInfoList) { + AppListInfo info = new AppListInfo( + applicationInfo.loadLabel(pm).toString(), + applicationInfo.packageName, + BitmapUtils.getIconBitmap(APPListActivity.this, applicationInfo.loadIcon(pm)) + ); + appinfoList.add(info); + } + HashMap stringIntegerHashMap = new HashMap<>(); + WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(dm); + float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) + int orientation = 0; + orientation = getResources().getConfiguration().orientation; + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 16));//top间距 + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 32));//top间距 + } else if (orientation == Configuration.ORIENTATION_PORTRAIT) { + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 50));//top间距 + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 100));//top间距 + } +// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 40));//top间距 +// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 20));//底部间距 +// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 +// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 + adapter = new APPListAdapter(APPListActivity.this); + mRecyclerView.setLayoutManager(new GridLayoutManager(APPListActivity.this, 3)); +// rv_list.addItemDecoration(new RecyclerItemDecoration(10, 10, 4)); + mRecyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mRecyclerView.setAdapter(adapter); + adapter.setAppListInfos(appinfoList); + } + + } +} diff --git a/app/src/main/java/com/uiui/os/activity/EmergencyActivity.java b/app/src/main/java/com/uiui/os/activity/EmergencyActivity.java index 8533613..3cfd656 100644 --- a/app/src/main/java/com/uiui/os/activity/EmergencyActivity.java +++ b/app/src/main/java/com/uiui/os/activity/EmergencyActivity.java @@ -22,6 +22,7 @@ import android.widget.TextView; import com.uiui.os.R; import com.uiui.os.bean.BaseResponse; import com.uiui.os.network.NetInterfaceManager; +import com.uiui.os.utils.ToastUtil; import java.util.ArrayList; import java.util.Arrays; @@ -154,6 +155,11 @@ public class EmergencyActivity extends AppCompatActivity { phoneListSet.remove(0); } }, 2000); + } else { + if (phoneListSet == null) { + ToastUtil.show("没有设置紧急联系人"); + finish(); + } } } diff --git a/app/src/main/java/com/uiui/os/activity/MainActivity.java b/app/src/main/java/com/uiui/os/activity/main/MainActivity.java similarity index 99% rename from app/src/main/java/com/uiui/os/activity/MainActivity.java rename to app/src/main/java/com/uiui/os/activity/main/MainActivity.java index 7af49bf..3bc89f8 100644 --- a/app/src/main/java/com/uiui/os/activity/MainActivity.java +++ b/app/src/main/java/com/uiui/os/activity/main/MainActivity.java @@ -1,4 +1,4 @@ -package com.uiui.os.activity; +package com.uiui.os.activity.main; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -7,7 +7,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Color; import android.os.IBinder; @@ -35,7 +34,6 @@ import com.uiui.os.fragment.AppListFragment; import com.uiui.os.fragment.BaseFragmentPagerAdapter; import com.uiui.os.fragment.CustomFragment; import com.uiui.os.network.NetInterfaceManager; -import com.uiui.os.service.MainService; import com.uiui.os.utils.APKUtils; import com.uiui.os.utils.AppUsedTimeUtils; import com.uiui.os.utils.Utils; diff --git a/app/src/main/java/com/uiui/os/activity/MainContact.java b/app/src/main/java/com/uiui/os/activity/main/MainContact.java similarity index 92% rename from app/src/main/java/com/uiui/os/activity/MainContact.java rename to app/src/main/java/com/uiui/os/activity/main/MainContact.java index 276657f..d30dc75 100644 --- a/app/src/main/java/com/uiui/os/activity/MainContact.java +++ b/app/src/main/java/com/uiui/os/activity/main/MainContact.java @@ -1,4 +1,4 @@ -package com.uiui.os.activity; +package com.uiui.os.activity.main; import com.uiui.os.base.BasePresenter; import com.uiui.os.base.BaseView; diff --git a/app/src/main/java/com/uiui/os/activity/MainPresenter.java b/app/src/main/java/com/uiui/os/activity/main/MainPresenter.java similarity index 98% rename from app/src/main/java/com/uiui/os/activity/MainPresenter.java rename to app/src/main/java/com/uiui/os/activity/main/MainPresenter.java index 193a2dd..5cb52e8 100644 --- a/app/src/main/java/com/uiui/os/activity/MainPresenter.java +++ b/app/src/main/java/com/uiui/os/activity/main/MainPresenter.java @@ -1,4 +1,4 @@ -package com.uiui.os.activity; +package com.uiui.os.activity.main; import android.content.Context; import android.util.Log; diff --git a/app/src/main/java/com/uiui/os/activity/weather/WeatherActivity.java b/app/src/main/java/com/uiui/os/activity/weather/WeatherActivity.java new file mode 100644 index 0000000..e0adc76 --- /dev/null +++ b/app/src/main/java/com/uiui/os/activity/weather/WeatherActivity.java @@ -0,0 +1,95 @@ +package com.uiui.os.activity.weather; + +import android.content.res.Resources; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.qweather.sdk.bean.weather.WeatherDailyBean; +import com.uiui.os.R; +import com.uiui.os.adapter.WeatherDayApdapter; +import com.uiui.os.base.BaseActivity; +import com.uiui.os.bean.WeatherDailyJson; +import com.uiui.os.utils.ScreenUtils; +import com.uiui.os.view.HorizontalItemDecoration; +import com.uiui.os.view.RecyclerItemDecoration; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class WeatherActivity extends BaseActivity implements WeatherContact.WeatherView { + @BindView(R.id.rv_weather) + RecyclerView rv_weather; + @BindView(R.id.tv_location) + TextView tv_location; + private WeatherPresenter mPresenter; + private WeatherDayApdapter mWeatherDayApdapter; + + @Override + public int getLayoutId() { + return R.layout.activity_weather; + } + + @Override + public void initView() { + ButterKnife.bind(this); + mPresenter = new WeatherPresenter(this); + mPresenter.attachView(this); + mPresenter.setLifecycle(lifecycleSubject); + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); + linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + Resources resources = getResources(); + rv_weather.setLayoutManager(linearLayoutManager); + rv_weather.addItemDecoration(new HorizontalItemDecoration(30, this));//10表示10dp +// rv_weather.setLayoutManager(new GridLayoutManager(this, 3)); +// rv_weather.addItemDecoration(new RecyclerItemDecoration(ScreenUtils.dp2px(resources, 10), ScreenUtils.dp2px(resources, 10), 3)); + mWeatherDayApdapter = new WeatherDayApdapter(); + rv_weather.setAdapter(mWeatherDayApdapter); + + } + + @Override + public void initData() { + mPresenter.getLocation(); + } + + @Override + public void setLocation(String location) { + tv_location.setText(location); + mPresenter.getWeatherCache(); + } + + @Override + public void setWeatherCache(WeatherDailyBean weatherCache) { + if (weatherCache != null) { + mWeatherDayApdapter.setDailyBeans(weatherCache.getDaily()); + } + mPresenter.getWeather(); + + } + + @Override + public void setWeather(WeatherDailyBean weather) { + if (weather != null) { + mWeatherDayApdapter.setDailyBeans(weather.getDaily()); + } + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mPresenter.detachView(); + } +} diff --git a/app/src/main/java/com/uiui/os/activity/weather/WeatherContact.java b/app/src/main/java/com/uiui/os/activity/weather/WeatherContact.java new file mode 100644 index 0000000..4331c33 --- /dev/null +++ b/app/src/main/java/com/uiui/os/activity/weather/WeatherContact.java @@ -0,0 +1,30 @@ +package com.uiui.os.activity.weather; + +import com.qweather.sdk.bean.weather.WeatherDailyBean; +import com.uiui.os.base.BasePresenter; +import com.uiui.os.base.BaseView; +import com.uiui.os.bean.AlarmClockData; +import com.uiui.os.bean.WeatherDailyJson; + +import java.util.List; + +public class WeatherContact { + public interface Presenter extends BasePresenter { + //获取定位缓存 + void getLocation(); + //获取天气缓存 + void getWeatherCache(); + //获取天气 + void getWeather(); + } + + public interface WeatherView extends BaseView { + //设置定位缓存 + void setLocation(String location); + //设置天气缓存 + void setWeatherCache(WeatherDailyBean weatherCache); + //设置天气 + void setWeather(WeatherDailyBean weather); + + } +} diff --git a/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java b/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java new file mode 100644 index 0000000..d0f90f5 --- /dev/null +++ b/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java @@ -0,0 +1,105 @@ +package com.uiui.os.activity.weather; + +import android.content.Context; +import android.util.Log; + +import androidx.annotation.NonNull; + +import com.amap.api.location.AMapLocation; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.qweather.sdk.bean.weather.WeatherDailyBean; +import com.qweather.sdk.view.QWeather; +import com.tencent.mmkv.MMKV; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.os.bean.AlarmClockData; +import com.uiui.os.bean.BaseResponse; +import com.uiui.os.bean.WeatherDailyJson; +import com.uiui.os.network.NetInterfaceManager; +import com.uiui.os.utils.AlarmUtils; +import com.uiui.os.utils.AmapManager; + +import java.lang.reflect.Type; +import java.util.List; + +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +/** + * MainActivity和MainService 的 Presenter + * + * @author jgy02 + */ +public class WeatherPresenter implements WeatherContact.Presenter { + private static final String TAG = WeatherPresenter.class.getSimpleName(); + private static final String WEATHER_DAILY_KEY = "WEATHER_DAILY_JSON_STRING"; + private WeatherContact.WeatherView mView; + private Context mContext; + private MMKV mMMKV = MMKV.defaultMMKV(); + + private BehaviorSubject lifecycle; + + public void setLifecycle(BehaviorSubject lifecycle) { + this.lifecycle = lifecycle; + } + + public BehaviorSubject getLifecycle() { + return lifecycle; + } + + public WeatherPresenter(Context context) { + this.mContext = context; + Log.e(TAG, "WeatherPresenter: " + context.getClass()); + } + + @Override + public void attachView(@NonNull WeatherContact.WeatherView view) { + this.mView = view; + } + + @Override + public void detachView() { + this.mView = null; + } + + + @Override + public void getLocation() { + AMapLocation aMapLocation = AmapManager.getInstance().getNowAMapLocation(); + String location = "未知"; + if (aMapLocation != null) { + location = aMapLocation.getCity() + "\t" + aMapLocation.getDistrict(); + } + mView.setLocation(location); + } + + @Override + public void getWeatherCache() { + // TODO: 2022/1/21 读取json,反序列化,排序 + String jsonString = mMMKV.decodeString(WEATHER_DAILY_KEY, ""); + Type type = new TypeToken() { + }.getType(); + WeatherDailyBean weatherDailyBean = new Gson().fromJson(jsonString, type); + mView.setWeatherCache(weatherDailyBean); + } + + @Override + public void getWeather() { + QWeather.getWeather7D(mContext, AmapManager.getInstance().getLocation(), new QWeather.OnResultWeatherDailyListener() { + @Override + public void onError(Throwable throwable) { + Log.e("getWeather", "onError: " + throwable.getMessage()); + mView.setWeather(null); + } + + @Override + public void onSuccess(WeatherDailyBean weatherDailyBean) { + String jsonString = new Gson().toJson(weatherDailyBean); + Log.e("getWeather", "onSuccess: " + jsonString); + mMMKV.encode(WEATHER_DAILY_KEY, jsonString); + mView.setWeather(weatherDailyBean); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java b/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java new file mode 100644 index 0000000..d80a832 --- /dev/null +++ b/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java @@ -0,0 +1,77 @@ +package com.uiui.os.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + + +import com.uiui.os.R; +import com.uiui.os.bean.AppListInfo; +import com.uiui.os.utils.APKUtils; + +import java.util.List; + +public class APPListAdapter extends RecyclerView.Adapter { + private Context mContext; + private List mAppListInfos; + + public APPListAdapter(Context context) { + this.mContext = context; + } + + public APPListAdapter(Context context, List list) { + this.mContext = context; + this.mAppListInfos = list; + } + + public void setAppListInfos(List listInfos) { + this.mAppListInfos = listInfos; + notifyDataSetChanged(); + } + + @NonNull + @Override + public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new APPListAdapter.holder(LayoutInflater.from(mContext).inflate(R.layout.item_app, parent, false)); + + } + + @Override + public void onBindViewHolder(@NonNull holder holder, int position) { + final AppListInfo info = mAppListInfos.get(position); + holder.icon.setImageBitmap(info.getIcon()); + holder.appname.setText(info.getAppName()); + holder.root.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + APKUtils.openApp(mContext, info.getPackageName()); + } + }); + } + + @Override + public int getItemCount() { + return mAppListInfos == null ? 0 : mAppListInfos.size(); + } + + class holder extends RecyclerView.ViewHolder { + private ImageView icon; + private TextView appname; + private LinearLayout root; + + public holder(@NonNull View itemView) { + super(itemView); + icon = itemView.findViewById(R.id.iv_icon); + appname = itemView.findViewById(R.id.tv_appname); + root = itemView.findViewById(R.id.root); + } + + } +} diff --git a/app/src/main/java/com/uiui/os/adapter/WeatherDayApdapter.java b/app/src/main/java/com/uiui/os/adapter/WeatherDayApdapter.java new file mode 100644 index 0000000..8037c3e --- /dev/null +++ b/app/src/main/java/com/uiui/os/adapter/WeatherDayApdapter.java @@ -0,0 +1,106 @@ +package com.uiui.os.adapter; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.media.Image; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.qweather.sdk.bean.weather.WeatherDailyBean; +import com.uiui.os.R; + +import java.util.List; + +public class WeatherDayApdapter extends RecyclerView.Adapter { + private static final String TAG = WeatherDayApdapter.class.getSimpleName(); + private List mDailyBeans; + private Context mContext; + + public void setDailyBeans(List dailyBeans) { + this.mDailyBeans = dailyBeans; + notifyDataSetChanged(); + } + + @NonNull + @Override + public WeatherHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new WeatherHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_weather, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull WeatherHolder holder, int position) { + WeatherDailyBean.DailyBean dailyBean = mDailyBeans.get(position); + String dateString; + switch (position) { + case 0: + dateString = "今天"; + break; + case 1: + dateString = "明天"; + break; + case 2: + dateString = "后天"; + break; + default: + dateString = dailyBean.getFxDate(); + } + holder.tv_date.setText(dateString); + holder.tv_temp.setText(dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "℃"); + holder.tv_weather.setText(dailyBean.getTextDay()); + String iconDay = dailyBean.getIconDay(); + switch (iconDay) { + case "100": + case "150": + holder.iv_bg.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun)); + break; + case "102": + case "152": + holder.iv_bg.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sunny)); + break; + default: + holder.iv_bg.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.background_weather_rain)); + } + holder.iv_weather.setImageDrawable(getWeatherDrawable(iconDay)); + } + + private Drawable getWeatherDrawable(String iconName) { + int resID = mContext.getResources().getIdentifier("he" + iconName, "drawable", "com.uiui.os"); + if (resID == 0) { + Log.e(TAG, "getView: not found src : " + iconName); + return mContext.getResources().getDrawable(R.drawable.he100); + } else { + return mContext.getResources().getDrawable(resID); + } + } + + @Override + public int getItemCount() { + return mDailyBeans == null ? 0 : mDailyBeans.size(); + } + + static class WeatherHolder extends RecyclerView.ViewHolder { + TextView tv_date; + ImageView iv_weather; + ImageView iv_bg; + TextView tv_weather; + TextView tv_temp; + + public WeatherHolder(@NonNull View itemView) { + super(itemView); + tv_date = itemView.findViewById(R.id.tv_date); + iv_weather = itemView.findViewById(R.id.iv_weather); + iv_bg = itemView.findViewById(R.id.iv_bg); + tv_weather = itemView.findViewById(R.id.tv_weather); + tv_temp = itemView.findViewById(R.id.tv_temp); + } + } +} diff --git a/app/src/main/java/com/uiui/os/bean/AppListInfo.java b/app/src/main/java/com/uiui/os/bean/AppListInfo.java new file mode 100644 index 0000000..c7278a8 --- /dev/null +++ b/app/src/main/java/com/uiui/os/bean/AppListInfo.java @@ -0,0 +1,41 @@ +package com.uiui.os.bean; + +import android.graphics.Bitmap; + +import java.io.Serializable; + +public class AppListInfo implements Serializable { + String appName; + String packageName; + Bitmap icon; + + public AppListInfo(String appName, String packageName, Bitmap icon) { + this.appName = appName; + this.packageName = packageName; + this.icon = icon; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public Bitmap getIcon() { + return icon; + } + + public void setIcon(Bitmap icon) { + this.icon = icon; + } +} diff --git a/app/src/main/java/com/uiui/os/bean/WeatherDailyJson.java b/app/src/main/java/com/uiui/os/bean/WeatherDailyJson.java new file mode 100644 index 0000000..f085925 --- /dev/null +++ b/app/src/main/java/com/uiui/os/bean/WeatherDailyJson.java @@ -0,0 +1,294 @@ +package com.uiui.os.bean; + +import com.qweather.sdk.bean.Basic; +import com.qweather.sdk.bean.Refer; +import com.qweather.sdk.bean.base.Code; + +import java.io.Serializable; +import java.util.List; + +public class WeatherDailyJson implements Serializable { + private static final long serialVersionUID = 1585791680452421396L; + + private Code code; + private Basic basic; + private List daily; + private Refer refer; + + public WeatherDailyJson() { + } + + public Refer getRefer() { + return this.refer; + } + + public void setRefer(Refer var1) { + this.refer = var1; + } + + public Code getCode() { + return this.code; + } + + public void setCode(Code var1) { + this.code = var1; + } + + public Basic getBasic() { + return this.basic; + } + + public void setBasic(Basic var1) { + this.basic = var1; + } + + public List getDaily() { + return this.daily; + } + + public void setDaily(List var1) { + this.daily = var1; + } + + public static class DailyJson { + String fxDate = ""; + String sunrise = ""; + String sunset = ""; + String moonRise = ""; + String moonSet = ""; + String moonPhase = ""; + String tempMax = ""; + String tempMin = ""; + String iconDay = ""; + String textDay = ""; + String iconNight = ""; + String textNight = ""; + String wind360Day = ""; + String windDirDay = ""; + String windScaleDay = ""; + String windSpeedDay = ""; + String wind360Night = ""; + String windDirNight = ""; + String windScaleNight = ""; + String windSpeedNight = ""; + String humidity = ""; + String precip = ""; + String pressure = ""; + String vis = ""; + String cloud = ""; + String uvIndex = ""; + + public DailyJson() { + + } + + public String getFxDate() { + return this.fxDate; + } + + public void setFxDate(String var1) { + this.fxDate = var1; + } + + public String getSunrise() { + return this.sunrise; + } + + public void setSunrise(String var1) { + this.sunrise = var1; + } + + public String getSunset() { + return this.sunset; + } + + public void setSunset(String var1) { + this.sunset = var1; + } + + public String getMoonRise() { + return this.moonRise; + } + + public void setMoonRise(String var1) { + this.moonRise = var1; + } + + public String getMoonSet() { + return this.moonSet; + } + + public void setMoonSet(String var1) { + this.moonSet = var1; + } + + public String getMoonPhase() { + return this.moonPhase; + } + + public void setMoonPhase(String var1) { + this.moonPhase = var1; + } + + public String getTempMax() { + return this.tempMax; + } + + public void setTempMax(String var1) { + this.tempMax = var1; + } + + public String getTempMin() { + return this.tempMin; + } + + public void setTempMin(String var1) { + this.tempMin = var1; + } + + public String getIconDay() { + return this.iconDay; + } + + public void setIconDay(String var1) { + this.iconDay = var1; + } + + public String getTextDay() { + return this.textDay; + } + + public void setTextDay(String var1) { + this.textDay = var1; + } + + public String getIconNight() { + return this.iconNight; + } + + public void setIconNight(String var1) { + this.iconNight = var1; + } + + public String getTextNight() { + return this.textNight; + } + + public void setTextNight(String var1) { + this.textNight = var1; + } + + public String getWind360Day() { + return this.wind360Day; + } + + public void setWind360Day(String var1) { + this.wind360Day = var1; + } + + public String getWindDirDay() { + return this.windDirDay; + } + + public void setWindDirDay(String var1) { + this.windDirDay = var1; + } + + public String getWindScaleDay() { + return this.windScaleDay; + } + + public void setWindScaleDay(String var1) { + this.windScaleDay = var1; + } + + public String getWindSpeedDay() { + return this.windSpeedDay; + } + + public void setWindSpeedDay(String var1) { + this.windSpeedDay = var1; + } + + public String getWind360Night() { + return this.wind360Night; + } + + public void setWind360Night(String var1) { + this.wind360Night = var1; + } + + public String getWindDirNight() { + return this.windDirNight; + } + + public void setWindDirNight(String var1) { + this.windDirNight = var1; + } + + public String getWindScaleNight() { + return this.windScaleNight; + } + + public void setWindScaleNight(String var1) { + this.windScaleNight = var1; + } + + public String getWindSpeedNight() { + return this.windSpeedNight; + } + + public void setWindSpeedNight(String var1) { + this.windSpeedNight = var1; + } + + public String getHumidity() { + return this.humidity; + } + + public void setHumidity(String var1) { + this.humidity = var1; + } + + public String getPrecip() { + return this.precip; + } + + public void setPrecip(String var1) { + this.precip = var1; + } + + public String getPressure() { + return this.pressure; + } + + public void setPressure(String var1) { + this.pressure = var1; + } + + public String getVis() { + return this.vis; + } + + public void setVis(String var1) { + this.vis = var1; + } + + public String getCloud() { + return this.cloud; + } + + public void setCloud(String var1) { + this.cloud = var1; + } + + public String getUvIndex() { + return this.uvIndex; + } + + public void setUvIndex(String var1) { + this.uvIndex = var1; + } + } +} + diff --git a/app/src/main/java/com/uiui/os/fragment/CustomFragment.java b/app/src/main/java/com/uiui/os/fragment/CustomFragment.java index 659468d..060dd5f 100644 --- a/app/src/main/java/com/uiui/os/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/os/fragment/CustomFragment.java @@ -6,6 +6,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ResolveInfo; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; @@ -28,7 +29,6 @@ import android.widget.ImageView; import android.widget.TextView; import com.amap.api.location.AMapLocation; -import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationListener; import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.Gson; @@ -37,19 +37,20 @@ import com.king.view.circleprogressview.CircleProgressView; import com.qweather.sdk.bean.base.Code; import com.qweather.sdk.bean.base.Lang; import com.qweather.sdk.bean.base.Unit; +import com.qweather.sdk.bean.weather.WeatherHourlyBean; import com.qweather.sdk.bean.weather.WeatherNowBean; import com.qweather.sdk.view.QWeather; import com.tencent.mmkv.MMKV; import com.uiui.os.BuildConfig; import com.uiui.os.R; +import com.uiui.os.activity.APPListActivity; import com.uiui.os.activity.EmergencyActivity; +import com.uiui.os.activity.weather.WeatherActivity; import com.uiui.os.adapter.AlarmClockAdapter; import com.uiui.os.adapter.NotificationAdapter; import com.uiui.os.adapter.SOSNnmberAdapter; import com.uiui.os.bean.AlarmClockData; import com.uiui.os.bean.AlarmItem; -import com.uiui.os.bean.BaseResponse; -import com.uiui.os.network.NetInterfaceManager; import com.uiui.os.utils.AmapManager; import com.uiui.os.utils.APKUtils; import com.uiui.os.utils.AppUtil; @@ -63,9 +64,6 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; -import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.core.Observer; -import io.reactivex.rxjava3.disposables.Disposable; /** @@ -74,6 +72,18 @@ import io.reactivex.rxjava3.disposables.Disposable; * create an instance of this fragment. */ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkStatusChangedListener { + @BindView(R.id.cl_alarm) + ConstraintLayout cl_alarm; + @BindView(R.id.cl_wifi) + ConstraintLayout cl_wifi; + @BindView(R.id.cl_sos) + ConstraintLayout cl_soso; + @BindView(R.id.cl_allapp) + ConstraintLayout cl_allapp; + @BindView(R.id.cl_weather) + ConstraintLayout cl_weather; + @BindView(R.id.cl_battery) + ConstraintLayout cl_battery; @BindView(R.id.tv_add) TextView tv_add; @BindView(R.id.tv_battery) @@ -86,24 +96,18 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt TextView tv_temp; @BindView(R.id.cpv) CircleProgressView cpv; - @BindView(R.id.cl_alarm) - ConstraintLayout cl_alarm; @BindView(R.id.iv_charging) ImageView iv_charging; - @BindView(R.id.recyclerView) - RecyclerView recyclerView; + @BindView(R.id.rv_noti) + RecyclerView rv_noti; @BindView(R.id.rv_clock) RecyclerView rv_clock; @BindView(R.id.wifi_ssid) TextView wifi_ssid; - @BindView(R.id.cl_wifi) - ConstraintLayout cl_wifi; @BindView(R.id.iv_sos) ImageView iv_sos; @BindView(R.id.rv_sos) RecyclerView rv_sos; - @BindView(R.id.cl_sos) - ConstraintLayout cl_soso; @BindView(R.id.iv_note_nodata) ImageView iv_note_nodata; @@ -116,7 +120,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private AlarmClockAdapter alarmClockAdapter; private SOSNnmberAdapter sosNnmberAdapter; private MMKV mmkv; - private Context context; + private Context mContext; private ContentResolver mCRv; // TODO: Rename parameter arguments, choose names that match @@ -265,8 +269,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt Bundle savedInstanceState) { // Inflate the layout for this fragment rootView = inflater.inflate(R.layout.fragment_custom, container, false); - context = rootView.getContext(); - mCRv = context.getContentResolver(); + mContext = rootView.getContext(); + mCRv = mContext.getContentResolver(); ButterKnife.bind(this, rootView); initView(); initData(); @@ -289,8 +293,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } }); notificationAdapter = new NotificationAdapter(); - recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); - recyclerView.setAdapter(notificationAdapter); + rv_noti.setLayoutManager(new LinearLayoutManager(getActivity())); + rv_noti.setAdapter(notificationAdapter); if (isWifiConnect()) { wifi_ssid.setText(getConnectWifiSsid()); } else { @@ -317,6 +321,29 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt getActivity().startActivity(intent); } }); + cl_allapp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + getActivity().startActivity(new Intent(getActivity(), APPListActivity.class)); + } + }); + cl_weather.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(new Intent(getActivity(), WeatherActivity.class)); + } + }); + cl_battery.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent powerUsageIntent = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY); + ResolveInfo resolveInfo = mContext.getPackageManager().resolveActivity(powerUsageIntent, 0); +// check that the Battery app exists on this device + if (resolveInfo != null) { + startActivity(powerUsageIntent); + } + } + }); setAlarm(); refreshMemory(); } @@ -359,17 +386,13 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } private void initAmap() { - AMapLocationClient aMapLocationClient = AmapManager.getInstance().getLocationClient(); - aMapLocationClient.stopLocation(); - aMapLocationClient.startLocation(); - aMapLocationClient.setLocationListener(new AMapLocationListener() { + AmapManager.getInstance().startLocation(new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { - Log.e(TAG, "onLocationChanged: " + aMapLocation); if (aMapLocation.getErrorCode() == 0) { String city = aMapLocation.getCity(); - getweather(aMapLocation.getLongitude(), aMapLocation.getLatitude()); tv_location.setText(city); + getweather(aMapLocation.getLongitude(), aMapLocation.getLatitude()); } else { } @@ -386,15 +409,16 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt List data = gson.fromJson(jsonString, type); List showData = data.subList(0, 1); notificationAdapter.setDataList(data); - recyclerView.setVisibility(View.VISIBLE); + rv_noti.setVisibility(View.VISIBLE); iv_note_nodata.setVisibility(View.GONE); } else { - recyclerView.setVisibility(View.GONE); + rv_noti.setVisibility(View.GONE); iv_note_nodata.setVisibility(View.VISIBLE); } } private void getweather(double longitude, double latitude) { + String location = longitude + "," + latitude; /** * 实况天气数据 * @param location 所查询的地区,可通过该地区名称、ID、IP和经纬度进行查询经纬度格式:经度,纬度 @@ -404,26 +428,52 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt * @param listener 网络访问结果回调 */ - QWeather.getWeatherNow(getActivity(), "" + longitude + "," + latitude, Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() { + QWeather.getWeatherNow(getActivity(), location, Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() { @Override public void onError(Throwable e) { - Log.e(TAG, "getWeather onError: " + e); + Log.e("getWeatherNow", "onError: " + e); } @Override public void onSuccess(WeatherNowBean weatherBean) { -// Log.e(TAG, "getWeather onSuccess: " + new Gson().toJson(weatherBean)); + Log.e("getWeatherNow", "onSuccess: " + new Gson().toJson(weatherBean)); //先判断返回的status是否正确,当status正确时获取数据,若status不正确,可查看status对应的Code值找到原因 if (Code.OK == weatherBean.getCode()) { WeatherNowBean.NowBaseBean now = weatherBean.getNow(); - String imageName = "he" + now.getIcon(); +// String imageName = "he" + now.getIcon(); // int resId = getResources().getIdentifier(imageName, "drawable", getActivity().getPackageName()); // iv_pic.setImageDrawable(getActivity().getDrawable(resId)); tv_temp.setText(now.getTemp() + "℃"); } else { //在此查看返回数据失败的原因 Code code = weatherBean.getCode(); - Log.e(TAG, "failed code: " + code); + Log.e("getWeatherNow", "failed code: " + code); + } + } + }); + + QWeather.getWeather24Hourly(getActivity(), location, new QWeather.OnResultWeatherHourlyListener() { + @Override + public void onError(Throwable throwable) { + Log.e("getWeather24Hourly", "onError: " + throwable); + } + + @Override + public void onSuccess(WeatherHourlyBean weatherHourlyBean) { + Log.e("getWeather24Hourly", "onSuccess: " + new Gson().toJson(weatherHourlyBean)); + if (Code.OK == weatherHourlyBean.getCode()) { + List hourly = weatherHourlyBean.getHourly(); + if (hourly != null && hourly.size() != 0) { + WeatherHourlyBean.HourlyBean now = hourly.get(0); + String imageName = "he" + now.getIcon(); + int resId = getResources().getIdentifier(imageName, "drawable", getActivity().getPackageName()); + iv_pic.setImageDrawable(getActivity().getDrawable(resId)); + tv_temp.setText(now.getTemp() + "℃"); + } + } else { + //在此查看返回数据失败的原因 + Code code = weatherHourlyBean.getCode(); + Log.e("getWeather24Hourly", "failed code: " + code); } } }); @@ -431,7 +481,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private void killBackgroundApp() { - List pkgList = APKUtils.queryFilterAppList(context); + List pkgList = APKUtils.queryFilterAppList(mContext); for (String pkg : pkgList) { if (pkg.equalsIgnoreCase(BuildConfig.APPLICATION_ID)) continue; killBackgroundProcesses(pkg); @@ -442,7 +492,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt ActivityManager activityManager; try { activityManager = (ActivityManager) - context.getSystemService(Context.ACTIVITY_SERVICE); + mContext.getSystemService(Context.ACTIVITY_SERVICE); activityManager.killBackgroundProcesses(packageName); Method forceStopPackage = activityManager.getClass() .getDeclaredMethod("forceStopPackage", String.class); @@ -457,8 +507,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } private void refreshMemory() { - long avail = AppUtil.getAvailMemory(context); - long total = AppUtil.getTotalMemory(context); + long avail = AppUtil.getAvailMemory(mContext); + long total = AppUtil.getTotalMemory(mContext); int x = (int) (((total - avail) / (double) total) * 100); cpv.setProgressColor(mShaderColors); cpv.showAnimation(0, x, 1000); diff --git a/app/src/main/java/com/uiui/os/service/MainService.java b/app/src/main/java/com/uiui/os/service/MainService.java index fbbe5ea..36ef990 100644 --- a/app/src/main/java/com/uiui/os/service/MainService.java +++ b/app/src/main/java/com/uiui/os/service/MainService.java @@ -1,13 +1,10 @@ package com.uiui.os.service; +import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.os.IBinder; import android.os.PowerManager; import android.text.TextUtils; @@ -17,11 +14,10 @@ import android.util.Log; import com.arialyy.annotations.Download; import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.task.DownloadTask; -import com.blankj.utilcode.util.ImageUtils; import com.blankj.utilcode.util.NetworkUtils; import com.uiui.os.BuildConfig; -import com.uiui.os.activity.MainContact; -import com.uiui.os.activity.MainPresenter; +import com.uiui.os.activity.main.MainContact; +import com.uiui.os.activity.main.MainPresenter; import com.uiui.os.activity.NoticeActivity; import com.uiui.os.base.BaseService; import com.uiui.os.bean.AlarmClockData; @@ -34,12 +30,8 @@ import com.uiui.os.utils.AppUsedTimeUtils; import com.uiui.os.utils.ToastUtil; import com.uiui.os.utils.Utils; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.InputStream; import java.util.List; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -58,6 +50,7 @@ import okhttp3.RequestBody; public class MainService extends BaseService implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = MainService.class.getSimpleName(); + @SuppressLint("StaticFieldLeak") public static MainPresenter mPresenter; public MainService() { diff --git a/app/src/main/java/com/uiui/os/utils/APKUtils.java b/app/src/main/java/com/uiui/os/utils/APKUtils.java index a2684cf..fd273fe 100644 --- a/app/src/main/java/com/uiui/os/utils/APKUtils.java +++ b/app/src/main/java/com/uiui/os/utils/APKUtils.java @@ -29,9 +29,71 @@ public class APKUtils { this.add("com.sprd.sprdnote"); this.add("com.android.deskclock"); this.add("com.alldocube.store"); + this.add("com.android.uiuios"); }}; + private static HashSet showPackageName = new HashSet() {{ + this.add("com.android.dialer"); + this.add("com.android.gallery3d"); + this.add("com.android.settings"); + this.add("com.android.messaging"); + this.add("com.android.camera2"); + }}; + private static String TAG = APKUtils.class.getSimpleName(); + public static ArrayList getSystemApp(Context context) { + PackageManager pm = context.getPackageManager(); + // 查询所有已经安装的应用程序 + List appInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的 + ArrayList applicationInfos = new ArrayList<>(); + + // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent + Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); + resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); + + // 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName + List resolveinfoList = pm.queryIntentActivities(resolveIntent, 0); + Set allowPackages = new HashSet(); + for (ResolveInfo resolveInfo : resolveinfoList) { + Log.i(TAG, "queryFilterAppInfo: " + resolveInfo.activityInfo.packageName); + allowPackages.add(resolveInfo.activityInfo.packageName); + } + + for (ApplicationInfo app : appInfos) { + if ((app.flags & ApplicationInfo.FLAG_SYSTEM) > 0)//通过flag排除系统应用,会将电话、短信也排除掉 + { + if (allowPackages.contains(app.packageName) && !showPackageName.contains(app.packageName)) { + applicationInfos.add(app); + } + } else { +// if(app.uid > 10000){//通过uid排除系统应用,在一些手机上效果不好 +// applicationInfos.add(app); +// } +// if (allowPackages.contains(app.packageName) && !excludePackageName.contains(app.packageName)) { +//// if (allowPackages.contains(app.packageName)) { +// applicationInfos.add(app); +// } + } + } + applicationInfos.sort(new Comparator() { + @Override + public int compare(ApplicationInfo o1, ApplicationInfo o2) { + return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(), o2.loadLabel(pm).toString()); +// return o1.loadLabel(pm).toString().compareTo(o2.loadLabel(pm).toString()); + } + }); + applicationInfos.sort(new Comparator() { + @Override + public int compare(ApplicationInfo o1, ApplicationInfo o2) { + if ((o1.flags & ApplicationInfo.FLAG_SYSTEM) <= (o2.flags & ApplicationInfo.FLAG_SYSTEM)) { + return 1; + } else { + return -1; + } + } + }); + return applicationInfos; + } public static ArrayList queryFilterAppInfo(Context context) { PackageManager pm = context.getPackageManager(); @@ -52,22 +114,25 @@ public class APKUtils { } for (ApplicationInfo app : appInfos) { -// if((app.flags & ApplicationInfo.FLAG_SYSTEM) <= 0)//通过flag排除系统应用,会将电话、短信也排除掉 -// { -// applicationInfos.add(app); -// } + if ((app.flags & ApplicationInfo.FLAG_SYSTEM) > 0)//通过flag排除系统应用,会将电话、短信也排除掉 + { + if (showPackageName.contains(app.packageName)) { + applicationInfos.add(app); + } + } else { // if(app.uid > 10000){//通过uid排除系统应用,在一些手机上效果不好 // applicationInfos.add(app); // } - if (allowPackages.contains(app.packageName) && !excludePackageName.contains(app.packageName)) { + if (allowPackages.contains(app.packageName) && !excludePackageName.contains(app.packageName)) { // if (allowPackages.contains(app.packageName)) { - applicationInfos.add(app); + applicationInfos.add(app); + } } } applicationInfos.sort(new Comparator() { @Override public int compare(ApplicationInfo o1, ApplicationInfo o2) { - return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(),o2.loadLabel(pm).toString()); + return Collator.getInstance(Locale.CHINESE).compare(o1.loadLabel(pm).toString(), o2.loadLabel(pm).toString()); // return o1.loadLabel(pm).toString().compareTo(o2.loadLabel(pm).toString()); } }); diff --git a/app/src/main/java/com/uiui/os/utils/AmapManager.java b/app/src/main/java/com/uiui/os/utils/AmapManager.java index 183fa05..88b3729 100644 --- a/app/src/main/java/com/uiui/os/utils/AmapManager.java +++ b/app/src/main/java/com/uiui/os/utils/AmapManager.java @@ -1,5 +1,6 @@ package com.uiui.os.utils; +import android.annotation.SuppressLint; import android.content.Context; import android.util.Log; @@ -7,12 +8,22 @@ import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.tencent.mmkv.MMKV; + +import java.lang.reflect.Type; public class AmapManager { + private String TAG = AmapManager.class.getSimpleName(); + private static final String AMAPLOCATION_JSON_KEY = "AMAPLOCATION_JSON_STRING"; + @SuppressLint("StaticFieldLeak") private static AmapManager sInstance; private Context mContext; - public static AMapLocationClient locationClient = null; - private String TAG = AmapManager.class.getSimpleName(); + private MMKV mMMKV = MMKV.defaultMMKV(); + + private AMapLocationClient locationClient = null; + private AMapLocation nowAMapLocation; private AmapManager(Context context) { this.mContext = context; @@ -22,7 +33,6 @@ public class AmapManager { if (sInstance == null) { sInstance = new AmapManager(context); } - } public static AmapManager getInstance() { @@ -57,7 +67,6 @@ public class AmapManager { //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 //设置定位监听 locationClient.setLocationListener(new AMapLocationListener() { - @Override public void onLocationChanged(AMapLocation aMapLocation) { //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明 @@ -75,4 +84,45 @@ public class AmapManager { locationClient.startLocation(); Log.e(TAG, "initAmap: " + "startLocation"); } + + public AMapLocation getNowAMapLocation() { + if (nowAMapLocation == null) { + String aMapLocationjson = mMMKV.decodeString(AMAPLOCATION_JSON_KEY, ""); + Type type = new TypeToken() { + }.getType(); + AMapLocation aMapLocation = new Gson().fromJson(aMapLocationjson, type); + return aMapLocation; + } + return this.nowAMapLocation; + } + + public void startLocation(AMapLocationListener aMapLocationListener) { + initAmap(); + locationClient.stopLocation(); + locationClient.startLocation(); + locationClient.setLocationListener(new AMapLocationListener() { + @Override + public void onLocationChanged(AMapLocation aMapLocation) { + Log.e(TAG, "onLocationChanged: " + aMapLocation.toStr()); + if (aMapLocation.getErrorCode() == 0) { + nowAMapLocation = aMapLocation; + mMMKV.encode(AMAPLOCATION_JSON_KEY, aMapLocation.toStr()); + } else { + mMMKV.encode(AMAPLOCATION_JSON_KEY, ""); + } + aMapLocationListener.onLocationChanged(aMapLocation); + } + }); + } + + public String getLocation() { + AMapLocation aMapLocation = getNowAMapLocation(); + if (aMapLocation == null) { + return "0,0"; + } else { + String location = aMapLocation.getLongitude() + "," + aMapLocation.getLatitude(); + Log.e(TAG, "getLocation: " + location); + return location; + } + } } diff --git a/app/src/main/java/com/uiui/os/utils/IconUtils.java b/app/src/main/java/com/uiui/os/utils/IconUtils.java index 1cb201c..5737ef0 100644 --- a/app/src/main/java/com/uiui/os/utils/IconUtils.java +++ b/app/src/main/java/com/uiui/os/utils/IconUtils.java @@ -11,12 +11,14 @@ public class IconUtils { this.add("com.android.calculator2");//计算器 this.add("com.android.calendar");//日历 this.add("com.android.camera");//相机 + this.add("com.mediatek.camera");//相机 this.add("com.android.camera2");//相机 this.add("com.android.contacts");//通讯录 this.add("com.android.deskclock");//时钟 this.add("com.android.dialer");//电话 this.add("com.android.dialer");//电话 this.add("com.android.gallery3d");//图库 + this.add("com.android.mms");//信息 this.add("com.android.mms.ui");//信息 this.add("com.android.messaging");//信息 this.add("com.android.music");//音乐 @@ -25,6 +27,7 @@ public class IconUtils { this.add("com.android.settings");//设置 this.add("com.android.soundrecorder");//录音机 this.add("com.android.stk.StkMain");//sim卡 + this.add("com.android.stk");//sim卡 this.add("com.android.vdieo");//视频 this.add("com.mediatek.filemanager");//文件管理 this.add("com.android.documentsui");//下载 @@ -40,6 +43,7 @@ public class IconUtils { this.add("com_android_calendar"); this.add("com_android_camera"); this.add("com_android_camera"); + this.add("com_android_camera"); this.add("com_android_contacts"); this.add("com_android_deskclock"); this.add("com_android_dialer"); @@ -47,12 +51,14 @@ public class IconUtils { this.add("com_android_gallery3d_app"); this.add("com_android_mms_ui"); this.add("com_android_mms_ui"); + this.add("com_android_mms_ui"); this.add("com_android_music"); this.add("com_android_providers_downloads_ui"); this.add("com_android_quicksearchbox"); this.add("com_android_settings"); this.add("com_android_soundrecorder"); this.add("com_android_stk_stkmain"); + this.add("com_android_stk_stkmain"); this.add("com_android_vdieo"); this.add("com_mediatek_filemanager"); this.add("com_mediatek_filemanager"); diff --git a/app/src/main/java/com/uiui/os/utils/ScreenUtils.java b/app/src/main/java/com/uiui/os/utils/ScreenUtils.java new file mode 100644 index 0000000..439c41e --- /dev/null +++ b/app/src/main/java/com/uiui/os/utils/ScreenUtils.java @@ -0,0 +1,32 @@ +package com.uiui.os.utils; + +import android.content.Context; +import android.content.res.Resources; + +public class ScreenUtils { + /** + * 根据手机的分辨率从 dp 的单位 转成为 px(像素) + */ + public static int dip2px(Context context, float dpValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } + + /** + * 根据手机的分辨率从 px(像素) 的单位 转成为 dp + */ + public static int px2dip(Context context, float pxValue) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (pxValue / scale + 0.5f); + } + + public static int dp2px(Resources resources, float dp) { + final float scale = resources.getDisplayMetrics().density; + return (int) (dp * scale + 0.5f); + } + + public static int sp2px(Resources resources, float sp) { + final float scale = resources.getDisplayMetrics().scaledDensity; + return (int) (sp * scale); + } +} diff --git a/app/src/main/java/com/uiui/os/view/HorizontalItemDecoration.java b/app/src/main/java/com/uiui/os/view/HorizontalItemDecoration.java new file mode 100644 index 0000000..831fca0 --- /dev/null +++ b/app/src/main/java/com/uiui/os/view/HorizontalItemDecoration.java @@ -0,0 +1,41 @@ +package com.uiui.os.view; + +import android.content.Context; +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +/** + * 定义水平方向的距离 + */ +public class HorizontalItemDecoration extends RecyclerView.ItemDecoration { + private int space;//定义2个Item之间的距离 + + public HorizontalItemDecoration(int space, Context mContext) { + this.space = dip2px(space, mContext); + } + + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { + int position = parent.getChildAdapterPosition(view); + int totalCount = parent.getAdapter().getItemCount(); + if (position == 0) {//第一个 + outRect.left = space; + outRect.right = space / 2; + } else if (position == totalCount - 1) {//最后一个 + outRect.left = space / 2; + outRect.right = space; + } else {//中间其它的 + outRect.left = space / 2; + outRect.right = space / 2; + } + } + + public int dip2px(float dpValue, Context context) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } +} + diff --git a/app/src/main/java/com/uiui/os/view/RecyclerItemDecoration.java b/app/src/main/java/com/uiui/os/view/RecyclerItemDecoration.java new file mode 100644 index 0000000..e9aa81c --- /dev/null +++ b/app/src/main/java/com/uiui/os/view/RecyclerItemDecoration.java @@ -0,0 +1,39 @@ +package com.uiui.os.view; + +import android.graphics.Rect; +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +public class RecyclerItemDecoration extends RecyclerView.ItemDecoration { + + private int itemSpaceLeft; + private int itemSpaceCenter; + private int itemNum; + + public RecyclerItemDecoration(int itemSpaceLeft, int itemSpaceCenter, int itemNum) { + this.itemSpaceLeft = itemSpaceLeft; + this.itemSpaceCenter = itemSpaceCenter; + this.itemNum = itemNum; + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + int position = parent.getResources().getDisplayMetrics().widthPixels; + //int position = parent.getChildAdapterPosition(view); + if (parent.getChildCount() > 0) { + if (position % itemNum == 0) { //最左边Item + outRect.left = itemSpaceLeft; + outRect.right = itemSpaceCenter / 3; + } else if (position % itemNum == itemNum - 1) { //最右边Item + outRect.left = itemSpaceCenter / 3; + outRect.right = itemSpaceLeft; + } else { //中间Item + outRect.left = itemSpaceCenter / 3; + outRect.right = itemSpaceCenter / 3; + } + } + } +} + + diff --git a/app/src/main/java/com/uiui/os/view/RecyclerViewSpacesItemDecoration.java b/app/src/main/java/com/uiui/os/view/RecyclerViewSpacesItemDecoration.java new file mode 100644 index 0000000..7983415 --- /dev/null +++ b/app/src/main/java/com/uiui/os/view/RecyclerViewSpacesItemDecoration.java @@ -0,0 +1,41 @@ +package com.uiui.os.view; + +import android.graphics.Rect; +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +import java.util.HashMap; + +public class RecyclerViewSpacesItemDecoration extends RecyclerView.ItemDecoration { + + private final HashMap mSpaceValueMap; + + public static final String TOP_DECORATION = "top_decoration"; + public static final String BOTTOM_DECORATION = "bottom_decoration"; + public static final String LEFT_DECORATION = "left_decoration"; + public static final String RIGHT_DECORATION = "right_decoration"; + + public RecyclerViewSpacesItemDecoration(final HashMap mSpaceValueMap) { + this.mSpaceValueMap = mSpaceValueMap; + } + + @Override + public void getItemOffsets(final Rect outRect, final View view, final RecyclerView parent, + final RecyclerView.State state) { + if (mSpaceValueMap.get(TOP_DECORATION) != null) { + outRect.top = mSpaceValueMap.get(TOP_DECORATION); + } + if (mSpaceValueMap.get(LEFT_DECORATION) != null) { + outRect.left = mSpaceValueMap.get(LEFT_DECORATION); + } + if (mSpaceValueMap.get(RIGHT_DECORATION) != null) { + outRect.right = mSpaceValueMap.get(RIGHT_DECORATION); + } + if (mSpaceValueMap.get(BOTTOM_DECORATION) != null) { + outRect.bottom = mSpaceValueMap.get(BOTTOM_DECORATION); + } + + } + +} diff --git a/app/src/main/res/drawable-hdpi/back.png b/app/src/main/res/drawable-hdpi/back.png new file mode 100644 index 0000000..1118b60 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/back.png differ diff --git a/app/src/main/res/drawable-hdpi/background_weather_rain.png b/app/src/main/res/drawable-hdpi/background_weather_rain.png new file mode 100644 index 0000000..bdec00a Binary files /dev/null and b/app/src/main/res/drawable-hdpi/background_weather_rain.png differ diff --git a/app/src/main/res/drawable-hdpi/background_weather_sun.png b/app/src/main/res/drawable-hdpi/background_weather_sun.png new file mode 100644 index 0000000..475bdb0 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/background_weather_sun.png differ diff --git a/app/src/main/res/drawable-hdpi/background_weather_sunny.png b/app/src/main/res/drawable-hdpi/background_weather_sunny.png new file mode 100644 index 0000000..6a70299 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/background_weather_sunny.png differ diff --git a/app/src/main/res/drawable-hdpi/charging.png b/app/src/main/res/drawable-hdpi/charging.png index 995e7a8..dace756 100644 Binary files a/app/src/main/res/drawable-hdpi/charging.png and b/app/src/main/res/drawable-hdpi/charging.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/close.png b/app/src/main/res/drawable-hdpi/close.png similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/close.png rename to app/src/main/res/drawable-hdpi/close.png diff --git a/app/src/main/res/drawable-xxhdpi/he100.png b/app/src/main/res/drawable-hdpi/he100.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he100.png rename to app/src/main/res/drawable-hdpi/he100.png diff --git a/app/src/main/res/drawable-xxhdpi/he101.png b/app/src/main/res/drawable-hdpi/he101.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he101.png rename to app/src/main/res/drawable-hdpi/he101.png diff --git a/app/src/main/res/drawable-xxhdpi/he102.png b/app/src/main/res/drawable-hdpi/he102.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he102.png rename to app/src/main/res/drawable-hdpi/he102.png diff --git a/app/src/main/res/drawable-xxhdpi/he103.png b/app/src/main/res/drawable-hdpi/he103.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he103.png rename to app/src/main/res/drawable-hdpi/he103.png diff --git a/app/src/main/res/drawable-xxhdpi/he104.png b/app/src/main/res/drawable-hdpi/he104.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he104.png rename to app/src/main/res/drawable-hdpi/he104.png diff --git a/app/src/main/res/drawable-xxhdpi/he150.png b/app/src/main/res/drawable-hdpi/he150.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he150.png rename to app/src/main/res/drawable-hdpi/he150.png diff --git a/app/src/main/res/drawable-xxhdpi/he153.png b/app/src/main/res/drawable-hdpi/he153.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he153.png rename to app/src/main/res/drawable-hdpi/he153.png diff --git a/app/src/main/res/drawable-xxhdpi/he154.png b/app/src/main/res/drawable-hdpi/he154.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he154.png rename to app/src/main/res/drawable-hdpi/he154.png diff --git a/app/src/main/res/drawable-xxhdpi/he300.png b/app/src/main/res/drawable-hdpi/he300.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he300.png rename to app/src/main/res/drawable-hdpi/he300.png diff --git a/app/src/main/res/drawable-xxhdpi/he301.png b/app/src/main/res/drawable-hdpi/he301.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he301.png rename to app/src/main/res/drawable-hdpi/he301.png diff --git a/app/src/main/res/drawable-xxhdpi/he302.png b/app/src/main/res/drawable-hdpi/he302.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he302.png rename to app/src/main/res/drawable-hdpi/he302.png diff --git a/app/src/main/res/drawable-xxhdpi/he303.png b/app/src/main/res/drawable-hdpi/he303.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he303.png rename to app/src/main/res/drawable-hdpi/he303.png diff --git a/app/src/main/res/drawable-xxhdpi/he304.png b/app/src/main/res/drawable-hdpi/he304.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he304.png rename to app/src/main/res/drawable-hdpi/he304.png diff --git a/app/src/main/res/drawable-xxhdpi/he305.png b/app/src/main/res/drawable-hdpi/he305.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he305.png rename to app/src/main/res/drawable-hdpi/he305.png diff --git a/app/src/main/res/drawable-xxhdpi/he306.png b/app/src/main/res/drawable-hdpi/he306.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he306.png rename to app/src/main/res/drawable-hdpi/he306.png diff --git a/app/src/main/res/drawable-xxhdpi/he307.png b/app/src/main/res/drawable-hdpi/he307.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he307.png rename to app/src/main/res/drawable-hdpi/he307.png diff --git a/app/src/main/res/drawable-xxhdpi/he308.png b/app/src/main/res/drawable-hdpi/he308.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he308.png rename to app/src/main/res/drawable-hdpi/he308.png diff --git a/app/src/main/res/drawable-xxhdpi/he309.png b/app/src/main/res/drawable-hdpi/he309.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he309.png rename to app/src/main/res/drawable-hdpi/he309.png diff --git a/app/src/main/res/drawable-xxhdpi/he310.png b/app/src/main/res/drawable-hdpi/he310.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he310.png rename to app/src/main/res/drawable-hdpi/he310.png diff --git a/app/src/main/res/drawable-xxhdpi/he311.png b/app/src/main/res/drawable-hdpi/he311.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he311.png rename to app/src/main/res/drawable-hdpi/he311.png diff --git a/app/src/main/res/drawable-xxhdpi/he312.png b/app/src/main/res/drawable-hdpi/he312.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he312.png rename to app/src/main/res/drawable-hdpi/he312.png diff --git a/app/src/main/res/drawable-xxhdpi/he313.png b/app/src/main/res/drawable-hdpi/he313.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he313.png rename to app/src/main/res/drawable-hdpi/he313.png diff --git a/app/src/main/res/drawable-xxhdpi/he314.png b/app/src/main/res/drawable-hdpi/he314.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he314.png rename to app/src/main/res/drawable-hdpi/he314.png diff --git a/app/src/main/res/drawable-xxhdpi/he315.png b/app/src/main/res/drawable-hdpi/he315.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he315.png rename to app/src/main/res/drawable-hdpi/he315.png diff --git a/app/src/main/res/drawable-xxhdpi/he316.png b/app/src/main/res/drawable-hdpi/he316.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he316.png rename to app/src/main/res/drawable-hdpi/he316.png diff --git a/app/src/main/res/drawable-xxhdpi/he317.png b/app/src/main/res/drawable-hdpi/he317.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he317.png rename to app/src/main/res/drawable-hdpi/he317.png diff --git a/app/src/main/res/drawable-xxhdpi/he318.png b/app/src/main/res/drawable-hdpi/he318.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he318.png rename to app/src/main/res/drawable-hdpi/he318.png diff --git a/app/src/main/res/drawable-xxhdpi/he350.png b/app/src/main/res/drawable-hdpi/he350.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he350.png rename to app/src/main/res/drawable-hdpi/he350.png diff --git a/app/src/main/res/drawable-xxhdpi/he351.png b/app/src/main/res/drawable-hdpi/he351.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he351.png rename to app/src/main/res/drawable-hdpi/he351.png diff --git a/app/src/main/res/drawable-xxhdpi/he399.png b/app/src/main/res/drawable-hdpi/he399.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he399.png rename to app/src/main/res/drawable-hdpi/he399.png diff --git a/app/src/main/res/drawable-xxhdpi/he400.png b/app/src/main/res/drawable-hdpi/he400.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he400.png rename to app/src/main/res/drawable-hdpi/he400.png diff --git a/app/src/main/res/drawable-xxhdpi/he401.png b/app/src/main/res/drawable-hdpi/he401.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he401.png rename to app/src/main/res/drawable-hdpi/he401.png diff --git a/app/src/main/res/drawable-xxhdpi/he402.png b/app/src/main/res/drawable-hdpi/he402.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he402.png rename to app/src/main/res/drawable-hdpi/he402.png diff --git a/app/src/main/res/drawable-xxhdpi/he403.png b/app/src/main/res/drawable-hdpi/he403.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he403.png rename to app/src/main/res/drawable-hdpi/he403.png diff --git a/app/src/main/res/drawable-xxhdpi/he404.png b/app/src/main/res/drawable-hdpi/he404.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he404.png rename to app/src/main/res/drawable-hdpi/he404.png diff --git a/app/src/main/res/drawable-xxhdpi/he405.png b/app/src/main/res/drawable-hdpi/he405.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he405.png rename to app/src/main/res/drawable-hdpi/he405.png diff --git a/app/src/main/res/drawable-xxhdpi/he406.png b/app/src/main/res/drawable-hdpi/he406.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he406.png rename to app/src/main/res/drawable-hdpi/he406.png diff --git a/app/src/main/res/drawable-xxhdpi/he407.png b/app/src/main/res/drawable-hdpi/he407.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he407.png rename to app/src/main/res/drawable-hdpi/he407.png diff --git a/app/src/main/res/drawable-xxhdpi/he408.png b/app/src/main/res/drawable-hdpi/he408.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he408.png rename to app/src/main/res/drawable-hdpi/he408.png diff --git a/app/src/main/res/drawable-xxhdpi/he409.png b/app/src/main/res/drawable-hdpi/he409.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he409.png rename to app/src/main/res/drawable-hdpi/he409.png diff --git a/app/src/main/res/drawable-xxhdpi/he410.png b/app/src/main/res/drawable-hdpi/he410.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he410.png rename to app/src/main/res/drawable-hdpi/he410.png diff --git a/app/src/main/res/drawable-xxhdpi/he456.png b/app/src/main/res/drawable-hdpi/he456.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he456.png rename to app/src/main/res/drawable-hdpi/he456.png diff --git a/app/src/main/res/drawable-xxhdpi/he457.png b/app/src/main/res/drawable-hdpi/he457.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he457.png rename to app/src/main/res/drawable-hdpi/he457.png diff --git a/app/src/main/res/drawable-xxhdpi/he499.png b/app/src/main/res/drawable-hdpi/he499.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he499.png rename to app/src/main/res/drawable-hdpi/he499.png diff --git a/app/src/main/res/drawable-xxhdpi/he500.png b/app/src/main/res/drawable-hdpi/he500.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he500.png rename to app/src/main/res/drawable-hdpi/he500.png diff --git a/app/src/main/res/drawable-xxhdpi/he501.png b/app/src/main/res/drawable-hdpi/he501.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he501.png rename to app/src/main/res/drawable-hdpi/he501.png diff --git a/app/src/main/res/drawable-xxhdpi/he502.png b/app/src/main/res/drawable-hdpi/he502.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he502.png rename to app/src/main/res/drawable-hdpi/he502.png diff --git a/app/src/main/res/drawable-xxhdpi/he503.png b/app/src/main/res/drawable-hdpi/he503.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he503.png rename to app/src/main/res/drawable-hdpi/he503.png diff --git a/app/src/main/res/drawable-xxhdpi/he504.png b/app/src/main/res/drawable-hdpi/he504.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he504.png rename to app/src/main/res/drawable-hdpi/he504.png diff --git a/app/src/main/res/drawable-xxhdpi/he507.png b/app/src/main/res/drawable-hdpi/he507.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he507.png rename to app/src/main/res/drawable-hdpi/he507.png diff --git a/app/src/main/res/drawable-xxhdpi/he508.png b/app/src/main/res/drawable-hdpi/he508.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he508.png rename to app/src/main/res/drawable-hdpi/he508.png diff --git a/app/src/main/res/drawable-xxhdpi/he509.png b/app/src/main/res/drawable-hdpi/he509.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he509.png rename to app/src/main/res/drawable-hdpi/he509.png diff --git a/app/src/main/res/drawable-xxhdpi/he510.png b/app/src/main/res/drawable-hdpi/he510.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he510.png rename to app/src/main/res/drawable-hdpi/he510.png diff --git a/app/src/main/res/drawable-xxhdpi/he511.png b/app/src/main/res/drawable-hdpi/he511.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he511.png rename to app/src/main/res/drawable-hdpi/he511.png diff --git a/app/src/main/res/drawable-xxhdpi/he512.png b/app/src/main/res/drawable-hdpi/he512.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he512.png rename to app/src/main/res/drawable-hdpi/he512.png diff --git a/app/src/main/res/drawable-xxhdpi/he513.png b/app/src/main/res/drawable-hdpi/he513.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he513.png rename to app/src/main/res/drawable-hdpi/he513.png diff --git a/app/src/main/res/drawable-xxhdpi/he514.png b/app/src/main/res/drawable-hdpi/he514.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he514.png rename to app/src/main/res/drawable-hdpi/he514.png diff --git a/app/src/main/res/drawable-xxhdpi/he515.png b/app/src/main/res/drawable-hdpi/he515.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he515.png rename to app/src/main/res/drawable-hdpi/he515.png diff --git a/app/src/main/res/drawable-xxhdpi/he900.png b/app/src/main/res/drawable-hdpi/he900.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he900.png rename to app/src/main/res/drawable-hdpi/he900.png diff --git a/app/src/main/res/drawable-xxhdpi/he901.png b/app/src/main/res/drawable-hdpi/he901.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he901.png rename to app/src/main/res/drawable-hdpi/he901.png diff --git a/app/src/main/res/drawable-xxhdpi/he999.png b/app/src/main/res/drawable-hdpi/he999.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/he999.png rename to app/src/main/res/drawable-hdpi/he999.png diff --git a/app/src/main/res/drawable-xhdpi/ic_uninstall.png b/app/src/main/res/drawable-hdpi/ic_uninstall.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_uninstall.png rename to app/src/main/res/drawable-hdpi/ic_uninstall.png diff --git a/app/src/main/res/drawable-hdpi/icon_location.png b/app/src/main/res/drawable-hdpi/icon_location.png new file mode 100644 index 0000000..c2ec430 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_location.png differ diff --git a/app/src/main/res/drawable-hdpi/sos_icon.png b/app/src/main/res/drawable-hdpi/sos_icon.png new file mode 100644 index 0000000..b3b2e9e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/sos_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/systemapp_icon.png b/app/src/main/res/drawable-hdpi/systemapp_icon.png new file mode 100644 index 0000000..d1bb3ba Binary files /dev/null and b/app/src/main/res/drawable-hdpi/systemapp_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/voice.png b/app/src/main/res/drawable-hdpi/voice.png index 0e8777f..7ee7cbf 100644 Binary files a/app/src/main/res/drawable-hdpi/voice.png and b/app/src/main/res/drawable-hdpi/voice.png differ diff --git a/app/src/main/res/drawable-xhdpi/he100.png b/app/src/main/res/drawable-xhdpi/he100.png index e06d8fd..faf04c8 100644 Binary files a/app/src/main/res/drawable-xhdpi/he100.png and b/app/src/main/res/drawable-xhdpi/he100.png differ diff --git a/app/src/main/res/drawable-xhdpi/he101.png b/app/src/main/res/drawable-xhdpi/he101.png index 0847a52..17841e4 100644 Binary files a/app/src/main/res/drawable-xhdpi/he101.png and b/app/src/main/res/drawable-xhdpi/he101.png differ diff --git a/app/src/main/res/drawable-xhdpi/he102.png b/app/src/main/res/drawable-xhdpi/he102.png index 740ea6b..51bc5a8 100644 Binary files a/app/src/main/res/drawable-xhdpi/he102.png and b/app/src/main/res/drawable-xhdpi/he102.png differ diff --git a/app/src/main/res/drawable-xhdpi/he103.png b/app/src/main/res/drawable-xhdpi/he103.png index ca194d6..5fd9957 100644 Binary files a/app/src/main/res/drawable-xhdpi/he103.png and b/app/src/main/res/drawable-xhdpi/he103.png differ diff --git a/app/src/main/res/drawable-xhdpi/he104.png b/app/src/main/res/drawable-xhdpi/he104.png index 2adca0e..9628fbd 100644 Binary files a/app/src/main/res/drawable-xhdpi/he104.png and b/app/src/main/res/drawable-xhdpi/he104.png differ diff --git a/app/src/main/res/drawable-xhdpi/he150.png b/app/src/main/res/drawable-xhdpi/he150.png index 5d93e20..eaee769 100644 Binary files a/app/src/main/res/drawable-xhdpi/he150.png and b/app/src/main/res/drawable-xhdpi/he150.png differ diff --git a/app/src/main/res/drawable-xhdpi/he153.png b/app/src/main/res/drawable-xhdpi/he153.png index 33bffb1..346a2c2 100644 Binary files a/app/src/main/res/drawable-xhdpi/he153.png and b/app/src/main/res/drawable-xhdpi/he153.png differ diff --git a/app/src/main/res/drawable-xhdpi/he154.png b/app/src/main/res/drawable-xhdpi/he154.png index 96a296d..358be1a 100644 Binary files a/app/src/main/res/drawable-xhdpi/he154.png and b/app/src/main/res/drawable-xhdpi/he154.png differ diff --git a/app/src/main/res/drawable-xhdpi/he300.png b/app/src/main/res/drawable-xhdpi/he300.png index 8543e30..24ba9bc 100644 Binary files a/app/src/main/res/drawable-xhdpi/he300.png and b/app/src/main/res/drawable-xhdpi/he300.png differ diff --git a/app/src/main/res/drawable-xhdpi/he301.png b/app/src/main/res/drawable-xhdpi/he301.png index 47fc1eb..ad65de8 100644 Binary files a/app/src/main/res/drawable-xhdpi/he301.png and b/app/src/main/res/drawable-xhdpi/he301.png differ diff --git a/app/src/main/res/drawable-xhdpi/he302.png b/app/src/main/res/drawable-xhdpi/he302.png index 83f312b..4a018ee 100644 Binary files a/app/src/main/res/drawable-xhdpi/he302.png and b/app/src/main/res/drawable-xhdpi/he302.png differ diff --git a/app/src/main/res/drawable-xhdpi/he303.png b/app/src/main/res/drawable-xhdpi/he303.png index 88bcb84..aa8d273 100644 Binary files a/app/src/main/res/drawable-xhdpi/he303.png and b/app/src/main/res/drawable-xhdpi/he303.png differ diff --git a/app/src/main/res/drawable-xhdpi/he304.png b/app/src/main/res/drawable-xhdpi/he304.png index 6c63872..3155a49 100644 Binary files a/app/src/main/res/drawable-xhdpi/he304.png and b/app/src/main/res/drawable-xhdpi/he304.png differ diff --git a/app/src/main/res/drawable-xhdpi/he305.png b/app/src/main/res/drawable-xhdpi/he305.png index f8a16f9..f76f6e3 100644 Binary files a/app/src/main/res/drawable-xhdpi/he305.png and b/app/src/main/res/drawable-xhdpi/he305.png differ diff --git a/app/src/main/res/drawable-xhdpi/he306.png b/app/src/main/res/drawable-xhdpi/he306.png index deeadf6..ffb6804 100644 Binary files a/app/src/main/res/drawable-xhdpi/he306.png and b/app/src/main/res/drawable-xhdpi/he306.png differ diff --git a/app/src/main/res/drawable-xhdpi/he307.png b/app/src/main/res/drawable-xhdpi/he307.png index a6b9cd0..1e33073 100644 Binary files a/app/src/main/res/drawable-xhdpi/he307.png and b/app/src/main/res/drawable-xhdpi/he307.png differ diff --git a/app/src/main/res/drawable-xhdpi/he308.png b/app/src/main/res/drawable-xhdpi/he308.png index 3cf2267..2586187 100644 Binary files a/app/src/main/res/drawable-xhdpi/he308.png and b/app/src/main/res/drawable-xhdpi/he308.png differ diff --git a/app/src/main/res/drawable-xhdpi/he309.png b/app/src/main/res/drawable-xhdpi/he309.png index 31fdba1..9beebe3 100644 Binary files a/app/src/main/res/drawable-xhdpi/he309.png and b/app/src/main/res/drawable-xhdpi/he309.png differ diff --git a/app/src/main/res/drawable-xhdpi/he310.png b/app/src/main/res/drawable-xhdpi/he310.png index 991ee2b..624b04e 100644 Binary files a/app/src/main/res/drawable-xhdpi/he310.png and b/app/src/main/res/drawable-xhdpi/he310.png differ diff --git a/app/src/main/res/drawable-xhdpi/he311.png b/app/src/main/res/drawable-xhdpi/he311.png index e237dd2..5fcc3fc 100644 Binary files a/app/src/main/res/drawable-xhdpi/he311.png and b/app/src/main/res/drawable-xhdpi/he311.png differ diff --git a/app/src/main/res/drawable-xhdpi/he312.png b/app/src/main/res/drawable-xhdpi/he312.png index 73b5843..0e93ff7 100644 Binary files a/app/src/main/res/drawable-xhdpi/he312.png and b/app/src/main/res/drawable-xhdpi/he312.png differ diff --git a/app/src/main/res/drawable-xhdpi/he313.png b/app/src/main/res/drawable-xhdpi/he313.png index 7f39836..ba783d6 100644 Binary files a/app/src/main/res/drawable-xhdpi/he313.png and b/app/src/main/res/drawable-xhdpi/he313.png differ diff --git a/app/src/main/res/drawable-xhdpi/he314.png b/app/src/main/res/drawable-xhdpi/he314.png index 007667f..9e93846 100644 Binary files a/app/src/main/res/drawable-xhdpi/he314.png and b/app/src/main/res/drawable-xhdpi/he314.png differ diff --git a/app/src/main/res/drawable-xhdpi/he315.png b/app/src/main/res/drawable-xhdpi/he315.png index bdc90fa..527e6fe 100644 Binary files a/app/src/main/res/drawable-xhdpi/he315.png and b/app/src/main/res/drawable-xhdpi/he315.png differ diff --git a/app/src/main/res/drawable-xhdpi/he316.png b/app/src/main/res/drawable-xhdpi/he316.png index a758db3..8309afb 100644 Binary files a/app/src/main/res/drawable-xhdpi/he316.png and b/app/src/main/res/drawable-xhdpi/he316.png differ diff --git a/app/src/main/res/drawable-xhdpi/he317.png b/app/src/main/res/drawable-xhdpi/he317.png index dd6fdba..2e9a702 100644 Binary files a/app/src/main/res/drawable-xhdpi/he317.png and b/app/src/main/res/drawable-xhdpi/he317.png differ diff --git a/app/src/main/res/drawable-xhdpi/he318.png b/app/src/main/res/drawable-xhdpi/he318.png index 66e81da..b99b851 100644 Binary files a/app/src/main/res/drawable-xhdpi/he318.png and b/app/src/main/res/drawable-xhdpi/he318.png differ diff --git a/app/src/main/res/drawable-xhdpi/he350.png b/app/src/main/res/drawable-xhdpi/he350.png index bb9ec1d..a9a0c52 100644 Binary files a/app/src/main/res/drawable-xhdpi/he350.png and b/app/src/main/res/drawable-xhdpi/he350.png differ diff --git a/app/src/main/res/drawable-xhdpi/he351.png b/app/src/main/res/drawable-xhdpi/he351.png index 22cf94d..f7bdda3 100644 Binary files a/app/src/main/res/drawable-xhdpi/he351.png and b/app/src/main/res/drawable-xhdpi/he351.png differ diff --git a/app/src/main/res/drawable-xhdpi/he399.png b/app/src/main/res/drawable-xhdpi/he399.png index c9f69ed..321233b 100644 Binary files a/app/src/main/res/drawable-xhdpi/he399.png and b/app/src/main/res/drawable-xhdpi/he399.png differ diff --git a/app/src/main/res/drawable-xhdpi/he400.png b/app/src/main/res/drawable-xhdpi/he400.png index 7c394d0..532879b 100644 Binary files a/app/src/main/res/drawable-xhdpi/he400.png and b/app/src/main/res/drawable-xhdpi/he400.png differ diff --git a/app/src/main/res/drawable-xhdpi/he401.png b/app/src/main/res/drawable-xhdpi/he401.png index cc515c8..4a92fc7 100644 Binary files a/app/src/main/res/drawable-xhdpi/he401.png and b/app/src/main/res/drawable-xhdpi/he401.png differ diff --git a/app/src/main/res/drawable-xhdpi/he402.png b/app/src/main/res/drawable-xhdpi/he402.png index 18a3dc7..ccc2dab 100644 Binary files a/app/src/main/res/drawable-xhdpi/he402.png and b/app/src/main/res/drawable-xhdpi/he402.png differ diff --git a/app/src/main/res/drawable-xhdpi/he403.png b/app/src/main/res/drawable-xhdpi/he403.png index 3649ce7..da32ebe 100644 Binary files a/app/src/main/res/drawable-xhdpi/he403.png and b/app/src/main/res/drawable-xhdpi/he403.png differ diff --git a/app/src/main/res/drawable-xhdpi/he404.png b/app/src/main/res/drawable-xhdpi/he404.png index 77e373c..99a3d9d 100644 Binary files a/app/src/main/res/drawable-xhdpi/he404.png and b/app/src/main/res/drawable-xhdpi/he404.png differ diff --git a/app/src/main/res/drawable-xhdpi/he405.png b/app/src/main/res/drawable-xhdpi/he405.png index 9ed83e3..c3ac8d4 100644 Binary files a/app/src/main/res/drawable-xhdpi/he405.png and b/app/src/main/res/drawable-xhdpi/he405.png differ diff --git a/app/src/main/res/drawable-xhdpi/he406.png b/app/src/main/res/drawable-xhdpi/he406.png index 0ca43f1..01348b1 100644 Binary files a/app/src/main/res/drawable-xhdpi/he406.png and b/app/src/main/res/drawable-xhdpi/he406.png differ diff --git a/app/src/main/res/drawable-xhdpi/he407.png b/app/src/main/res/drawable-xhdpi/he407.png index b59208d..37cdd78 100644 Binary files a/app/src/main/res/drawable-xhdpi/he407.png and b/app/src/main/res/drawable-xhdpi/he407.png differ diff --git a/app/src/main/res/drawable-xhdpi/he408.png b/app/src/main/res/drawable-xhdpi/he408.png index d8253a4..f8d216c 100644 Binary files a/app/src/main/res/drawable-xhdpi/he408.png and b/app/src/main/res/drawable-xhdpi/he408.png differ diff --git a/app/src/main/res/drawable-xhdpi/he409.png b/app/src/main/res/drawable-xhdpi/he409.png index c8aca0c..e7e729b 100644 Binary files a/app/src/main/res/drawable-xhdpi/he409.png and b/app/src/main/res/drawable-xhdpi/he409.png differ diff --git a/app/src/main/res/drawable-xhdpi/he410.png b/app/src/main/res/drawable-xhdpi/he410.png index f5cb3a3..3e4dcf2 100644 Binary files a/app/src/main/res/drawable-xhdpi/he410.png and b/app/src/main/res/drawable-xhdpi/he410.png differ diff --git a/app/src/main/res/drawable-xhdpi/he456.png b/app/src/main/res/drawable-xhdpi/he456.png index 83564f9..1b080c7 100644 Binary files a/app/src/main/res/drawable-xhdpi/he456.png and b/app/src/main/res/drawable-xhdpi/he456.png differ diff --git a/app/src/main/res/drawable-xhdpi/he457.png b/app/src/main/res/drawable-xhdpi/he457.png index d3fde4e..1b610d2 100644 Binary files a/app/src/main/res/drawable-xhdpi/he457.png and b/app/src/main/res/drawable-xhdpi/he457.png differ diff --git a/app/src/main/res/drawable-xhdpi/he499.png b/app/src/main/res/drawable-xhdpi/he499.png index 66863b9..c486a59 100644 Binary files a/app/src/main/res/drawable-xhdpi/he499.png and b/app/src/main/res/drawable-xhdpi/he499.png differ diff --git a/app/src/main/res/drawable-xhdpi/he500.png b/app/src/main/res/drawable-xhdpi/he500.png index 2d9e467..dcecc31 100644 Binary files a/app/src/main/res/drawable-xhdpi/he500.png and b/app/src/main/res/drawable-xhdpi/he500.png differ diff --git a/app/src/main/res/drawable-xhdpi/he501.png b/app/src/main/res/drawable-xhdpi/he501.png index 41e9cbe..41fba52 100644 Binary files a/app/src/main/res/drawable-xhdpi/he501.png and b/app/src/main/res/drawable-xhdpi/he501.png differ diff --git a/app/src/main/res/drawable-xhdpi/he502.png b/app/src/main/res/drawable-xhdpi/he502.png index 48af382..6ffda43 100644 Binary files a/app/src/main/res/drawable-xhdpi/he502.png and b/app/src/main/res/drawable-xhdpi/he502.png differ diff --git a/app/src/main/res/drawable-xhdpi/he503.png b/app/src/main/res/drawable-xhdpi/he503.png index 9a5556f..f7e2296 100644 Binary files a/app/src/main/res/drawable-xhdpi/he503.png and b/app/src/main/res/drawable-xhdpi/he503.png differ diff --git a/app/src/main/res/drawable-xhdpi/he504.png b/app/src/main/res/drawable-xhdpi/he504.png index f6fa6c0..b26ea7b 100644 Binary files a/app/src/main/res/drawable-xhdpi/he504.png and b/app/src/main/res/drawable-xhdpi/he504.png differ diff --git a/app/src/main/res/drawable-xhdpi/he507.png b/app/src/main/res/drawable-xhdpi/he507.png index 2e8a073..43b1e6e 100644 Binary files a/app/src/main/res/drawable-xhdpi/he507.png and b/app/src/main/res/drawable-xhdpi/he507.png differ diff --git a/app/src/main/res/drawable-xhdpi/he508.png b/app/src/main/res/drawable-xhdpi/he508.png index 6e5a041..f932cd9 100644 Binary files a/app/src/main/res/drawable-xhdpi/he508.png and b/app/src/main/res/drawable-xhdpi/he508.png differ diff --git a/app/src/main/res/drawable-xhdpi/he509.png b/app/src/main/res/drawable-xhdpi/he509.png index 1e493b9..b1a8adb 100644 Binary files a/app/src/main/res/drawable-xhdpi/he509.png and b/app/src/main/res/drawable-xhdpi/he509.png differ diff --git a/app/src/main/res/drawable-xhdpi/he510.png b/app/src/main/res/drawable-xhdpi/he510.png index 110fd8d..eecaf5d 100644 Binary files a/app/src/main/res/drawable-xhdpi/he510.png and b/app/src/main/res/drawable-xhdpi/he510.png differ diff --git a/app/src/main/res/drawable-xhdpi/he511.png b/app/src/main/res/drawable-xhdpi/he511.png index 886f100..b0bcd8e 100644 Binary files a/app/src/main/res/drawable-xhdpi/he511.png and b/app/src/main/res/drawable-xhdpi/he511.png differ diff --git a/app/src/main/res/drawable-xhdpi/he512.png b/app/src/main/res/drawable-xhdpi/he512.png index 71cf968..0d98a13 100644 Binary files a/app/src/main/res/drawable-xhdpi/he512.png and b/app/src/main/res/drawable-xhdpi/he512.png differ diff --git a/app/src/main/res/drawable-xhdpi/he513.png b/app/src/main/res/drawable-xhdpi/he513.png index b75b24d..e1128ff 100644 Binary files a/app/src/main/res/drawable-xhdpi/he513.png and b/app/src/main/res/drawable-xhdpi/he513.png differ diff --git a/app/src/main/res/drawable-xhdpi/he514.png b/app/src/main/res/drawable-xhdpi/he514.png index a819d46..cb9adbc 100644 Binary files a/app/src/main/res/drawable-xhdpi/he514.png and b/app/src/main/res/drawable-xhdpi/he514.png differ diff --git a/app/src/main/res/drawable-xhdpi/he515.png b/app/src/main/res/drawable-xhdpi/he515.png index 43c02db..2faa917 100644 Binary files a/app/src/main/res/drawable-xhdpi/he515.png and b/app/src/main/res/drawable-xhdpi/he515.png differ diff --git a/app/src/main/res/drawable-xhdpi/he900.png b/app/src/main/res/drawable-xhdpi/he900.png index c432982..cbdb3e7 100644 Binary files a/app/src/main/res/drawable-xhdpi/he900.png and b/app/src/main/res/drawable-xhdpi/he900.png differ diff --git a/app/src/main/res/drawable-xhdpi/he901.png b/app/src/main/res/drawable-xhdpi/he901.png index 8a2f456..bc6d105 100644 Binary files a/app/src/main/res/drawable-xhdpi/he901.png and b/app/src/main/res/drawable-xhdpi/he901.png differ diff --git a/app/src/main/res/drawable-xhdpi/he999.png b/app/src/main/res/drawable-xhdpi/he999.png index c167cbb..4ce8569 100644 Binary files a/app/src/main/res/drawable-xhdpi/he999.png and b/app/src/main/res/drawable-xhdpi/he999.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_widget_resize_handle.png b/app/src/main/res/drawable-xhdpi/ic_widget_resize_handle.png deleted file mode 100644 index 0e8dd68..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_widget_resize_handle.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/widget_resize_frame.9.png b/app/src/main/res/drawable-xhdpi/widget_resize_frame.9.png deleted file mode 100644 index 563c75d..0000000 Binary files a/app/src/main/res/drawable-xhdpi/widget_resize_frame.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/widget_resize_shadow.9.png b/app/src/main/res/drawable-xhdpi/widget_resize_shadow.9.png deleted file mode 100644 index 2b1ac05..0000000 Binary files a/app/src/main/res/drawable-xhdpi/widget_resize_shadow.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/work_tab_user_education.png b/app/src/main/res/drawable-xhdpi/work_tab_user_education.png deleted file mode 100644 index 59df7a8..0000000 Binary files a/app/src/main/res/drawable-xhdpi/work_tab_user_education.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/workspace_bg.9.png b/app/src/main/res/drawable-xhdpi/workspace_bg.9.png deleted file mode 100644 index b1b3b85..0000000 Binary files a/app/src/main/res/drawable-xhdpi/workspace_bg.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_widget_resize_handle.png b/app/src/main/res/drawable-xxhdpi/ic_widget_resize_handle.png deleted file mode 100644 index 736a157..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_widget_resize_handle.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/widget_resize_frame.9.png b/app/src/main/res/drawable-xxhdpi/widget_resize_frame.9.png deleted file mode 100644 index ea527f4..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/widget_resize_frame.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/widget_resize_shadow.9.png b/app/src/main/res/drawable-xxhdpi/widget_resize_shadow.9.png deleted file mode 100644 index 5412168..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/widget_resize_shadow.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/work_tab_user_education.png b/app/src/main/res/drawable-xxhdpi/work_tab_user_education.png deleted file mode 100644 index 3c6aa20..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/work_tab_user_education.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/workspace_bg.9.png b/app/src/main/res/drawable-xxhdpi/workspace_bg.9.png deleted file mode 100644 index d47f6b2..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/workspace_bg.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he100.png b/app/src/main/res/drawable-xxxhdpi/he100.png deleted file mode 100644 index faf04c8..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he100.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he101.png b/app/src/main/res/drawable-xxxhdpi/he101.png deleted file mode 100644 index 17841e4..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he101.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he102.png b/app/src/main/res/drawable-xxxhdpi/he102.png deleted file mode 100644 index 51bc5a8..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he102.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he103.png b/app/src/main/res/drawable-xxxhdpi/he103.png deleted file mode 100644 index 5fd9957..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he103.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he104.png b/app/src/main/res/drawable-xxxhdpi/he104.png deleted file mode 100644 index 9628fbd..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he104.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he150.png b/app/src/main/res/drawable-xxxhdpi/he150.png deleted file mode 100644 index eaee769..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he150.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he153.png b/app/src/main/res/drawable-xxxhdpi/he153.png deleted file mode 100644 index 346a2c2..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he153.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he154.png b/app/src/main/res/drawable-xxxhdpi/he154.png deleted file mode 100644 index 358be1a..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he154.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he300.png b/app/src/main/res/drawable-xxxhdpi/he300.png deleted file mode 100644 index 24ba9bc..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he300.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he301.png b/app/src/main/res/drawable-xxxhdpi/he301.png deleted file mode 100644 index ad65de8..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he301.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he302.png b/app/src/main/res/drawable-xxxhdpi/he302.png deleted file mode 100644 index 4a018ee..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he302.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he303.png b/app/src/main/res/drawable-xxxhdpi/he303.png deleted file mode 100644 index aa8d273..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he303.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he304.png b/app/src/main/res/drawable-xxxhdpi/he304.png deleted file mode 100644 index 3155a49..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he304.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he305.png b/app/src/main/res/drawable-xxxhdpi/he305.png deleted file mode 100644 index f76f6e3..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he305.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he306.png b/app/src/main/res/drawable-xxxhdpi/he306.png deleted file mode 100644 index ffb6804..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he306.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he307.png b/app/src/main/res/drawable-xxxhdpi/he307.png deleted file mode 100644 index 1e33073..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he307.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he308.png b/app/src/main/res/drawable-xxxhdpi/he308.png deleted file mode 100644 index 2586187..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he308.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he309.png b/app/src/main/res/drawable-xxxhdpi/he309.png deleted file mode 100644 index 9beebe3..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he309.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he310.png b/app/src/main/res/drawable-xxxhdpi/he310.png deleted file mode 100644 index 624b04e..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he310.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he311.png b/app/src/main/res/drawable-xxxhdpi/he311.png deleted file mode 100644 index 5fcc3fc..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he311.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he312.png b/app/src/main/res/drawable-xxxhdpi/he312.png deleted file mode 100644 index 0e93ff7..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he312.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he313.png b/app/src/main/res/drawable-xxxhdpi/he313.png deleted file mode 100644 index ba783d6..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he313.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he314.png b/app/src/main/res/drawable-xxxhdpi/he314.png deleted file mode 100644 index 9e93846..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he314.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he315.png b/app/src/main/res/drawable-xxxhdpi/he315.png deleted file mode 100644 index 527e6fe..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he315.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he316.png b/app/src/main/res/drawable-xxxhdpi/he316.png deleted file mode 100644 index 8309afb..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he316.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he317.png b/app/src/main/res/drawable-xxxhdpi/he317.png deleted file mode 100644 index 2e9a702..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he317.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he318.png b/app/src/main/res/drawable-xxxhdpi/he318.png deleted file mode 100644 index b99b851..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he318.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he350.png b/app/src/main/res/drawable-xxxhdpi/he350.png deleted file mode 100644 index a9a0c52..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he350.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he351.png b/app/src/main/res/drawable-xxxhdpi/he351.png deleted file mode 100644 index f7bdda3..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he351.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he399.png b/app/src/main/res/drawable-xxxhdpi/he399.png deleted file mode 100644 index 321233b..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he399.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he400.png b/app/src/main/res/drawable-xxxhdpi/he400.png deleted file mode 100644 index 532879b..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he400.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he401.png b/app/src/main/res/drawable-xxxhdpi/he401.png deleted file mode 100644 index 4a92fc7..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he401.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he402.png b/app/src/main/res/drawable-xxxhdpi/he402.png deleted file mode 100644 index ccc2dab..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he402.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he403.png b/app/src/main/res/drawable-xxxhdpi/he403.png deleted file mode 100644 index da32ebe..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he403.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he404.png b/app/src/main/res/drawable-xxxhdpi/he404.png deleted file mode 100644 index 99a3d9d..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he404.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he405.png b/app/src/main/res/drawable-xxxhdpi/he405.png deleted file mode 100644 index c3ac8d4..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he405.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he406.png b/app/src/main/res/drawable-xxxhdpi/he406.png deleted file mode 100644 index 01348b1..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he406.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he407.png b/app/src/main/res/drawable-xxxhdpi/he407.png deleted file mode 100644 index 37cdd78..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he407.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he408.png b/app/src/main/res/drawable-xxxhdpi/he408.png deleted file mode 100644 index f8d216c..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he408.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he409.png b/app/src/main/res/drawable-xxxhdpi/he409.png deleted file mode 100644 index e7e729b..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he409.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he410.png b/app/src/main/res/drawable-xxxhdpi/he410.png deleted file mode 100644 index 3e4dcf2..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he410.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he456.png b/app/src/main/res/drawable-xxxhdpi/he456.png deleted file mode 100644 index 1b080c7..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he456.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he457.png b/app/src/main/res/drawable-xxxhdpi/he457.png deleted file mode 100644 index 1b610d2..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he457.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he499.png b/app/src/main/res/drawable-xxxhdpi/he499.png deleted file mode 100644 index c486a59..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he499.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he500.png b/app/src/main/res/drawable-xxxhdpi/he500.png deleted file mode 100644 index dcecc31..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he500.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he501.png b/app/src/main/res/drawable-xxxhdpi/he501.png deleted file mode 100644 index 41fba52..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he501.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he502.png b/app/src/main/res/drawable-xxxhdpi/he502.png deleted file mode 100644 index 6ffda43..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he502.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he503.png b/app/src/main/res/drawable-xxxhdpi/he503.png deleted file mode 100644 index f7e2296..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he503.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he504.png b/app/src/main/res/drawable-xxxhdpi/he504.png deleted file mode 100644 index b26ea7b..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he504.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he507.png b/app/src/main/res/drawable-xxxhdpi/he507.png deleted file mode 100644 index 43b1e6e..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he507.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he508.png b/app/src/main/res/drawable-xxxhdpi/he508.png deleted file mode 100644 index f932cd9..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he508.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he509.png b/app/src/main/res/drawable-xxxhdpi/he509.png deleted file mode 100644 index b1a8adb..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he509.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he510.png b/app/src/main/res/drawable-xxxhdpi/he510.png deleted file mode 100644 index eecaf5d..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he510.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he511.png b/app/src/main/res/drawable-xxxhdpi/he511.png deleted file mode 100644 index b0bcd8e..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he511.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he512.png b/app/src/main/res/drawable-xxxhdpi/he512.png deleted file mode 100644 index 0d98a13..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he512.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he513.png b/app/src/main/res/drawable-xxxhdpi/he513.png deleted file mode 100644 index e1128ff..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he513.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he514.png b/app/src/main/res/drawable-xxxhdpi/he514.png deleted file mode 100644 index cb9adbc..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he514.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he515.png b/app/src/main/res/drawable-xxxhdpi/he515.png deleted file mode 100644 index 2faa917..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he515.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he900.png b/app/src/main/res/drawable-xxxhdpi/he900.png deleted file mode 100644 index cbdb3e7..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he900.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he901.png b/app/src/main/res/drawable-xxxhdpi/he901.png deleted file mode 100644 index bc6d105..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he901.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/he999.png b/app/src/main/res/drawable-xxxhdpi/he999.png deleted file mode 100644 index 4ce8569..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/he999.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_widget_resize_handle.png b/app/src/main/res/drawable-xxxhdpi/ic_widget_resize_handle.png deleted file mode 100644 index e3c45ad..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_widget_resize_handle.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/sos_icon.png b/app/src/main/res/drawable-xxxhdpi/sos_icon.png deleted file mode 100644 index 00d093f..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/sos_icon.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/widget_resize_frame.9.png b/app/src/main/res/drawable-xxxhdpi/widget_resize_frame.9.png deleted file mode 100644 index 4644e9a..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/widget_resize_frame.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/widget_resize_shadow.9.png b/app/src/main/res/drawable-xxxhdpi/widget_resize_shadow.9.png deleted file mode 100644 index 63cea84..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/widget_resize_shadow.9.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/workspace_bg.9.png b/app/src/main/res/drawable-xxxhdpi/workspace_bg.9.png deleted file mode 100644 index 3281548..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/workspace_bg.9.png and /dev/null differ diff --git a/app/src/main/res/layout-land/activity_applist.xml b/app/src/main/res/layout-land/activity_applist.xml new file mode 100644 index 0000000..0f43966 --- /dev/null +++ b/app/src/main/res/layout-land/activity_applist.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout-land/activity_weather.xml b/app/src/main/res/layout-land/activity_weather.xml new file mode 100644 index 0000000..9ab73a8 --- /dev/null +++ b/app/src/main/res/layout-land/activity_weather.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_custom.xml b/app/src/main/res/layout-land/fragment_custom.xml index 387ea91..a5dcf93 100644 --- a/app/src/main/res/layout-land/fragment_custom.xml +++ b/app/src/main/res/layout-land/fragment_custom.xml @@ -19,6 +19,7 @@ android:orientation="horizontal"> - + app:layout_constraintTop_toTopOf="parent"> - - + - + - + + - + + + + + + + - + app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/item_app.xml b/app/src/main/res/layout-land/item_app.xml new file mode 100644 index 0000000..9d2030d --- /dev/null +++ b/app/src/main/res/layout-land/item_app.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_applist.xml b/app/src/main/res/layout-port/activity_applist.xml new file mode 100644 index 0000000..0f43966 --- /dev/null +++ b/app/src/main/res/layout-port/activity_applist.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout-port/activity_weather.xml b/app/src/main/res/layout-port/activity_weather.xml new file mode 100644 index 0000000..da19102 --- /dev/null +++ b/app/src/main/res/layout-port/activity_weather.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/fragment_custom.xml b/app/src/main/res/layout-port/fragment_custom.xml index 201be85..d645e01 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -20,6 +20,7 @@ android:orientation="horizontal"> - - - + android:gravity="center_horizontal" + android:orientation="vertical" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + diff --git a/app/src/main/res/layout-port/item_app.xml b/app/src/main/res/layout-port/item_app.xml new file mode 100644 index 0000000..1a6235a --- /dev/null +++ b/app/src/main/res/layout-port/item_app.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0f0b548..812bc15 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".activity.MainActivity"> + tools:context=".activity.main.MainActivity"> + + + + + + + + + + + + + + + + \ No newline at end of file