fix:
update:更新图标,增加健康码模块
This commit is contained in:
2022-03-02 10:15:09 +08:00
parent 25b0d5d542
commit f6307220f2
25 changed files with 613 additions and 67 deletions

View File

@@ -0,0 +1,121 @@
package com.uiui.os.activity;
import android.graphics.Color;
import android.util.Log;
import android.widget.ImageView;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiui.os.R;
import com.uiui.os.adapter.HealthCodeAdapter;
import com.uiui.os.base.BaseActivity;
import com.uiui.os.bean.BaseResponse;
import com.uiui.os.bean.HealthCode;
import com.uiui.os.network.NetInterfaceManager;
import com.uiui.os.utils.Utils;
import com.uiui.os.view.ScaleCircleNavigator;
import net.lucode.hackware.magicindicator.MagicIndicator;
import net.lucode.hackware.magicindicator.ViewPagerHelper;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
public class CodeActivity extends BaseActivity {
@BindView(R.id.viewPager)
ViewPager mViewPager;
@BindView(R.id.magicIndicator)
MagicIndicator mMagicIndicator;
private HealthCodeAdapter mHealthCodeAdapter;
private ScaleCircleNavigator scaleCircleNavigator;
@Override
public int getLayoutId() {
return R.layout.activity_code;
}
@Override
public void initView() {
ButterKnife.bind(this);
mHealthCodeAdapter = new HealthCodeAdapter();
mViewPager.setAdapter(mHealthCodeAdapter);
scaleCircleNavigator = new ScaleCircleNavigator(this);
}
@Override
public void initData() {
getHealthCode();
}
private void setImageViews(List<HealthCode> healthCodes) {
mMagicIndicator.setNavigator(scaleCircleNavigator);
scaleCircleNavigator.setCircleCount(healthCodes.size());
scaleCircleNavigator.setNormalCircleColor(Color.DKGRAY);
scaleCircleNavigator.setSelectedCircleColor(Color.LTGRAY);
scaleCircleNavigator.setCircleClickListener(new ScaleCircleNavigator.OnCircleClickListener() {
@Override
public void onClick(int index) {
}
});
ViewPagerHelper.bind(mMagicIndicator, mViewPager);
List<ImageView> imageViews = new ArrayList<>();
for (HealthCode healthCode : healthCodes) {
ImageView image = new ImageView(this);
image.setAdjustViewBounds(true);
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
Glide.with(this).load(healthCode.getImg()).into(image);
imageViews.add(image);
}
mHealthCodeAdapter.setImageViews(imageViews);
mHealthCodeAdapter.notifyDataSetChanged();
}
private void getHealthCode() {
NetInterfaceManager.getInstance().getHealthCodeApi()
.getArticleDetails(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<HealthCode>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getHealthCode", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<List<HealthCode>> listBaseResponse) {
Log.e("getHealthCode", "onNext: " + listBaseResponse);
if (listBaseResponse.code == 200) {
List<HealthCode> healthCodeList = listBaseResponse.data;
setImageViews(healthCodeList);
} else {
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getHealthCode", "onError: ");
}
@Override
public void onComplete() {
Log.e("getHealthCode", "onComplete: ");
}
});
}
}

View File

@@ -32,6 +32,7 @@ import com.uiui.os.bean.DesktopIcon;
import com.uiui.os.fragment.AppListFragment;
import com.uiui.os.fragment.BaseFragmentPagerAdapter;
import com.uiui.os.fragment.CustomFragment;
import com.uiui.os.fragment.SecondFragment;
import com.uiui.os.utils.APKUtils;
import com.uiui.os.utils.AppUsedTimeUtils;
import com.uiui.os.view.ScaleCircleNavigator;
@@ -60,6 +61,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter;
private List<Fragment> mFragments;
private CustomFragment mCustomFragment;
private SecondFragment mSecondFragment;
@Override
public int getLayoutId() {
@@ -79,6 +81,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments);
// fragmentTransaction.add(R.id.viewPager, appListFragment);
// fragmentTransaction.commit();
mSecondFragment = new SecondFragment();
mFragments.add(mSecondFragment);
mCustomFragment = new CustomFragment();
mFragments.add(mCustomFragment);

