diff --git a/app/build.gradle b/app/build.gradle index 2194944..2e99f0f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiuios.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 3 - versionName "1.2" + versionCode 8 + versionName "1.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -50,7 +50,7 @@ android { signingConfigs { zhanRui { - storeFile file("src/doc/zhanxun.keystore") + storeFile file("keystore/zhanxun.keystore") storePassword "123456" keyAlias "zhanxun" keyPassword "123456" @@ -59,24 +59,43 @@ android { } mtk { - storeFile file("src/doc/xueshibaoos.jks") + storeFile file("keystore/xueshibaoos.jks") storePassword "123456" keyAlias "xueshibaoos" keyPassword "123456" v2SigningEnabled false } + + mtk12 { + storeFile file("keystore/mtkAndroid12.keystore") + storePassword "123456" + keyAlias "mtk12" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } } buildTypes { + MTKAndroid12Release.initWith(release) + MTKAndroid12Release { + signingConfig signingConfigs.mtk12 + } + + MTKAndroid12Debug.initWith(debug) + MTKAndroid12Debug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.mtk12 + } + zhanRuiRelease.initWith(release) zhanRuiRelease { - buildConfigField "boolean", "LOG_DEBUG", "false" signingConfig signingConfigs.zhanRui } zhanRuiDebug.initWith(debug) zhanRuiDebug { - buildConfigField "boolean", "LOG_DEBUG", "true" versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.zhanRui @@ -84,7 +103,6 @@ android { debug { // 显示Log - buildConfigField "boolean", "LOG_DEBUG", "true" versionNameSuffix "-debug" minifyEnabled false //Zipalign优化 @@ -102,7 +120,6 @@ android { release { // 不显示Log - buildConfigField "boolean", "LOG_DEBUG", "false" //混淆 minifyEnabled false //Zipalign优化 @@ -118,7 +135,6 @@ android { if (outputFile != null) { def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" output.outputFileName = new File(outputFile, fileName) - } } } @@ -147,6 +163,8 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation 'com.google.android.material:material:1.0.0' + implementation "androidx.room:room-runtime:2.4.3" annotationProcessor "androidx.room:room-compiler:2.4.3" diff --git a/app/keystore/mtkAndroid12.keystore b/app/keystore/mtkAndroid12.keystore new file mode 100644 index 0000000..860f30f Binary files /dev/null and b/app/keystore/mtkAndroid12.keystore differ diff --git a/app/src/doc/xueshibaoos.jks b/app/keystore/xueshibaoos.jks similarity index 100% rename from app/src/doc/xueshibaoos.jks rename to app/keystore/xueshibaoos.jks diff --git a/app/src/doc/zhanxun.keystore b/app/keystore/zhanxun.keystore similarity index 100% rename from app/src/doc/zhanxun.keystore rename to app/keystore/zhanxun.keystore diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 64a78f7..f7db56a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -74,7 +74,14 @@ android:restoreAnyVersion="true" android:supportsRtl="true" android:theme="@style/AppTheme"> - + + + + + getPackageList() { + PackageManager pm = getPackageManager(); + List appSelectBeanList = new ArrayList<>(); + List applicationInfos = pm.getInstalledPackages(0); + for (PackageInfo packageInfo : applicationInfos) { + if (BuildConfig.APPLICATION_ID.equals(packageInfo.applicationInfo.packageName)) { + continue; + } + final boolean isSystem = (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; + if (!listThirdParty || !isSystem) { + AppSelectBean appSelectBean = new AppSelectBean(packageInfo.applicationInfo.loadLabel(pm).toString(), packageInfo.applicationInfo.packageName, packageInfo.applicationInfo.loadIcon(pm)); + appSelectBeanList.add(appSelectBean); + } + } + return appSelectBeanList; + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/SpikeListActivity.java b/app/src/main/java/com/uiuios/aios/activity/SpikeListActivity.java new file mode 100644 index 0000000..422b71e --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/activity/SpikeListActivity.java @@ -0,0 +1,108 @@ +package com.uiuios.aios.activity; + +import android.util.Log; +import android.view.View; +import android.widget.ImageView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.R; +import com.uiuios.aios.adapter.GoodsAdapter; +import com.uiuios.aios.adapter.GoodsListAdapter; +import com.uiuios.aios.base.BaseActivity; +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.bean.GoodsInfo; +import com.uiuios.aios.network.NetInterfaceManager; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +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; + +public class SpikeListActivity extends BaseActivity { + @BindView(R.id.recyclerView) + RecyclerView recyclerView; + @BindView(R.id.iv1) + ImageView iv1; + @BindView(R.id.iv_back) + ImageView iv_back; + + private GoodsListAdapter mGoodsAdapter; + + + @Override + public int getLayoutId() { + lifecycleSubject.onNext(ActivityEvent.CREATE); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + return R.layout.activity_spike_list; + } + + @Override + public void initView() { + ButterKnife.bind(this); + mGoodsAdapter = new GoodsListAdapter(); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + recyclerView.setAdapter(mGoodsAdapter); + iv_back.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + finish(); + } + }); + } + + @Override + public void initData() { + getGoodsInfo(); + } + + private void getGoodsInfo() { + NetInterfaceManager.getInstance() + .getGoodsListObservable() + .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getGoods", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getGoods", "onNext: " + listBaseResponse); + List goodsInfos = listBaseResponse.data; + if (goodsInfos != null && goodsInfos.size() != 0) { + iv1.setVisibility(android.view.View.GONE); + mGoodsAdapter.setGoodsInfoList(goodsInfos); + } else { + iv1.setVisibility(android.view.View.VISIBLE); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getGoods", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getGoods", "onComplete: "); + } + }); + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java b/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java index a2c4094..ebba38f 100644 --- a/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/alarm/AlarmClockActivity.java @@ -27,7 +27,7 @@ import cn.jzvd.Jzvd; public class AlarmClockActivity extends BaseActivity implements AlarmClockContact.ClockView { private static final String TAG = AlarmClockActivity.class.getSimpleName(); - @BindView(R.id.recyclerView) + @BindView(R.id.rv_goods) RecyclerView recyclerView; @BindView(R.id.iv_back) ImageView iv_back; diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java b/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java index 1e34a75..2ba5687 100644 --- a/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/contact/ContactActivity.java @@ -73,10 +73,15 @@ public class ContactActivity extends BaseActivity implements ContactContact.Cont @Override public void setContact(List contactList) { - if (contactList != null) { - mContactAdapter.setContactList(contactList); + if (contactList == null || contactList.size() == 0) { + tv_people.setText("暂无数据"); + } else { tv_people.setText(contactList.size() + "人"); } - + Contact contact = new Contact(); + contact.setName("拨号"); + contact.setMobile(ContactAdapter.DIALER_PACKAGE); + contactList.add(0, contact); + mContactAdapter.setContactList(contactList); } } diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java b/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java index 88eee86..de35007 100644 --- a/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java +++ b/app/src/main/java/com/uiuios/aios/activity/contact/ContactPresenter.java @@ -3,12 +3,19 @@ package com.uiuios.aios.activity.contact; import android.content.Context; import android.util.Log; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.tencent.mmkv.MMKV; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.Contact; import com.uiuios.aios.network.NetInterfaceManager; +import com.uiuios.aios.network.URLAddress; +import com.uiuios.aios.utils.GsonUtils; +import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; import io.reactivex.rxjava3.annotations.NonNull; @@ -19,6 +26,7 @@ import io.reactivex.rxjava3.subjects.BehaviorSubject; public class ContactPresenter implements ContactContact.Presenter { private Context mContext; private ContactContact.ContactView mView; + private MMKV mMMKV = MMKV.defaultMMKV(); private BehaviorSubject lifecycle; @@ -58,12 +66,28 @@ public class ContactPresenter implements ContactContact.Presenter { @Override public void onNext(@NonNull BaseResponse> listBaseResponse) { Log.e("getContactList", "onNext: " + listBaseResponse); - mView.setContact(listBaseResponse.data); + if (listBaseResponse.code == 200) { + mMMKV.putString(URLAddress.GET_MAIL_LIST, GsonUtils.toJsonString(listBaseResponse.data)); + mView.setContact(listBaseResponse.data); + } else { + mMMKV.putString(URLAddress.GET_MAIL_LIST, ""); + mView.setContact(new ArrayList<>()); + } } @Override public void onError(@NonNull Throwable e) { Log.e("getContactList", "onError: " + e.getMessage()); + String jsonString = mMMKV.getString(URLAddress.GET_MAIL_LIST, null); + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + List contacts = gson.fromJson(jsonString, type); + if (contacts == null) { + mView.setContact(new ArrayList<>()); + }else { + mView.setContact(contacts); + } onComplete(); } diff --git a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java index 713f96b..f9981b2 100644 --- a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java @@ -34,7 +34,7 @@ import com.uiuios.aios.bean.DesktopIcon; import com.uiuios.aios.fragment.AppListFragment; import com.uiuios.aios.base.BaseFragmentPagerAdapter; import com.uiuios.aios.fragment.custom.CustomFragment; -import com.uiuios.aios.fragment.SecondFragment; +import com.uiuios.aios.fragment.second.SecondFragment; import com.uiuios.aios.service.NotificationService; import com.uiuios.aios.utils.ApkUtils; import com.uiuios.aios.utils.AppUsedTimeUtils; diff --git a/app/src/main/java/com/uiuios/aios/adapter/ActivityAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/ActivityAdapter.java new file mode 100644 index 0000000..7dc56be --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/adapter/ActivityAdapter.java @@ -0,0 +1,74 @@ +package com.uiuios.aios.adapter; + +import android.content.Context; +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.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.uiuios.aios.R; +import com.uiuios.aios.bean.ActivityBean; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +public class ActivityAdapter extends RecyclerView.Adapter { + private static final String TAG = ActivityAdapter.class.getSimpleName(); + + private Context mContext; + private List mActivityBeans; + + public void setActivityBeans(List list) { + this.mActivityBeans = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new ActivityAdapter.Holder(LayoutInflater.from(mContext).inflate(R.layout.item_activity, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull Holder holder, int position) { + ActivityBean activityBean = mActivityBeans.get(position); + Glide.with(holder.iv_img).load(activityBean.getFile()).into(holder.iv_img); + holder.tv_location.setText(activityBean.getLocation()); + holder.tv_desc.setText(getTime(activityBean.getAdd_time())); + + } + + private String getTime(long second) { + long ms = second * 1000L; + SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日"); + Date date = new Date(ms); + String time = sdf.format(date); + Log.e(TAG, "getTime: " + time); + return time; + } + + @Override + public int getItemCount() { + return mActivityBeans == null ? 0 : mActivityBeans.size(); + } + + class Holder extends RecyclerView.ViewHolder { + ImageView iv_img; + TextView tv_location, tv_desc; + + public Holder(@NonNull View itemView) { + super(itemView); + iv_img = itemView.findViewById(R.id.iv_img); + tv_location = itemView.findViewById(R.id.tv_location); + tv_desc = itemView.findViewById(R.id.tv_desc); + } + } +} diff --git a/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java new file mode 100644 index 0000000..192101a --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java @@ -0,0 +1,83 @@ +package com.uiuios.aios.adapter; + +import android.content.Context; +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.recyclerview.widget.RecyclerView; + +import com.tencent.mmkv.MMKV; +import com.uiuios.aios.R; +import com.uiuios.aios.activity.QuickAppActivity; +import com.uiuios.aios.bean.AppSelectBean; + +import java.util.List; + +public class AppSelectedAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List mAppSelectBeans; + private int unselectedStatus = -1; + private int selecedPosition = unselectedStatus; + private MMKV mMMKV = MMKV.defaultMMKV(); + + public void setAppSelectBeans(List appSelectBeanList) { + this.mAppSelectBeans = appSelectBeanList; + notifyDataSetChanged(); + } + + @NonNull + @Override + public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_app_select, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull Holder holder, int position) { + AppSelectBean appSelectBean = mAppSelectBeans.get(position); + holder.iv_icon.setImageDrawable(appSelectBean.getIcon()); + holder.tv_name.setText(appSelectBean.getAppName()); + if (selecedPosition == position) { + holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected)); + } else { + holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected)); + } + holder.iv_select.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (position != selecedPosition) { + holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected)); + selecedPosition = position; + mMMKV.putString(QuickAppActivity.QUICK_APP_KEY, appSelectBean.getPackageName()); + } else { + holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected)); + selecedPosition = -1; + mMMKV.putString(QuickAppActivity.QUICK_APP_KEY, ""); + } + notifyDataSetChanged(); + } + }); + } + + @Override + public int getItemCount() { + return mAppSelectBeans == null ? 0 : mAppSelectBeans.size(); + } + + static class Holder extends RecyclerView.ViewHolder { + ImageView iv_select, iv_icon; + TextView tv_name; + + Holder(@NonNull View itemView) { + super(itemView); + iv_select = itemView.findViewById(R.id.iv_select); + iv_icon = itemView.findViewById(R.id.iv_icon); + tv_name = itemView.findViewById(R.id.tv_name); + } + } +} diff --git a/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java new file mode 100644 index 0000000..d9a7e70 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/adapter/ArticleAdapter.java @@ -0,0 +1,61 @@ +package com.uiuios.aios.adapter; + +import android.content.Context; +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.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.shehuan.niv.NiceImageView; +import com.uiuios.aios.R; +import com.uiuios.aios.bean.ArticleInfo; + +import java.util.List; + +public class ArticleAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List mArticleBeanList; + + public void setArticleBeanList(List list) { + this.mArticleBeanList = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new ArticleAdapter.Holder(LayoutInflater.from(mContext).inflate(R.layout.item_article, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull Holder holder, int position) { + ArticleInfo articleInfo = mArticleBeanList.get(position); + Glide.with(holder.iv_img).load(articleInfo.getImg()).into(holder.iv_img); + holder.tv_title.setText(articleInfo.getTitle()); + holder.tv_content.setText(articleInfo.getContent()); + } + + @Override + public int getItemCount() { + return mArticleBeanList == null ? 0 : mArticleBeanList.size(); + } + + class Holder extends RecyclerView.ViewHolder { + NiceImageView iv_img; + TextView tv_title, tv_content; + + public Holder(@NonNull View itemView) { + super(itemView); + iv_img = itemView.findViewById(R.id.iv_img); + tv_title = itemView.findViewById(R.id.tv_title); + tv_content = itemView.findViewById(R.id.tv_content); + } + } +} diff --git a/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java index fa07f6a..3cc1840 100644 --- a/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java +++ b/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java @@ -24,6 +24,8 @@ public class ContactAdapter extends RecyclerView.Adapter mContactList; private Context mContext; + public static final String DIALER_PACKAGE = "com.android.dialer"; + public void setContactList(List contactList) { this.mContactList = contactList; notifyDataSetChanged(); @@ -44,7 +46,9 @@ public class ContactAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List goodsInfoList; + + public void setGoodsInfoList(List list) { + this.goodsInfoList = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public GoodsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new GoodsAdapter.GoodsHolder(LayoutInflater.from(mContext).inflate(R.layout.item_goods, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull GoodsHolder holder, int position) { + GoodsInfo goodsInfo = goodsInfoList.get(position); + if (!TextUtils.isEmpty(goodsInfo.getJump_url())) { +// holder.tv_name.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// Uri uri = Uri.parse(goodsInfo.getJump_url()); +// Intent intent = new Intent(Intent.ACTION_VIEW, uri); +// mContext.startActivity(intent); +// } +// }); + } + Glide.with(holder.iv_goods).load(goodsInfo.getImg()).into(holder.iv_goods); + holder.tv_name.setText(goodsInfo.getGoods_name()); + holder.tv_desc.setText(goodsInfo.getGoods_desc()); + holder.tv_price.setText("¥" + goodsInfo.getBuying_price()); + holder.root.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(mContext, DetailsActivity.class); + intent.putExtra("GoodsInfo", goodsInfo); + mContext.startActivity(intent); + } + }); + holder.tv_type.setText(goodsInfo.getType()); + } + + @Override + public int getItemCount() { + return goodsInfoList == null ? 0 : goodsInfoList.size(); + } + + static class GoodsHolder extends RecyclerView.ViewHolder { + ConstraintLayout root; + NiceImageView iv_goods; + TextView tv_name, tv_desc, tv_buying_price, tv_price,tv_type; + + public GoodsHolder(@NonNull View itemView) { + super(itemView); + root = itemView.findViewById(R.id.root); + iv_goods = itemView.findViewById(R.id.iv_img); + tv_name = itemView.findViewById(R.id.tv_name); + tv_desc = itemView.findViewById(R.id.tv_desc); + tv_buying_price = itemView.findViewById(R.id.tv_buying_price); + tv_price = itemView.findViewById(R.id.tv_price); + tv_type = itemView.findViewById(R.id.tv_type); + } + } + +} diff --git a/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java new file mode 100644 index 0000000..3e2e3d7 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/adapter/GoodsListAdapter.java @@ -0,0 +1,91 @@ +package com.uiuios.aios.adapter; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.shehuan.niv.NiceImageView; +import com.uiuios.aios.R; +import com.uiuios.aios.activity.DetailsActivity; +import com.uiuios.aios.bean.GoodsInfo; + +import java.util.List; + +public class GoodsListAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List goodsInfoList; + + public void setGoodsInfoList(List list) { + this.goodsInfoList = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public GoodsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new GoodsListAdapter.GoodsHolder(LayoutInflater.from(mContext).inflate(R.layout.item_goods_list, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull GoodsHolder holder, int position) { + GoodsInfo goodsInfo = goodsInfoList.get(position); + if (!TextUtils.isEmpty(goodsInfo.getJump_url())) { +// holder.tv_name.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// Uri uri = Uri.parse(goodsInfo.getJump_url()); +// Intent intent = new Intent(Intent.ACTION_VIEW, uri); +// mContext.startActivity(intent); +// } +// }); + } + Glide.with(holder.iv_goods).load(goodsInfo.getImg()).into(holder.iv_goods); + holder.tv_name.setText(goodsInfo.getGoods_name()); + holder.tv_desc.setText(goodsInfo.getGoods_desc()); + holder.tv_price.setText("全网低价¥" + goodsInfo.getOriginal_price()); + holder.tv_buying_price.setText("秒杀价格¥" + goodsInfo.getBuying_price()); + holder.root.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(mContext, DetailsActivity.class); + intent.putExtra("GoodsInfo", goodsInfo); + mContext.startActivity(intent); + } + }); + holder.tv_type.setText(goodsInfo.getType()); + } + + @Override + public int getItemCount() { + return goodsInfoList == null ? 0 : goodsInfoList.size(); + } + + static class GoodsHolder extends RecyclerView.ViewHolder { + ConstraintLayout root; + NiceImageView iv_goods; + TextView tv_name, tv_desc, tv_buying_price, tv_price,tv_type; + + public GoodsHolder(@NonNull View itemView) { + super(itemView); + root = itemView.findViewById(R.id.root); + iv_goods = itemView.findViewById(R.id.iv_img); + tv_name = itemView.findViewById(R.id.tv_name); + tv_desc = itemView.findViewById(R.id.tv_desc); + tv_buying_price = itemView.findViewById(R.id.tv_buying_price); + tv_price = itemView.findViewById(R.id.tv_price); + tv_type = itemView.findViewById(R.id.tv_type); + } + } + +} diff --git a/app/src/main/java/com/uiuios/aios/adapter/NotificationAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/NotificationAdapter.java index 1df1cb5..cc07450 100644 --- a/app/src/main/java/com/uiuios/aios/adapter/NotificationAdapter.java +++ b/app/src/main/java/com/uiuios/aios/adapter/NotificationAdapter.java @@ -1,6 +1,7 @@ package com.uiuios.aios.adapter; import android.content.Context; +import android.graphics.Bitmap; import android.media.AudioAttributes; import android.media.MediaPlayer; import android.text.TextUtils; @@ -8,12 +9,15 @@ 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.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; +import com.shehuan.niv.NiceImageView; import com.uiuios.aios.R; import com.uiuios.aios.bean.AlarmClockData; import com.uiuios.aios.utils.FFmpegUtils; @@ -70,6 +74,32 @@ public class NotificationAdapter extends RecyclerView.Adapter() { + @Override + public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) { + + } + + @Override + public void onNext(@io.reactivex.rxjava3.annotations.NonNull Bitmap bitmap) { + Glide.with(holder.iv_cover).load(bitmap).into(holder.iv_cover); + } + + @Override + public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } String voice = alarmClockData.getVoice(); holder.root.setOnClickListener(new View.OnClickListener() { @Override @@ -141,6 +171,7 @@ public class NotificationAdapter extends RecyclerView.Adapter contactList) { - if (contactList == null || contactList.size() == 0) { - showNoData("温馨提示", "请在小程序上设置通讯录"); - } else { - startActivity(new Intent(getActivity(), ContactActivity.class)); - } +// if (contactList == null || contactList.size() == 0) { +// showNoData("温馨提示", "请在小程序上设置通讯录"); +// } else { +// +// } } @Override @@ -568,12 +641,12 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom @Override public void setEmpty() { - showNoData("温馨提示", "请在小程序上设置通讯录"); +// showNoData("温馨提示", "请在小程序上设置通讯录"); } @Override public void onComplete() { - + startActivity(new Intent(mContext, ContactActivity.class)); } }); } @@ -627,6 +700,36 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom // setAlarm(); getAlarmClock(); setSosNumber(); + setQuickApp(); + checkActivation(); + } + + private void checkActivation() { + int activation = Settings.Global.getInt(mContext.getContentResolver(), "uiui_activation", 0); + if (activation == 0) { + tv_name.setText("未" + + "激活"); + } else { + tv_name.setText("已激活"); + } + } + + private String quickAppPackagesName; + + private void setQuickApp() { + quickAppPackagesName = mMMKV.getString(QuickAppActivity.QUICK_APP_KEY, ""); + if (!TextUtils.isEmpty(quickAppPackagesName)) { + ApplicationInfo applicationInfo = null; + PackageManager pm = mContext.getPackageManager(); + try { + applicationInfo = pm.getApplicationInfo(quickAppPackagesName, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (applicationInfo != null) { + iv_app.setImageDrawable(applicationInfo.loadIcon(pm)); + } + } } private void openScheme(String uri) { diff --git a/app/src/main/java/com/uiuios/aios/fragment/second/SecondContact.java b/app/src/main/java/com/uiuios/aios/fragment/second/SecondContact.java new file mode 100644 index 0000000..65b04a0 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/fragment/second/SecondContact.java @@ -0,0 +1,23 @@ +package com.uiuios.aios.fragment.second; + +import com.uiuios.aios.base.BasePresenter; +import com.uiuios.aios.base.BaseView; +import com.uiuios.aios.bean.ActivityBean; +import com.uiuios.aios.bean.ArticleInfo; +import com.uiuios.aios.bean.GoodsInfo; + +import java.util.List; + +public class SecondContact { + public interface Presenter extends BasePresenter { + void getGoods(); + void getArticle(); + void getActivityList(); + } + + public interface View extends BaseView { + void setGoods(List goodsInfos); + void setArticle(List articleInfoList); + void setActivityList(List activityList); + } +} diff --git a/app/src/main/java/com/uiuios/aios/fragment/SecondFragment.java b/app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java similarity index 54% rename from app/src/main/java/com/uiuios/aios/fragment/SecondFragment.java rename to app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java index 7a61694..af48c85 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/SecondFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java @@ -1,32 +1,33 @@ -package com.uiuios.aios.fragment; +package com.uiuios.aios.fragment.second; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.Bundle; - -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.fragment.app.Fragment; - import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; -import android.widget.ProgressBar; import android.widget.TextView; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.blankj.utilcode.util.NetworkUtils; import com.bumptech.glide.Glide; import com.shehuan.niv.NiceImageView; -import com.trello.rxlifecycle4.RxLifecycle; -import com.trello.rxlifecycle4.android.FragmentEvent; import com.uiuios.aios.R; +import com.uiuios.aios.activity.InfoListActivity; +import com.uiuios.aios.activity.SpikeListActivity; +import com.uiuios.aios.adapter.ActivityAdapter; +import com.uiuios.aios.adapter.ArticleAdapter; +import com.uiuios.aios.adapter.GoodsAdapter; import com.uiuios.aios.base.BaseFragment; import com.uiuios.aios.bean.ActivityBean; import com.uiuios.aios.bean.ArticleInfo; -import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.DemandBean; import com.uiuios.aios.bean.GoodsInfo; import com.uiuios.aios.network.NetInterfaceManager; @@ -37,31 +38,15 @@ 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; /** - * A simple {@link Fragment} subclass. + * A simple {@link androidx.fragment.app.Fragment} subclass. * Use the {@link SecondFragment#newInstance} factory method to * create an instance of this fragment. */ -public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetworkStatusChangedListener { +public class SecondFragment extends BaseFragment implements SecondContact.View, NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = SecondFragment.class.getSimpleName(); - @BindView(R.id.iv_img) - ImageView iv_img; - @BindView(R.id.tv_goods_name) - TextView tv_goods_name; - @BindView(R.id.tv_goods_desc) - TextView tv_goods_desc; - @BindView(R.id.tv_buying_price) - TextView tv_buying_price; - @BindView(R.id.progressBar) - ProgressBar progressBar; - @BindView(R.id.tv_snapup) - TextView tv_snapup; - @BindView(R.id.iv_aimg) ImageView iv_aimg; @BindView(R.id.tv_title) @@ -105,8 +90,8 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo @BindView(R.id.cl_demand) ConstraintLayout cl_demand; - @BindView(R.id.cl1) - ConstraintLayout cl1; + // @BindView(R.id.cl1) +// ConstraintLayout cl1; @BindView(R.id.cl2) ConstraintLayout cl2; @BindView(R.id.cl3) @@ -114,6 +99,14 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo @BindView(R.id.cl4) ConstraintLayout cl4; + @BindView(R.id.rv_goods) + RecyclerView rv_goods; + @BindView(R.id.rv_article) + RecyclerView rv_article; + @BindView(R.id.rv_activity) + RecyclerView rv_activity; + + @BindView(R.id.nv_pic) NiceImageView nv_pic; @BindView(R.id.tv_like) @@ -121,9 +114,19 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo @BindView(R.id.tv_comment) TextView tv_comment; - private View rootView; + @BindView(R.id.tv_spike_more) + TextView tv_spike_more; + @BindView(R.id.tv_info_more) + TextView tv_info_more; + + private android.view.View rootView; private Context mContext; private ContentResolver mCRv; + private SecondPresenter mPresenter; + + private GoodsAdapter mGoodsAdapter; + private ArticleAdapter mArticleAdapter; + private ActivityAdapter mActivityAdapter; // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -158,12 +161,12 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo */ // TODO: Rename and change types and number of parameters public static SecondFragment newInstance(String param1, String param2) { - SecondFragment fragment = new SecondFragment(); + SecondFragment secondFragment = new SecondFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); - fragment.setArguments(args); - return fragment; + secondFragment.setArguments(args); + return secondFragment; } @Override @@ -177,22 +180,63 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public android.view.View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { // Inflate the layout for this fragment rootView = inflater.inflate(R.layout.fragment_second, container, false); mContext = rootView.getContext(); mCRv = mContext.getContentResolver(); + mPresenter = new SecondPresenter(mContext); + mPresenter.attachView(this); + mPresenter.setLifecycle(lifecycleSubject); ButterKnife.bind(this, rootView); initView(); initData(); return rootView; } + private void initView() { + mGoodsAdapter = new GoodsAdapter(); + mArticleAdapter = new ArticleAdapter(); + mActivityAdapter = new ActivityAdapter(); + + rv_goods.setLayoutManager(new LinearLayoutManager(mContext)); + rv_goods.setAdapter(mGoodsAdapter); + rv_article.setLayoutManager(new LinearLayoutManager(mContext)); + rv_article.setAdapter(mArticleAdapter); + rv_activity.setLayoutManager(new LinearLayoutManager(mContext)); + rv_activity.setAdapter(mActivityAdapter); + + cl_activity.setOnClickListener(new android.view.View.OnClickListener() { + @Override + public void onClick(android.view.View view) { + openApp(0); + } + }); + cl_demand.setOnClickListener(new android.view.View.OnClickListener() { + @Override + public void onClick(android.view.View view) { + openApp(1); + } + }); + tv_spike_more.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(new Intent(mContext, SpikeListActivity.class)); + } + }); + tv_info_more.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startActivity(new Intent(mContext, InfoListActivity.class)); + } + }); + } + private void initData() { - getGoods(); - getArticle(); - getActivityList(); + mPresenter.getGoods(); + mPresenter.getArticle(); + mPresenter.getActivityList(); getDemandList(); } @@ -206,16 +250,16 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo NetInterfaceManager.getInstance().getDemandList(true, lifecycleSubject, new NetInterfaceManager.DemandListCallback() { @Override public void setDemandList(List demandBeans) { - cl4.setVisibility(View.VISIBLE); - iv4.setVisibility(View.GONE); + cl4.setVisibility(android.view.View.VISIBLE); + iv4.setVisibility(android.view.View.GONE); DemandBean demandBean = demandBeans.get(0); setDemand(demandBean); } @Override public void noData() { - cl4.setVisibility(View.GONE); - iv4.setVisibility(View.VISIBLE); + cl4.setVisibility(android.view.View.GONE); + iv4.setVisibility(android.view.View.VISIBLE); } @Override @@ -239,34 +283,6 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo tv_address_d.setText(demandBean.getAddress()); } - private void getActivityList() { - NetInterfaceManager.getInstance().getActivityList(true, lifecycleSubject, new NetInterfaceManager.ActivitiesListCallback() { - @Override - public void setActivitiesList(List activityBeans) { - cl3.setVisibility(View.VISIBLE); - iv3.setVisibility(View.GONE); - ActivityBean activityBean = activityBeans.get(0); - setActivity(activityBean); - } - - @Override - public void noData() { - cl3.setVisibility(View.GONE); - iv3.setVisibility(View.VISIBLE); - } - - @Override - public void onError() { - - } - - @Override - public void onComplete() { - - } - }); - } - private void setActivity(ActivityBean activity) { Glide.with(iv_avatar_a).load(activity.getAvatar()).error(getResources().getDrawable(R.drawable.default_head)).into(iv_avatar_a); tv_title_a.setText(activity.getName()); @@ -287,21 +303,6 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo return time; } - private void initView() { - cl_activity.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - openApp(0); - } - }); - cl_demand.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - openApp(1); - } - }); - } - private void openApp(int position) { try { Intent intent = new Intent(Intent.ACTION_MAIN); @@ -316,95 +317,37 @@ public class SecondFragment extends BaseFragment implements NetworkUtils.OnNetwo } } - private void getGoods() { - NetInterfaceManager.getInstance() - .getGoodsListObservable() - .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, FragmentEvent.DESTROY)) - .subscribe(new Observer>>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getGoods", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getGoods", "onNext: " + listBaseResponse); - if (listBaseResponse.code == 200) { - cl1.setVisibility(View.VISIBLE); - iv1.setVisibility(View.GONE); - List goodsInfoList = listBaseResponse.data; - if (goodsInfoList != null && goodsInfoList.size() != 0) { - GoodsInfo goodsInfo = goodsInfoList.get(0); - setGoodsInfo(goodsInfo); - } - } else { - cl1.setVisibility(View.GONE); - iv1.setVisibility(View.VISIBLE); - } - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getGoods", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getGoods", "onComplete: "); - } - }); + @Override + public void setGoods(List goodsInfos) { + if (goodsInfos != null && goodsInfos.size() != 0) { + iv1.setVisibility(android.view.View.GONE); + mGoodsAdapter.setGoodsInfoList(goodsInfos); + } else { + iv1.setVisibility(android.view.View.VISIBLE); + } } - private void setGoodsInfo(GoodsInfo goodsInfo) { - Glide.with(iv_img).load(goodsInfo.getImg()).into(iv_img); - tv_goods_name.setText(goodsInfo.getGoods_name()); - tv_goods_desc.setText(goodsInfo.getGoods_desc()); - tv_buying_price.setText(String.valueOf(goodsInfo.getBuying_price())); + @Override + public void setArticle(List articleInfoList) { + if (articleInfoList != null && articleInfoList.size() != 0) { +// cl2.setVisibility(View.VISIBLE); + iv2.setVisibility(android.view.View.GONE); + mArticleAdapter.setArticleBeanList(articleInfoList); + } else { +// cl2.setVisibility(View.GONE); + iv2.setVisibility(android.view.View.VISIBLE); + } } - private void getArticle() { - NetInterfaceManager.getInstance().getArticleListObservable() - .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, FragmentEvent.DESTROY)) - .subscribe(new Observer>>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getArticle", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getArticle", "onNext: " + listBaseResponse); - if (listBaseResponse.code == 200) { - cl2.setVisibility(View.VISIBLE); - iv2.setVisibility(View.GONE); - List articleInfos = listBaseResponse.data; - if (articleInfos != null && articleInfos.size() != 0) { - ArticleInfo articleInfo = articleInfos.get(0); - setArticleInfo(articleInfo); - } - } else { - cl2.setVisibility(View.GONE); - iv2.setVisibility(View.VISIBLE); - } - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getArticle", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getArticle", "onComplete: "); - } - }); + @Override + public void setActivityList(List activityList) { + if (activityList != null && activityList.size() != 0) { +// cl3.setVisibility(android.view.View.VISIBLE); + iv3.setVisibility(android.view.View.GONE); + mActivityAdapter.setActivityBeans(activityList); + } else { +// cl3.setVisibility(android.view.View.GONE); + iv3.setVisibility(android.view.View.VISIBLE); + } } - - private void setArticleInfo(ArticleInfo articleInfo) { - Glide.with(iv_aimg).load(articleInfo.getImg()).into(iv_aimg); - tv_title.setText(articleInfo.getTitle()); - tv_content.setText(articleInfo.getContent()); - } - - } diff --git a/app/src/main/java/com/uiuios/aios/fragment/second/SecondPresenter.java b/app/src/main/java/com/uiuios/aios/fragment/second/SecondPresenter.java new file mode 100644 index 0000000..b53e80a --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/fragment/second/SecondPresenter.java @@ -0,0 +1,133 @@ +package com.uiuios.aios.fragment.second; + +import android.content.Context; +import android.util.Log; + +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.FragmentEvent; +import com.uiuios.aios.bean.ActivityBean; +import com.uiuios.aios.bean.ArticleInfo; +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.bean.GoodsInfo; +import com.uiuios.aios.network.NetInterfaceManager; + +import java.util.List; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +public class SecondPresenter implements SecondContact.Presenter { + + private static final String TAG = SecondPresenter.class.getSimpleName(); + private Context mContext; + private SecondContact.View mView; + + public SecondPresenter(Context context) { + this.mContext = context; + } + + private BehaviorSubject lifecycle; + + void setLifecycle(BehaviorSubject lifecycle) { + this.lifecycle = lifecycle; + } + + public BehaviorSubject getLifecycle() { + return lifecycle; + } + + @Override + public void attachView(@NonNull SecondContact.View view) { + this.mView = view; + } + + @Override + public void detachView() { + this.mView = null; + } + + @Override + public void getGoods() { + NetInterfaceManager.getInstance() + .getGoodsListObservable() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getGoods", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getGoods", "onNext: " + listBaseResponse); + List goodsInfos = listBaseResponse.data; + mView.setGoods(goodsInfos); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getGoods", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getGoods", "onComplete: "); + } + }); + } + + @Override + public void getArticle() { + NetInterfaceManager.getInstance().getArticleListObservable() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getArticle", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getArticle", "onNext: " + listBaseResponse); + mView.setArticle(listBaseResponse.data); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getArticle", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getArticle", "onComplete: "); + } + }); + } + + @Override + public void getActivityList() { + NetInterfaceManager.getInstance().getActivityList(true, getLifecycle(), new NetInterfaceManager.ActivitiesListCallback() { + @Override + public void setActivitiesList(List activityBeans) { + mView.setActivityList(activityBeans); + } + + @Override + public void noData() { + mView.setActivityList(null); + } + + @Override + public void onError() { + + } + + @Override + public void onComplete() { + + } + }); + } +} diff --git a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java index 60e217a..d618875 100644 --- a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java +++ b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java @@ -2,6 +2,7 @@ package com.uiuios.aios.manager; import android.annotation.SuppressLint; import android.content.Context; +import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -9,6 +10,7 @@ import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDLocation; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; +import com.blankj.utilcode.util.SPUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.tencent.mmkv.MMKV; @@ -27,7 +29,6 @@ public class AmapManager { private LocationClientOption mOption; private BDLocation mLocation; private CacheHelper mCacheHelper; - private MMKV mmkv = MMKV.defaultMMKV(); private static final String AMAPLOCATION_JSON_KEY = "MAPLOCATION_JSON_STRING"; public static final String LONGITUDE_KEY = "map_longitude_key"; @@ -38,6 +39,7 @@ public class AmapManager { private AmapManager(Context context) { this.mContext = context; this.mCacheHelper = new CacheHelper(context); + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps"); initAmap(); } @@ -58,7 +60,10 @@ public class AmapManager { } public void initAmap() { - mLocationClient = new LocationClient(mContext); + if (mLocationClient == null) { + mLocationClient = new LocationClient(mContext); + } + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps"); mLocationClient.setLocOption(getDefaultLocationClientOption()); mLocationClient.registerLocationListener(mListener); mLocationClient.stop(); @@ -75,7 +80,7 @@ public class AmapManager { public BDLocation getNowMapLocation() { if (mLocation == null) { - String aMapLocationjson = mmkv.decodeString(AMAPLOCATION_JSON_KEY); + String aMapLocationjson = SPUtils.getInstance().getString(AMAPLOCATION_JSON_KEY,""); if (TextUtils.isEmpty(aMapLocationjson)) { return null; } @@ -148,7 +153,7 @@ public class AmapManager { case BDLocation.TypeGpsLocation:// GPS定位结果 case BDLocation.TypeNetWorkLocation:// 网络定位结果 case BDLocation.TypeOffLineLocation:// 离线定位结果 - mmkv.encode(AMAPLOCATION_JSON_KEY, GsonUtils.toJsonString(location)); + SPUtils.getInstance().put(AMAPLOCATION_JSON_KEY, GsonUtils.toJsonString(location)); Log.e(TAG, "onLocationChanged: " + "定位成功"); Log.e(TAG, "onLocationChanged: longitude = " + location.getLongitude()); Log.e(TAG, "onLocationChanged: latitude = " + location.getLatitude()); @@ -282,6 +287,9 @@ public class AmapManager { // } Log.e(TAG, "AmapAddress: " + mCacheHelper.getAsString(ADDRESS_KEY)); Log.e(TAG, "AmapError: " + mCacheHelper.getAsString(ERROR_KEY)); + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-network"); + Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-gps"); + Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.ASSISTED_GPS_ENABLED, 0); } @Override diff --git a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java index 5465344..896a436 100644 --- a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java @@ -299,7 +299,7 @@ public class NetInterfaceManager { return userId; } - public Observer getUserIDObserver(onCompleteCallback callback) { + public Observer> getUserIDObserver(onCompleteCallback callback) { return new Observer>() { @Override public void onSubscribe(@NonNull Disposable d) { @@ -794,7 +794,7 @@ public class NetInterfaceManager { @Override public void onNext(@NonNull BaseResponse snInfoBaseResponse) { - Log.e("getSnInfo", "onNext: "); + Log.e("getSnInfo", "onNext: " + snInfoBaseResponse); callback.setSnInfo(snInfoBaseResponse.data); } diff --git a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java index b616d6a..e0c1766 100644 --- a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java @@ -31,6 +31,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.Collator; import java.util.ArrayList; +import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; @@ -59,11 +60,20 @@ public class ApkUtils { this.add("com.android.calendar"); this.add("com.android.uiuios"); this.add("com.uiui.os"); - this.add("com.uiui.health"); +// this.add("com.uiui.health"); this.add("com.tencent.android.qqdownloader"); - this.add("com.uiuios.appstore"); +// this.add("com.uiuios.appstore"); + this.add("com.joytv.live"); }}; + + private static HashSet excludeClassName = new HashSet() {{ + this.add("com.android.dialer.app.calllog.CallLogActivity"); + }}; + private static HashSet showPackageName = new HashSet() {{ + this.add("com.uiuios.sn"); + this.add("com.uiuios.browser"); +// this.add("com.uiuios.appstore"); this.add("com.android.dialer"); this.add("com.android.gallery3d"); this.add("com.android.settings"); @@ -72,7 +82,8 @@ public class ApkUtils { this.add("com.mediatek.camera"); this.add("com.android.mms"); this.add("com.uiui.city"); - this.add("com.alldocube.store"); + this.add("com.uiui.health"); +// this.add("com.alldocube.store"); this.add("com.android.fmradio"); this.add("com.android.documentsui"); this.add("com.android.calculator2"); @@ -146,8 +157,7 @@ public class ApkUtils { public static ArrayList queryFilterAppInfo(Context context) { PackageManager pm = context.getPackageManager(); // 查询所有已经安装的应用程序 - List appInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的 - ArrayList applicationInfos = new ArrayList<>(); + List resolveInfos = new ArrayList<>(); // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); @@ -158,69 +168,85 @@ public class ApkUtils { Set allowPackages = new HashSet(); for (ResolveInfo resolveInfo : resolveinfoList) { Log.i(TAG, "queryFilterAppInfo: " + resolveInfo.activityInfo.packageName); + Log.i(TAG, "queryFilterAppInfo: " + resolveInfo.activityInfo.name); allowPackages.add(resolveInfo.activityInfo.packageName); } - - for (ApplicationInfo app : appInfos) { - if (appIsDisable(context, app.packageName)) { - Log.e(TAG, "queryFilterAppInfo: disable = " + app.packageName); + String appListString = Settings.System.getString(context.getContentResolver(), "only_jgy_shortcut_list"); + List packageList = new ArrayList<>(); + if (!TextUtils.isEmpty(appListString)) { + packageList = new ArrayList<>(Arrays.asList(appListString.split(","))); + } + int setting_other_appInstaller = Settings.Global.getInt(context.getContentResolver(), "setting_other_appInstaller", 1); + for (ResolveInfo resolveInfo : resolveinfoList) { + String pkg = resolveInfo.activityInfo.packageName; + if (appIsDisable(context, pkg)) { + Log.e(TAG, "queryFilterAppInfo: disable = " + pkg); continue; } - if ((app.flags & ApplicationInfo.FLAG_SYSTEM) > 0)//通过flag排除系统应用,会将电话、短信也排除掉 + if (isSystemApp(context, pkg))//通过flag排除系统应用,会将电话、短信也排除掉 { - if (showPackageName.contains(app.packageName)) { - applicationInfos.add(app); + if (showPackageName.contains(pkg)) { + resolveInfos.add(resolveInfo); } } 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); + if (setting_other_appInstaller == 0) {//不显示自己安装的 + if (packageList.contains(pkg)) { + resolveInfos.add(resolveInfo); + } + } else { + if (allowPackages.contains(pkg) && !excludePackageName.contains(pkg)) { + resolveInfos.add(resolveInfo); + } } } } if (Settings.Global.getInt(context.getContentResolver(), "is_activity", 0) == 0) { - applicationInfos.removeIf(applicationInfo -> "com.uiui.city".equals(applicationInfo.packageName)); + resolveInfos.removeIf(resolveInfo -> "com.uiui.city".equals(resolveInfo.activityInfo.packageName)); +// resolveInfos.removeIf(applicationInfo -> "com.uiui.sn".equals(applicationInfo.packageName)); } - - applicationInfos.sort(new Comparator() { + resolveInfos.sort(new Comparator() { @Override - public int compare(ApplicationInfo o1, ApplicationInfo o2) { + public int compare(ResolveInfo o1, ResolveInfo 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() { + resolveInfos.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; + public int compare(ResolveInfo o1, ResolveInfo o2) { + try { + if ((pm.getApplicationInfo(o1.activityInfo.packageName, 0).flags & ApplicationInfo.FLAG_SYSTEM) <= (pm.getApplicationInfo(o2.activityInfo.packageName, 0).flags & ApplicationInfo.FLAG_SYSTEM)) { + return 1; + } else { + return -1; + } + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); } + return -1; } }); ArrayList desktopIcons = new ArrayList<>(); - HashMap infoHashMap = new HashMap<>(); - for (ApplicationInfo applicationInfo : applicationInfos) { - infoHashMap.put(applicationInfo.packageName, applicationInfo); - } - for (int i = 0; i < defaultSort.size(); i++) { - ApplicationInfo info = infoHashMap.get(defaultSort.get(i)); - if (info != null) { - desktopIcons.add(DesktopIcon.creatDesktopIcon(context, info, i)); - infoHashMap.remove(defaultSort.get(i)); + for (ResolveInfo applicationInfo : resolveInfos) { + if (!excludeClassName.contains(applicationInfo.activityInfo.name)) { + desktopIcons.add(DesktopIcon.creatDesktopIcon(context, applicationInfo)); } } - - for (ApplicationInfo applicationInfo : infoHashMap.values()) { - desktopIcons.add(DesktopIcon.creatDesktopIcon(context, applicationInfo)); - } return desktopIcons; } + public static boolean isSystemApp(Context context, String pkg) { + PackageManager pm = context.getPackageManager(); + ApplicationInfo applicationInfo = null; + try { + applicationInfo = pm.getApplicationInfo(pkg, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (applicationInfo == null) return false; + return (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0; + } + private static boolean appIsDisable(Context context, String pkg) { PackageManager pm = context.getPackageManager(); return pm.getApplicationEnabledSetting(pkg) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED; @@ -508,4 +534,4 @@ public class ApkUtils { return uid / PER_USER_RANGE; } - } +} diff --git a/app/src/main/java/com/uiuios/aios/utils/BitmapUtils.java b/app/src/main/java/com/uiuios/aios/utils/BitmapUtils.java index 4a0cc9b..d18acb9 100644 --- a/app/src/main/java/com/uiuios/aios/utils/BitmapUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/BitmapUtils.java @@ -61,9 +61,9 @@ public class BitmapUtils { Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); - return bitmap; + return Utils.getRoundedBitmap(bitmap, context); } else { - return ((BitmapDrawable) drawable).getBitmap(); + return Utils.getRoundedBitmap(((BitmapDrawable) drawable).getBitmap(), context); } } catch (Exception e) { return null; diff --git a/app/src/main/java/com/uiuios/aios/utils/GlideLoadUtils.java b/app/src/main/java/com/uiuios/aios/utils/GlideLoadUtils.java index bb5a06b..513abbd 100644 --- a/app/src/main/java/com/uiuios/aios/utils/GlideLoadUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/GlideLoadUtils.java @@ -72,7 +72,7 @@ public class GlideLoadUtils { if (fragment != null && fragment.getActivity() != null) { Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView); } else { - Log.i(TAG, "Picture loading failed,android.app.Fragment is null"); + Log.i(TAG, "Picture loading failed,android.app.SecondFragment is null"); } } } diff --git a/app/src/main/java/com/uiuios/aios/utils/Utils.java b/app/src/main/java/com/uiuios/aios/utils/Utils.java index e1c08df..36a1cb4 100644 --- a/app/src/main/java/com/uiuios/aios/utils/Utils.java +++ b/app/src/main/java/com/uiuios/aios/utils/Utils.java @@ -9,6 +9,12 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; import android.os.BatteryManager; import android.os.Build; import android.os.Environment; @@ -20,6 +26,7 @@ import android.util.Log; import androidx.core.content.ContextCompat; import com.uiuios.aios.BuildConfig; +import com.uiuios.aios.R; import java.io.File; import java.lang.reflect.Method; @@ -203,5 +210,53 @@ public class Utils { } } + public static Bitmap getRoundedBitmap(Bitmap mBitmap, Context context) { + Bitmap bgBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888); + + Bitmap mask = BitmapFactory.decodeResource(context.getResources(), R.drawable.mask); + int width = mask.getWidth(); + int height = mask.getHeight(); + Bitmap bitmapScale = Bitmap.createScaledBitmap(mBitmap, width, height, true); + bitmapScale.setDensity(context.getResources().getDisplayMetrics().densityDpi); +// Palette p = Palette.from(mBitmap).generate(); +// Palette.Swatch vibrant = p.getVibrantSwatch();//有活力的 +// int color = vibrant.getRgb(); //样本中的像素数量 + + Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(); + Paint paint = new Paint(); + + canvas.setBitmap(result); +// canvas.drawColor(color); + canvas.drawBitmap(mask, 0, 0, paint); +// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); + canvas.drawBitmap(bitmapScale, 0, 0, paint); +// return result; + + Bitmap result2 = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas2 = new Canvas(); + Paint paint2 = new Paint(); + canvas2.setBitmap(result2); + canvas2.drawBitmap(mask, 0, 0, paint2); + paint2.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); + canvas2.drawBitmap(result, 0, 0, paint2); + return result2; + + +// Canvas mCanvas = new Canvas(); +// mCanvas.setBitmap(bgBitmap); +// Paint mPaint = new Paint(); +// RectF mRectM = new RectF(scaleM, scaleM, mBitmap.getWidth() - scaleM, mBitmap.getHeight() - scaleM); //设置剪裁圆角的区域 +// Rect mRect = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight()); +// RectF mRectF = mRectM; +// +// float roundPx = 15; //圆角半径 +// mPaint.setAntiAlias(true); +// //Log.d("wy"+TAG,"mBitmap.getWidth()="+mBitmap.getWidth()+", mBitmap.getHeight()="+mBitmap.getHeight()); +// mCanvas.drawRoundRect(mRectF, roundPx, roundPx, mPaint); +// mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); +// mCanvas.drawBitmap(mBitmap, mRect, mRect, mPaint); +// return bgBitmap; + } } diff --git a/app/src/main/java/com/uiuios/aios/view/CenterImageSpan.java b/app/src/main/java/com/uiuios/aios/view/CenterImageSpan.java new file mode 100644 index 0000000..9fb8d89 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/view/CenterImageSpan.java @@ -0,0 +1,25 @@ +package com.uiuios.aios.view; + +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.drawable.Drawable; +import android.text.style.ImageSpan; + +import androidx.annotation.NonNull; + +public class CenterImageSpan extends ImageSpan { + public CenterImageSpan(Drawable drawable) { + super(drawable); + } + + @Override + public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) { + Drawable b = getDrawable(); + Paint.FontMetricsInt fm = paint.getFontMetricsInt(); + int transY = (y + fm.descent + y + fm.ascent) / 2 - b.getBounds().bottom / 2; + canvas.save(); + canvas.translate(x, transY); + b.draw(canvas); + canvas.restore(); + } +} diff --git a/app/src/main/java/com/uiuios/aios/view/GridSpaceItemDecoration.java b/app/src/main/java/com/uiuios/aios/view/GridSpaceItemDecoration.java new file mode 100644 index 0000000..d156cde --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/view/GridSpaceItemDecoration.java @@ -0,0 +1,59 @@ +package com.uiuios.aios.view; + +import android.graphics.Rect; +import android.util.Log; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +/** + * 描述 : RecyclerView GridLayoutManager 等间距。 + *

+ * 等间距需满足两个条件: + * 1.各个模块的大小相等,即 各列的left+right 值相等; + * 2.各列的间距相等,即 前列的right + 后列的left = 列间距; + *

+ * 在{@link #getItemOffsets(Rect, View, RecyclerView, RecyclerView.State)} 中针对 outRect 的left 和right 满足这两个条件即可 + *

+ * 作者 : shiguotao + * 版本 : V1 + * 创建时间 : 2020/3/19 4:54 PM + */ +public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration { + + private final String TAG = "GridSpaceItemDecoration"; + + private int mSpanCount;//横条目数量 + private int mRowSpacing;//行间距 + private int mColumnSpacing;// 列间距 + + /** + * @param spanCount 列数 + * @param rowSpacing 行间距 + * @param columnSpacing 列间距 + */ + public GridSpaceItemDecoration(int spanCount, int rowSpacing, int columnSpacing) { + this.mSpanCount = spanCount; + this.mRowSpacing = rowSpacing; + this.mColumnSpacing = columnSpacing; + } + + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { + int position = parent.getChildAdapterPosition(view); // 获取view 在adapter中的位置。 + int column = position % mSpanCount; // view 所在的列 + + outRect.left = column * mColumnSpacing / mSpanCount; // column * (列间距 * (1f / 列数)) + outRect.right = mColumnSpacing - (column + 1) * mColumnSpacing / mSpanCount; // 列间距 - (column + 1) * (列间距 * (1f /列数)) + + Log.e(TAG, "position:" + position + + " columnIndex: " + column + + " left,right ->" + outRect.left + "," + outRect.right); + + // 如果position > 行数,说明不是在第一行,则不指定行高,其他行的上间距为 top=mRowSpacing + if (position >= mSpanCount) { + outRect.top = mRowSpacing; // item top + } + } +} diff --git a/app/src/main/res/drawable-hdpi/battery_icon.png b/app/src/main/res/drawable-hdpi/battery_icon.png new file mode 100644 index 0000000..c54a198 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/battery_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/certified.png b/app/src/main/res/drawable-hdpi/certified.png new file mode 100644 index 0000000..7885377 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/certified.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_appstore.png b/app/src/main/res/drawable-hdpi/com_android_appstore.png index 03443fa..9b06c7c 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_appstore.png and b/app/src/main/res/drawable-hdpi/com_android_appstore.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_browser.png b/app/src/main/res/drawable-hdpi/com_android_browser.png index 405eb59..c569613 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_browser.png and b/app/src/main/res/drawable-hdpi/com_android_browser.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_calculator2.png b/app/src/main/res/drawable-hdpi/com_android_calculator2.png index 9bb3287..31402e7 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_calculator2.png and b/app/src/main/res/drawable-hdpi/com_android_calculator2.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_calendar.png b/app/src/main/res/drawable-hdpi/com_android_calendar.png index e70be32..0065e28 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_calendar.png and b/app/src/main/res/drawable-hdpi/com_android_calendar.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_camera.png b/app/src/main/res/drawable-hdpi/com_android_camera.png index 85ad259..bbeb62c 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_camera.png and b/app/src/main/res/drawable-hdpi/com_android_camera.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_clean.png b/app/src/main/res/drawable-hdpi/com_android_clean.png index 02a2238..be7eae1 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_clean.png and b/app/src/main/res/drawable-hdpi/com_android_clean.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_contacts.png b/app/src/main/res/drawable-hdpi/com_android_contacts.png index ed2d5e2..b204ea0 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_contacts.png and b/app/src/main/res/drawable-hdpi/com_android_contacts.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_deskclock.png b/app/src/main/res/drawable-hdpi/com_android_deskclock.png index 986e8e5..81bf96f 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_deskclock.png and b/app/src/main/res/drawable-hdpi/com_android_deskclock.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_dialer.png b/app/src/main/res/drawable-hdpi/com_android_dialer.png index 48775aa..5bf5306 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_dialer.png and b/app/src/main/res/drawable-hdpi/com_android_dialer.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png b/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png index e9da7c3..a5177c3 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png and b/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_mms_ui.png b/app/src/main/res/drawable-hdpi/com_android_mms_ui.png index c6c5af5..1ac19f2 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_mms_ui.png and b/app/src/main/res/drawable-hdpi/com_android_mms_ui.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_music.png b/app/src/main/res/drawable-hdpi/com_android_music.png index 9c898d3..d0b55a9 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_music.png and b/app/src/main/res/drawable-hdpi/com_android_music.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_settings.png b/app/src/main/res/drawable-hdpi/com_android_settings.png index 1a258a7..ad4e3a7 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_settings.png and b/app/src/main/res/drawable-hdpi/com_android_settings.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png b/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png index 915c773..538075f 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png and b/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png b/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png index efefc92..1af7e9e 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png and b/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png differ diff --git a/app/src/main/res/drawable-hdpi/com_android_vdieo.png b/app/src/main/res/drawable-hdpi/com_android_vdieo.png index 09e158c..a031a22 100644 Binary files a/app/src/main/res/drawable-hdpi/com_android_vdieo.png and b/app/src/main/res/drawable-hdpi/com_android_vdieo.png differ diff --git a/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png b/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png index deec7e2..2c5128a 100644 Binary files a/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png and b/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png differ diff --git a/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png b/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png index 0bc578f..f62afdf 100644 Binary files a/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png and b/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png differ diff --git a/app/src/main/res/drawable-hdpi/default_head.png b/app/src/main/res/drawable-hdpi/default_head.png index fd9bca2..2568371 100644 Binary files a/app/src/main/res/drawable-hdpi/default_head.png and b/app/src/main/res/drawable-hdpi/default_head.png differ diff --git a/app/src/main/res/drawable-hdpi/details_back.png b/app/src/main/res/drawable-hdpi/details_back.png new file mode 100644 index 0000000..dc692d8 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/details_back.png differ diff --git a/app/src/main/res/drawable-hdpi/home_contact_icon.png b/app/src/main/res/drawable-hdpi/home_contact_icon.png index 9d8be3c..878dbd4 100644 Binary files a/app/src/main/res/drawable-hdpi/home_contact_icon.png and b/app/src/main/res/drawable-hdpi/home_contact_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/home_health_code.png b/app/src/main/res/drawable-hdpi/home_health_code.png index 6daed8e..e1ddcec 100644 Binary files a/app/src/main/res/drawable-hdpi/home_health_code.png and b/app/src/main/res/drawable-hdpi/home_health_code.png differ diff --git a/app/src/main/res/drawable-hdpi/home_quick_app.png b/app/src/main/res/drawable-hdpi/home_quick_app.png new file mode 100644 index 0000000..484855b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/home_quick_app.png differ diff --git a/app/src/main/res/drawable-hdpi/home_sos_icon.png b/app/src/main/res/drawable-hdpi/home_sos_icon.png index 2da460f..7adedc0 100644 Binary files a/app/src/main/res/drawable-hdpi/home_sos_icon.png and b/app/src/main/res/drawable-hdpi/home_sos_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_dialer.png b/app/src/main/res/drawable-hdpi/icon_dialer.png new file mode 100644 index 0000000..c657b8a Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_dialer.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_selected.png b/app/src/main/res/drawable-hdpi/icon_selected.png new file mode 100644 index 0000000..d9560f2 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_selected.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_unselected.png b/app/src/main/res/drawable-hdpi/icon_unselected.png new file mode 100644 index 0000000..d21c906 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_unselected.png differ diff --git a/app/src/main/res/drawable-hdpi/insurance.png b/app/src/main/res/drawable-hdpi/insurance.png new file mode 100644 index 0000000..0c84e2b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/insurance.png differ diff --git a/app/src/main/res/drawable-hdpi/mask.png b/app/src/main/res/drawable-hdpi/mask.png new file mode 100644 index 0000000..1facd94 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/mask.png differ diff --git a/app/src/main/res/drawable-hdpi/search_icon.png b/app/src/main/res/drawable-hdpi/search_icon.png new file mode 100644 index 0000000..77d5ab4 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/search_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/ship.png b/app/src/main/res/drawable-hdpi/ship.png new file mode 100644 index 0000000..e1ef521 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ship.png differ diff --git a/app/src/main/res/drawable-hdpi/systemapp_icon.png b/app/src/main/res/drawable-hdpi/systemapp_icon.png index 4e403d5..65938ac 100644 Binary files a/app/src/main/res/drawable-hdpi/systemapp_icon.png and b/app/src/main/res/drawable-hdpi/systemapp_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/wifi_connect.png b/app/src/main/res/drawable-hdpi/wifi_connect.png new file mode 100644 index 0000000..2be1fea Binary files /dev/null and b/app/src/main/res/drawable-hdpi/wifi_connect.png differ diff --git a/app/src/main/res/drawable-hdpi/wifi_disconnect.png b/app/src/main/res/drawable-hdpi/wifi_disconnect.png new file mode 100644 index 0000000..758411b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/wifi_disconnect.png differ diff --git a/app/src/main/res/drawable/app_select_background.xml b/app/src/main/res/drawable/app_select_background.xml new file mode 100644 index 0000000..d4c331c --- /dev/null +++ b/app/src/main/res/drawable/app_select_background.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/barcolor.xml b/app/src/main/res/drawable/barcolor.xml new file mode 100644 index 0000000..1f04f33 --- /dev/null +++ b/app/src/main/res/drawable/barcolor.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/buying_bg.xml b/app/src/main/res/drawable/buying_bg.xml new file mode 100644 index 0000000..e456354 --- /dev/null +++ b/app/src/main/res/drawable/buying_bg.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/class_bg.xml b/app/src/main/res/drawable/class_bg.xml new file mode 100644 index 0000000..7b1146c --- /dev/null +++ b/app/src/main/res/drawable/class_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/contact_bg1.xml b/app/src/main/res/drawable/contact_bg1.xml new file mode 100644 index 0000000..77328c0 --- /dev/null +++ b/app/src/main/res/drawable/contact_bg1.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/contact_bg2.xml b/app/src/main/res/drawable/contact_bg2.xml new file mode 100644 index 0000000..cd93cd4 --- /dev/null +++ b/app/src/main/res/drawable/contact_bg2.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/contact_bg3.xml b/app/src/main/res/drawable/contact_bg3.xml new file mode 100644 index 0000000..221fe59 --- /dev/null +++ b/app/src/main/res/drawable/contact_bg3.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/control_background_item.xml b/app/src/main/res/drawable/control_background_item.xml index 03dd6b2..1e5456a 100644 --- a/app/src/main/res/drawable/control_background_item.xml +++ b/app/src/main/res/drawable/control_background_item.xml @@ -2,7 +2,7 @@ - + - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/custom_bg_health.xml b/app/src/main/res/drawable/custom_bg_health.xml index 0bfd56f..82577af 100644 --- a/app/src/main/res/drawable/custom_bg_health.xml +++ b/app/src/main/res/drawable/custom_bg_health.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android"> + android:color="@color/white" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/join_background.xml b/app/src/main/res/drawable/join_background.xml index 66d24fe..604e336 100644 --- a/app/src/main/res/drawable/join_background.xml +++ b/app/src/main/res/drawable/join_background.xml @@ -1,9 +1,9 @@ - + - + - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/notice_voice_background.xml b/app/src/main/res/drawable/notice_voice_background.xml index 0383881..374644b 100644 --- a/app/src/main/res/drawable/notice_voice_background.xml +++ b/app/src/main/res/drawable/notice_voice_background.xml @@ -1,7 +1,7 @@ - + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_progress_default.xml b/app/src/main/res/drawable/seekbar_progress_default.xml index 51055e4..3743c05 100644 --- a/app/src/main/res/drawable/seekbar_progress_default.xml +++ b/app/src/main/res/drawable/seekbar_progress_default.xml @@ -36,7 +36,7 @@ - + diff --git a/app/src/main/res/drawable/subsidy_bg.xml b/app/src/main/res/drawable/subsidy_bg.xml new file mode 100644 index 0000000..8380970 --- /dev/null +++ b/app/src/main/res/drawable/subsidy_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_control.xml b/app/src/main/res/layout-land/activity_control.xml index d83e2ba..f454c21 100644 --- a/app/src/main/res/layout-land/activity_control.xml +++ b/app/src/main/res/layout-land/activity_control.xml @@ -37,7 +37,6 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/iv_back" app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - \ 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 fd385cc..5e9032f 100644 --- a/app/src/main/res/layout-land/fragment_custom.xml +++ b/app/src/main/res/layout-land/fragment_custom.xml @@ -13,37 +13,120 @@ android:id="@+id/constraintLayout5" android:layout_width="match_parent" android:layout_height="@dimen/dp_40" + android:layout_marginStart="@dimen/dp_8" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - - + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + - - - + android:background="@drawable/custom_bg_health" + android:visibility="gone"> + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + @@ -591,7 +711,7 @@ - + diff --git a/app/src/main/res/layout-land/fragment_second.xml b/app/src/main/res/layout-land/fragment_second.xml index 864d397..6f85edb 100644 --- a/app/src/main/res/layout-land/fragment_second.xml +++ b/app/src/main/res/layout-land/fragment_second.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".fragment.SecondFragment"> + tools:context="fragment.second.SecondFragment"> @@ -30,20 +30,31 @@ android:id="@+id/textView9" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginTop="16dp" + android:layout_marginStart="@dimen/dp_12" + android:layout_marginTop="@dimen/dp_12" android:maxLines="1" android:text="秒杀抢购" android:textColor="@color/black" - android:textSize="18sp" + android:textSize="@dimen/sp_15" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@+id/textView9" + tools:layout_editor_absoluteX="0dp" /> @@ -181,10 +82,10 @@ @@ -192,20 +93,31 @@ android:id="@+id/textView13" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginTop="16dp" + android:layout_marginStart="@dimen/dp_12" + android:layout_marginTop="@dimen/dp_12" android:maxLines="1" android:text="养生资讯" android:textColor="@color/black" - android:textSize="18sp" + android:textSize="@dimen/sp_15" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + @@ -246,7 +167,7 @@ android:id="@+id/tv_content" android:layout_width="0dp" android:layout_height="0dp" - android:layout_marginTop="8dp" + android:layout_marginTop="@dimen/dp_8" android:text="" app:layout_constraintBottom_toBottomOf="@+id/iv_aimg" app:layout_constraintEnd_toEndOf="parent" @@ -257,8 +178,8 @@ android:id="@+id/tv_readnow" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="16dp" - android:layout_marginBottom="16dp" + android:layout_marginEnd="@dimen/dp_12" + android:layout_marginBottom="@dimen/dp_12" android:text="阅读全文" android:textSize="22sp" app:layout_constraintBottom_toBottomOf="parent" @@ -270,17 +191,18 @@ android:id="@+id/cl_activity" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginStart="4dp" - android:layout_marginTop="4dp" - android:layout_marginEnd="8dp" - android:layout_marginBottom="8dp" + android:layout_marginStart="@dimen/dp_4" + android:layout_marginTop="@dimen/dp_4" + android:layout_marginEnd="@dimen/dp_8" + android:layout_marginBottom="@dimen/dp_8" android:layout_weight="1" - android:background="@drawable/custom_bg"> + android:background="@drawable/custom_bg" + android:visibility="gone"> + + - @@ -552,7 +482,7 @@ android:id="@+id/tv_title_d" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="16dp" + android:layout_marginStart="@dimen/dp_12" android:maxLines="1" android:text="活动名称" android:textColor="@color/black" @@ -572,7 +502,7 @@ app:layout_constraintBottom_toBottomOf="@+id/tv_title_d" app:layout_constraintStart_toEndOf="@+id/tv_title_d" app:layout_constraintTop_toTopOf="@+id/tv_title_d" - app:layout_goneMarginStart="4dp" /> + app:layout_goneMarginStart="@dimen/dp_4" /> - - diff --git a/app/src/main/res/layout-land/item_goods_list.xml b/app/src/main/res/layout-land/item_goods_list.xml new file mode 100644 index 0000000..24cc978 --- /dev/null +++ b/app/src/main/res/layout-land/item_goods_list.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/item_notification.xml b/app/src/main/res/layout-land/item_notification.xml new file mode 100644 index 0000000..c2390ee --- /dev/null +++ b/app/src/main/res/layout-land/item_notification.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_control.xml b/app/src/main/res/layout-port/activity_control.xml index a08ca6d..ce6d00f 100644 --- a/app/src/main/res/layout-port/activity_control.xml +++ b/app/src/main/res/layout-port/activity_control.xml @@ -37,7 +37,6 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/iv_back" app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - @@ -479,7 +471,5 @@ app:layout_constraintStart_toEndOf="@+id/iv_location" app:layout_constraintTop_toTopOf="parent" /> - - \ 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 c787f1f..35318e1 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -13,37 +13,119 @@ android:id="@+id/constraintLayout5" android:layout_width="match_parent" android:layout_height="@dimen/dp_40" + android:layout_marginStart="@dimen/dp_8" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - - + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + @@ -190,7 +273,7 @@ android:orientation="horizontal"> + android:background="@drawable/custom_bg_white"> - - + app:layout_constraintTop_toTopOf="parent" /> + - - - - - - - - - - @@ -273,7 +342,7 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_8" android:text="紧急呼叫" - android:textColor="@color/lightGray" + android:textColor="@color/title_gray" android:textSize="@dimen/sp_17" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" @@ -333,6 +402,7 @@ android:layout_height="@dimen/dp_20" android:layout_marginStart="@dimen/dp_8" android:layout_marginTop="@dimen/dp_16" + android:visibility="gone" android:src="@drawable/home_icon_clean" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -343,10 +413,10 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_8" android:text="一键加速" - android:textColor="@color/lightGray" + android:textColor="@color/title_gray" android:textSize="@dimen/sp_17" android:textStyle="bold" - android:visibility="gone" + android:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -446,7 +516,6 @@ - + android:background="@drawable/custom_bg_health" + android:visibility="gone"> + + + + - + + + + + + + + + + + + + + + + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + + + + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - + - + - + + - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - + @@ -688,7 +827,6 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout-port/fragment_second.xml b/app/src/main/res/layout-port/fragment_second.xml index 93f82b2..e3416c5 100644 --- a/app/src/main/res/layout-port/fragment_second.xml +++ b/app/src/main/res/layout-port/fragment_second.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".fragment.SecondFragment"> + tools:context="fragment.second.SecondFragment"> @@ -25,20 +25,31 @@ android:id="@+id/textView9" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginTop="16dp" + android:layout_marginStart="@dimen/dp_12" + android:layout_marginTop="@dimen/dp_12" android:maxLines="1" android:text="秒杀抢购" android:textColor="@color/black" - android:textSize="18sp" + android:textSize="@dimen/sp_15" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@+id/textView9" /> + + + + @@ -234,7 +154,7 @@ android:id="@+id/tv_content" android:layout_width="0dp" android:layout_height="0dp" - android:layout_marginTop="8dp" + android:layout_marginTop="@dimen/dp_8" android:text="" app:layout_constraintBottom_toBottomOf="@+id/iv_aimg" app:layout_constraintEnd_toEndOf="parent" @@ -245,8 +165,8 @@ android:id="@+id/tv_readnow" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="16dp" - android:layout_marginBottom="16dp" + android:layout_marginEnd="@dimen/dp_12" + android:layout_marginBottom="@dimen/dp_12" android:text="阅读全文" android:textSize="22sp" app:layout_constraintBottom_toBottomOf="parent" @@ -258,17 +178,18 @@ android:id="@+id/cl_activity" android:layout_width="match_parent" android:layout_height="0dp" - android:layout_marginStart="8dp" - android:layout_marginTop="4dp" - android:layout_marginEnd="8dp" - android:layout_marginBottom="8dp" + android:layout_marginStart="@dimen/dp_8" + android:layout_marginTop="@dimen/dp_4" + android:layout_marginEnd="@dimen/dp_8" + android:layout_marginBottom="@dimen/dp_8" android:layout_weight="2" - android:background="@drawable/custom_bg"> + android:background="@drawable/custom_bg" + android:visibility="gone"> + + - @@ -541,7 +470,7 @@ android:id="@+id/tv_title_d" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="16dp" + android:layout_marginStart="@dimen/dp_12" android:maxLines="1" android:text="活动名称" android:textColor="@color/black" @@ -561,7 +490,7 @@ app:layout_constraintBottom_toBottomOf="@+id/tv_title_d" app:layout_constraintStart_toEndOf="@+id/tv_title_d" app:layout_constraintTop_toTopOf="@+id/tv_title_d" - app:layout_goneMarginStart="4dp" /> + app:layout_goneMarginStart="@dimen/dp_4" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout-port/item_goods_list.xml b/app/src/main/res/layout-port/item_goods_list.xml new file mode 100644 index 0000000..78ff5ca --- /dev/null +++ b/app/src/main/res/layout-port/item_goods_list.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout-port/item_notification.xml similarity index 83% rename from app/src/main/res/layout/item_notification.xml rename to app/src/main/res/layout-port/item_notification.xml index 62739ad..e79cee9 100644 --- a/app/src/main/res/layout/item_notification.xml +++ b/app/src/main/res/layout-port/item_notification.xml @@ -1,7 +1,6 @@ @@ -9,7 +8,6 @@ android:id="@+id/root" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -26,21 +24,33 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + app:layout_constraintTop_toBottomOf="@+id/iv_cover" /> diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml new file mode 100644 index 0000000..3546b06 --- /dev/null +++ b/app/src/main/res/layout/activity_details.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_info_list.xml b/app/src/main/res/layout/activity_info_list.xml new file mode 100644 index 0000000..8903711 --- /dev/null +++ b/app/src/main/res/layout/activity_info_list.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_quick_app.xml b/app/src/main/res/layout/activity_quick_app.xml new file mode 100644 index 0000000..79f90ea --- /dev/null +++ b/app/src/main/res/layout/activity_quick_app.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_spike_list.xml b/app/src/main/res/layout/activity_spike_list.xml new file mode 100644 index 0000000..bd268be --- /dev/null +++ b/app/src/main/res/layout/activity_spike_list.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_applist.xml b/app/src/main/res/layout/fragment_applist.xml index 3d163bf..9bfc5e0 100644 --- a/app/src/main/res/layout/fragment_applist.xml +++ b/app/src/main/res/layout/fragment_applist.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".fragment.AppListFragment"> + tools:context="fragment.AppListFragment"> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_app_select.xml b/app/src/main/res/layout/item_app_select.xml new file mode 100644 index 0000000..4378edc --- /dev/null +++ b/app/src/main/res/layout/item_app_select.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_article.xml b/app/src/main/res/layout/item_article.xml new file mode 100644 index 0000000..15f0fcb --- /dev/null +++ b/app/src/main/res/layout/item_article.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_goods.xml b/app/src/main/res/layout/item_goods.xml new file mode 100644 index 0000000..78ff5ca --- /dev/null +++ b/app/src/main/res/layout/item_goods.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index ec3102b..50f2706 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index ec3102b..50f2706 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index ec3102b..50f2706 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index ec3102b..50f2706 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index fb88041..18a36ad 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -12,9 +12,10 @@ #FFD3D3D3 #4880ff #F8B551 - #0480FF + #0480FF #4D4B50 #FF0000 + #F1B3B3 #17233b #8e6afb @@ -25,10 +26,12 @@ #3f8f4b #e08c61 #536fae - #92e4a0 + #00d56b #eae8e8 #bbbaba #182237 - + #858585 + #F44250 + #F5AAA7 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f9ee09d..c989c5c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,5 +2,5 @@ AIOS系统 - Hello blank fragment + Hello blank secondFragment