View File

@@ -0,0 +1,43 @@
package com.uiui.os.adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;
public class HealthCodeAdapter extends PagerAdapter {
private List<ImageView> mImageViews;
public void setImageViews(List<ImageView> imageViews) {
this.mImageViews = imageViews;
}
@Override
public int getCount() {
return mImageViews == null ? 0 : mImageViews.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
// 给 container 添加一个view
container.addView(mImageViews.get(position));
// 返回一个和该view相对的object
return mImageViews.get(position);
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView(mImageViews.get(position));
}
}

View File

@@ -0,0 +1,26 @@
package com.uiui.os.bean;
import java.io.Serializable;
public class HealthCode implements Serializable {
private static final long serialVersionUID = 3722434160181671038L;
int id;
String img;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
}

View File

@@ -44,6 +44,7 @@ import com.tencent.mmkv.MMKV;
import com.uiui.os.BuildConfig;
import com.uiui.os.R;
import com.uiui.os.activity.APPListActivity;
import com.uiui.os.activity.CodeActivity;
import com.uiui.os.activity.EmergencyActivity;
import com.uiui.os.activity.weather.WeatherActivity;
import com.uiui.os.adapter.AlarmClockAdapter;
@@ -72,10 +73,13 @@ import butterknife.ButterKnife;
* create an instance of this fragment.
*/
public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkStatusChangedListener {
@BindView(R.id.cl_alarm)
ConstraintLayout cl_alarm;
// @BindView(R.id.cl_alarm)
// ConstraintLayout cl_alarm;
@BindView(R.id.cl_wifi)
ConstraintLayout cl_wifi;
@BindView(R.id.qr_code)
ConstraintLayout qr_code;
@BindView(R.id.cl_sos)
ConstraintLayout cl_soso;
@BindView(R.id.cl_allapp)
@@ -84,8 +88,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
ConstraintLayout cl_weather;
@BindView(R.id.cl_battery)
ConstraintLayout cl_battery;
@BindView(R.id.tv_add)
TextView tv_add;
// @BindView(R.id.tv_add)
// TextView tv_add;
@BindView(R.id.tv_battery)
TextView tv_battery;
@BindView(R.id.tv_location)
@@ -100,8 +104,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
ImageView iv_charging;
@BindView(R.id.rv_noti)
RecyclerView rv_noti;
@BindView(R.id.rv_clock)
RecyclerView rv_clock;
// @BindView(R.id.rv_clock)
// RecyclerView rv_clock;
@BindView(R.id.wifi_ssid)
TextView wifi_ssid;
@BindView(R.id.iv_sos)
@@ -118,7 +122,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
private View rootView;
private List<AlarmItem> alarmItemList;
private NotificationAdapter notificationAdapter;
private AlarmClockAdapter alarmClockAdapter;
// private AlarmClockAdapter alarmClockAdapter;
private SOSNnmberAdapter sosNnmberAdapter;
private MMKV mmkv;
private Context mContext;
@@ -157,7 +161,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
public void setAlarmItem(List<AlarmItem> alarmItem) {
this.alarmItemList = alarmItem;
setAlarm();
// setAlarm();
}
@Override
@@ -287,12 +291,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
killBackgroundApp();
}
});
cl_alarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
APKUtils.openPackage(getActivity(), "com.alarmclock.uiui");
}
});
// cl_alarm.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// APKUtils.openPackage(getActivity(), "com.alarmclock.uiui");
// }
// });
notificationAdapter = new NotificationAdapter();
rv_noti.setLayoutManager(new LinearLayoutManager(getActivity()));
rv_noti.setAdapter(notificationAdapter);
@@ -307,9 +311,9 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面
}
});
alarmClockAdapter = new AlarmClockAdapter();
rv_clock.setLayoutManager(new LinearLayoutManager(getActivity()));
rv_clock.setAdapter(alarmClockAdapter);
// alarmClockAdapter = new AlarmClockAdapter();
// rv_clock.setLayoutManager(new LinearLayoutManager(getActivity()));
// rv_clock.setAdapter(alarmClockAdapter);
sosNnmberAdapter = new SOSNnmberAdapter();
rv_sos.setLayoutManager(new LinearLayoutManager(getActivity()));
rv_sos.setAdapter(sosNnmberAdapter);
@@ -345,14 +349,20 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
}
}
});
setAlarm();
qr_code.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(), CodeActivity.class));
}
});
// setAlarm();
refreshMemory();
}
@Override
public void onResume() {
super.onResume();
setAlarm();
// setAlarm();
setSosNumber();
}
@@ -372,12 +382,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
private void setAlarm() {
if (rootView == null) return;
if (alarmItemList == null) {
tv_add.setVisibility(View.VISIBLE);
rv_clock.setVisibility(View.GONE);
// tv_add.setVisibility(View.VISIBLE);
// rv_clock.setVisibility(View.GONE);
} else {
tv_add.setVisibility(View.GONE);
rv_clock.setVisibility(View.VISIBLE);
alarmClockAdapter.setAlarmItemList(alarmItemList);
// tv_add.setVisibility(View.GONE);
// rv_clock.setVisibility(View.VISIBLE);
// alarmClockAdapter.setAlarmItemList(alarmItemList);
}
}

View File

@@ -0,0 +1,65 @@
package com.uiui.os.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.uiui.os.R;
/**
* A simple {@link Fragment} subclass.
* Use the {@link SecondFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class SecondFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public SecondFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment SecondFragment.
*/
// TODO: Rename and change types and number of parameters
public static SecondFragment newInstance(String param1, String param2) {
SecondFragment fragment = new SecondFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_second, container, false);
}
}

View File

@@ -10,6 +10,7 @@ import com.uiui.os.bean.NetDesktopIcon;
import com.uiui.os.network.api.AlarmClockApi;
import com.uiui.os.network.api.AppUsageRecordApi;
import com.uiui.os.network.api.GetDesktopApi;
import com.uiui.os.network.api.HealthCodeApi;
import com.uiui.os.network.api.RunNewApp;
import com.uiui.os.network.api.SOSRecordApi;
import com.uiui.os.network.api.SendScreenshotApi;
@@ -202,7 +203,6 @@ public class NetInterfaceManager {
}
public AppUsageRecordApi getAppUsageRecordControl() {
return mRetrofit.create(AppUsageRecordApi.class);
}
@@ -210,4 +210,8 @@ public class NetInterfaceManager {
public SendScreenshotApi getScreenshotApi() {
return mRetrofit.create(SendScreenshotApi.class);
}
public HealthCodeApi getHealthCodeApi() {
return mRetrofit.create(HealthCodeApi.class);
}
}

View File

@@ -26,5 +26,7 @@ public class URLAddress {
public static final String GET_GOODS_DETAILS = "getGoodsDetails";
/*获取资讯详情*/
public static final String GET_ARTICLE_DETAILS = "getArticleDetails";
/*获取健康吗*/
public static final String GET_HEALTH_CODE = "getHealthCode";
}

View File

@@ -0,0 +1,18 @@
package com.uiui.os.network.api;
import com.uiui.os.bean.BaseResponse;
import com.uiui.os.bean.HealthCode;
import com.uiui.os.network.URLAddress;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface HealthCodeApi {
@GET(URLAddress.GET_HEALTH_CODE)
Observable<BaseResponse<List<HealthCode>>> getArticleDetails(
@Query("sn") String sn
);
}