version
fix: update:修改包名
This commit is contained in:
211
app/src/main/java/com/xwad/os/fragment/ai/AiFragment.java
Normal file
211
app/src/main/java/com/xwad/os/fragment/ai/AiFragment.java
Normal file
@@ -0,0 +1,211 @@
|
||||
package com.xwad.os.fragment.ai;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentAiBinding;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.youth.banner.adapter.BannerAdapter;
|
||||
import com.youth.banner.listener.OnBannerListener;
|
||||
import com.youth.banner.transformer.ZoomOutPageTransformer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link AiFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class AiFragment extends BaseMvvmFragment<AiViewModel, FragmentAiBinding> {
|
||||
private static final String TAG = "PrecisionFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
// 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 AiFragment() {
|
||||
// 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 PrecisionFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static AiFragment newInstance(String param1, String param2) {
|
||||
AiFragment fragment = new AiFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_ai;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
|
||||
mViewDataBinding.banner.setOnBannerListener(new OnBannerListener<String>() {
|
||||
@Override
|
||||
public void OnBannerClick(String s, int i) {
|
||||
if (i == 2) {
|
||||
// Util.downloadClickListener(getActivity(), "com.jxw.aikyls", "com.jxw.aiteacher.ui.SplashActivity", null, "ai口语老师");
|
||||
} else if (i == 3) {
|
||||
// Util.downloadClickListener(getActivity(), "com.jxw.aixhb", "com.jxw.aixhb.mvi.ui.activity.MainActivity", null, "AI小伙伴");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
List<String> arrayList = new ArrayList<>();
|
||||
arrayList.add("1");
|
||||
arrayList.add("1");
|
||||
arrayList.add("1");
|
||||
arrayList.add("1");
|
||||
mViewDataBinding.banner.addBannerLifecycleObserver(this)
|
||||
.setAdapter(new BannerExampleAdapter(arrayList))
|
||||
.setIndicator(mViewDataBinding.indicator, false)
|
||||
// .setIndicatorNormalColor(1890693553)
|
||||
// .setIndicatorSelectedColor(-1)
|
||||
.setIndicatorNormalColor(getCtx().getColor(R.color.indicator_normal_color))
|
||||
.setIndicatorSelectedColor(getCtx().getColor(R.color.indicator_selected_color))
|
||||
.setIndicatorHeight((int) getResources().getDimension(R.dimen.x16))
|
||||
.setIndicatorSpace((int) getResources().getDimension(R.dimen.x30))
|
||||
.setPageTransformer(new ZoomOutPageTransformer())
|
||||
.isAutoLoop(false)
|
||||
.setBannerGalleryEffect((int) getResources().getDimension(R.dimen.x30), (int) getResources().getDimension(R.dimen.x30));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void openPrecisionHome(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class BannerExampleAdapter extends BannerAdapter<String, BannerExampleAdapter.ImageTitleHolder> {
|
||||
|
||||
public BannerExampleAdapter(List<String> list) {
|
||||
super(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageTitleHolder onCreateHolder(ViewGroup viewGroup, int i) {
|
||||
return new ImageTitleHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_banner, viewGroup, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindView(ImageTitleHolder imageTitleHolder, String str, int i, int i2) {
|
||||
imageTitleHolder.fdzy.setVisibility(View.GONE);
|
||||
imageTitleHolder.pgkst.setVisibility(View.GONE);
|
||||
imageTitleHolder.pgzy.setVisibility(View.GONE);
|
||||
imageTitleHolder.ykyl.setVisibility(View.GONE);
|
||||
imageTitleHolder.aijzx.setVisibility(View.GONE);
|
||||
imageTitleHolder.pzst.setVisibility(View.GONE);
|
||||
if (i == 0) {
|
||||
imageTitleHolder.rl_root.setBackgroundResource(R.drawable.icon_ai_aijt);
|
||||
imageTitleHolder.ykyl.setVisibility(View.VISIBLE);
|
||||
imageTitleHolder.aijzx.setVisibility(View.VISIBLE);
|
||||
imageTitleHolder.pzst.setVisibility(View.VISIBLE);
|
||||
} else if (i == 1) {
|
||||
imageTitleHolder.rl_root.setBackgroundResource(R.drawable.icon_ai_aijtjs);
|
||||
imageTitleHolder.fdzy.setVisibility(View.VISIBLE);
|
||||
imageTitleHolder.pgkst.setVisibility(View.VISIBLE);
|
||||
imageTitleHolder.pgzy.setVisibility(View.VISIBLE);
|
||||
} else if (i == 2) {
|
||||
imageTitleHolder.rl_root.setBackgroundResource(R.drawable.icon_ai_kyls);
|
||||
} else {
|
||||
imageTitleHolder.rl_root.setBackgroundResource(R.drawable.icon_ai_aixhb);
|
||||
}
|
||||
}
|
||||
|
||||
public class ImageTitleHolder extends RecyclerView.ViewHolder {
|
||||
public ImageView aijzx;
|
||||
public ImageView fdzy;
|
||||
public ImageView pgkst;
|
||||
public ImageView pgzy;
|
||||
public ImageView pzst;
|
||||
public RelativeLayout rl_root;
|
||||
public ImageView ykyl;
|
||||
|
||||
public ImageTitleHolder(View view) {
|
||||
super(view);
|
||||
this.rl_root = view.findViewById(R.id.rl_root);
|
||||
this.fdzy = view.findViewById(R.id.fdzy);
|
||||
this.pgkst = view.findViewById(R.id.pgkst);
|
||||
this.pgzy = view.findViewById(R.id.pgzy);
|
||||
this.ykyl = view.findViewById(R.id.ykyl);
|
||||
this.aijzx = view.findViewById(R.id.aijzx);
|
||||
this.pzst = view.findViewById(R.id.pzst);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
18
app/src/main/java/com/xwad/os/fragment/ai/AiViewModel.java
Normal file
18
app/src/main/java/com/xwad/os/fragment/ai/AiViewModel.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.ai;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentAiBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class AiViewModel extends BaseViewModel<FragmentAiBinding, FragmentEvent> {
|
||||
@Override
|
||||
public FragmentAiBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
241
app/src/main/java/com/xwad/os/fragment/app/AppFragment.java
Normal file
241
app/src/main/java/com/xwad/os/fragment/app/AppFragment.java
Normal file
@@ -0,0 +1,241 @@
|
||||
package com.xwad.os.fragment.app;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.adapter.AppAdapter;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.bean.DesktopIcon;
|
||||
import com.xwad.os.databinding.FragmentAppBinding;
|
||||
import com.xwad.os.view.RecyclerViewSpacesItemDecoration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link AppFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class AppFragment extends BaseMvvmFragment<AppViewModel, FragmentAppBinding> {
|
||||
private static final String TAG = "AppFragment";
|
||||
|
||||
private FragmentActivity mContext;
|
||||
private AppAdapter mAppAdapter;
|
||||
|
||||
|
||||
// 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 AppFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "AppFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 AppFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static AppFragment newInstance(String param1, String param2) {
|
||||
AppFragment fragment = new AppFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_app;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 6));
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
wm.getDefaultDisplay().getRealMetrics(dm);
|
||||
float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5)
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 1));//top间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距
|
||||
mViewDataBinding.rvApp.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
mAppAdapter = new AppAdapter();
|
||||
mViewDataBinding.rvApp.setAdapter(mAppAdapter);
|
||||
registerOwnReceiver();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.mDesktopIconListData.observe(this, new Observer<ArrayList<DesktopIcon>>() {
|
||||
@Override
|
||||
public void onChanged(ArrayList<DesktopIcon> desktopIcons) {
|
||||
Log.e(TAG, "setInstalledApp: " + desktopIcons);
|
||||
if (desktopIcons == null || desktopIcons.size() == 0) {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.rvApp.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.rvApp.setVisibility(View.VISIBLE);
|
||||
mAppAdapter.setDesktopIcons(desktopIcons);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: " + isVisibleToUser);
|
||||
if (isVisibleToUser && isViewInitiated) {
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Log.e(TAG, "onResume: ");
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
Log.e(TAG, "onDestroy: ");
|
||||
unregisterOwnReceiver();
|
||||
}
|
||||
|
||||
private void registerOwnReceiver() {
|
||||
registerUpdateDesktopReceiver();
|
||||
registerAppChangedReceiver();
|
||||
}
|
||||
|
||||
private void unregisterOwnReceiver() {
|
||||
if (updateDesktopReceiver != null) {
|
||||
mContext.unregisterReceiver(updateDesktopReceiver);
|
||||
}
|
||||
if (mAppChangedReceiver != null) {
|
||||
mContext.unregisterReceiver(mAppChangedReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
private UpdateDesktopReceiver updateDesktopReceiver;
|
||||
|
||||
public static final String UPDATE_DESKTOP_ICON_ACTION = "UPDATE_DESKTOP_ICON";
|
||||
|
||||
private void registerUpdateDesktopReceiver() {
|
||||
if (updateDesktopReceiver == null) {
|
||||
updateDesktopReceiver = new UpdateDesktopReceiver();
|
||||
}
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
|
||||
filter.addAction(UPDATE_DESKTOP_ICON_ACTION);
|
||||
mContext.registerReceiver(updateDesktopReceiver, filter);
|
||||
}
|
||||
|
||||
class UpdateDesktopReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("UpdateDesktopReceiver", "onReceive: " + action);
|
||||
if (TextUtils.isEmpty(action)) {
|
||||
return;
|
||||
}
|
||||
if (UPDATE_DESKTOP_ICON_ACTION.equals(action)) {
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private AppChangedReceiver mAppChangedReceiver;
|
||||
|
||||
private void registerAppChangedReceiver() {
|
||||
if (mAppChangedReceiver == null) {
|
||||
mAppChangedReceiver = new AppChangedReceiver();
|
||||
}
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
|
||||
filter.addDataScheme("package");
|
||||
mContext.registerReceiver(mAppChangedReceiver, filter);
|
||||
}
|
||||
|
||||
class AppChangedReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("AppChangedReceiver", "onReceive: " + action);
|
||||
if (TextUtils.isEmpty(action)) {
|
||||
return;
|
||||
}
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
|
||||
}
|
||||
}
|
||||
111
app/src/main/java/com/xwad/os/fragment/app/AppViewModel.java
Normal file
111
app/src/main/java/com/xwad/os/fragment/app/AppViewModel.java
Normal file
@@ -0,0 +1,111 @@
|
||||
package com.xwad.os.fragment.app;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.bean.DesktopIcon;
|
||||
import com.xwad.os.databinding.FragmentAppBinding;
|
||||
import com.xwad.os.manager.AppManager;
|
||||
import com.xwad.os.utils.ApkUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class AppViewModel extends BaseViewModel<FragmentAppBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentAppBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<ArrayList<DesktopIcon>> mDesktopIconListData = new MutableLiveData<>();
|
||||
|
||||
public void getInstalledApp() {
|
||||
ArrayList<DesktopIcon> desktopIcons = AppManager.getInstance().getFilterAppList();
|
||||
|
||||
DesktopIcon appstoreDesktopIcon = new DesktopIcon();
|
||||
appstoreDesktopIcon.setLable(ApkUtils.getAppName(getCtx(), "com.uiui.zyappstore"));
|
||||
appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME);
|
||||
appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME);
|
||||
appstoreDesktopIcon.setLable("应用市场");
|
||||
Drawable appstoreDrawable;
|
||||
if (ApkUtils.isAvailable(getCtx(), AppManager.APPSTORE_PACKAGE_NAME)) {
|
||||
appstoreDrawable = ApkUtils.getAppDrawable(getCtx(), "com.uiui.zyappstore");
|
||||
} else {
|
||||
appstoreDrawable = getCtx().getDrawable(R.drawable.com_android_appstore);
|
||||
}
|
||||
appstoreDesktopIcon.setIcon(appstoreDrawable);
|
||||
desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon);
|
||||
|
||||
DesktopIcon updateDesktopIcon = new DesktopIcon();
|
||||
updateDesktopIcon.setLable("应用更新");
|
||||
updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME);
|
||||
updateDesktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_update));
|
||||
desktopIcons.add(desktopIcons.size(), updateDesktopIcon);
|
||||
|
||||
// DesktopIcon manualIcon = new DesktopIcon();
|
||||
// manualIcon.setLable("使用手册");
|
||||
// manualIcon.setPackageName(AppManager.MANUAL_NAME);
|
||||
// manualIcon.setIcon(getCtx().getDrawable(R.drawable.icon_manual));
|
||||
// desktopIcons.add(desktopIcons.size(), manualIcon);
|
||||
|
||||
DesktopIcon browserIcon = new DesktopIcon();
|
||||
browserIcon.setIcon(getCtx().getDrawable(R.drawable.uiui_zybrowser));
|
||||
browserIcon.setLable("浏览器");
|
||||
browserIcon.setPackageName(AppManager.BROWSER_PACKAGE_NAME);
|
||||
browserIcon.setClassName(AppManager.BROWSER_CLASS_NAME);
|
||||
desktopIcons.add(browserIcon);
|
||||
|
||||
DesktopIcon serviceIcon = new DesktopIcon();
|
||||
serviceIcon.setIcon(getCtx().getDrawable(R.drawable.service_icon));
|
||||
serviceIcon.setLable("联系客服");
|
||||
serviceIcon.setPackageName(AppManager.SERVICE_NAME);
|
||||
desktopIcons.add(serviceIcon);
|
||||
|
||||
if (ApkUtils.isAvailable(getCtx(), "com.jxw.zwpg")) {
|
||||
DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zwpg_icon));
|
||||
zwpgIcon.setLable("作文批改");
|
||||
zwpgIcon.setPackageName("com.jxw.zwpg");
|
||||
desktopIcons.add(zwpgIcon);
|
||||
}
|
||||
|
||||
// if (ApkUtils.isAvailable(getCtx(), "com.jxw.gb.zwpg")) {
|
||||
// DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
// zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zwpg_icon));
|
||||
// zwpgIcon.setLable("作文批改");
|
||||
// zwpgIcon.setPackageName("com.jxw.gb.zwpg");
|
||||
// desktopIcons.add(zwpgIcon);
|
||||
// }
|
||||
|
||||
if (ApkUtils.isAvailable(getCtx(), "com.jxw.huiben")) {
|
||||
DesktopIcon zwpgIcon = new DesktopIcon();
|
||||
zwpgIcon.setIcon(getCtx().getDrawable(R.drawable.zhidu_icon));
|
||||
zwpgIcon.setLable("AR指读");
|
||||
zwpgIcon.setPackageName("com.jxw.huiben");
|
||||
desktopIcons.add(zwpgIcon);
|
||||
}
|
||||
|
||||
DesktopIcon exitIcon = new DesktopIcon();
|
||||
exitIcon.setLable("退出桌面");
|
||||
exitIcon.setPackageName(AppManager.DESKTOP_EXIT);
|
||||
exitIcon.setIcon(getCtx().getDrawable(R.drawable.exit_icon));
|
||||
desktopIcons.add(desktopIcons.size(), exitIcon);
|
||||
|
||||
DesktopIcon desktopIcon = new DesktopIcon();
|
||||
desktopIcon.setLable("添加应用");
|
||||
desktopIcon.setPackageName(AppManager.ADD_NAME);
|
||||
desktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add));
|
||||
desktopIcons.add(desktopIcons.size(), desktopIcon);
|
||||
|
||||
mDesktopIconListData.setValue(desktopIcons);
|
||||
}
|
||||
}
|
||||
165
app/src/main/java/com/xwad/os/fragment/ar/ARStudyFragment.java
Normal file
165
app/src/main/java/com/xwad/os/fragment/ar/ARStudyFragment.java
Normal file
@@ -0,0 +1,165 @@
|
||||
package com.xwad.os.fragment.ar;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.BaseDataBindingFragment;
|
||||
import com.xwad.os.databinding.FragmentArStudyBinding;
|
||||
import com.xwad.os.utils.ApkUtils;
|
||||
import com.xwad.os.view.RecyclerViewSpacesItemDecoration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ARStudyFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ARStudyFragment extends BaseDataBindingFragment<FragmentArStudyBinding> {
|
||||
private static final String TAG = "ARStudyFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// private HomeworkAdapter mHomeworkAdapter;
|
||||
|
||||
// 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 ARStudyFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "EnglishFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 EnglishFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ARStudyFragment newInstance(String param1, String param2) {
|
||||
ARStudyFragment fragment = new ARStudyFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_ar_study;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
wm.getDefaultDisplay().getRealMetrics(dm);
|
||||
float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5)
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 10));//top间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 10));//底部间距
|
||||
// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距
|
||||
// stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距
|
||||
mViewDataBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
|
||||
// mHomeworkAdapter = new HomeworkAdapter();
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
|
||||
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
|
||||
mViewDataBinding.recyclerView.setLayoutManager(linearLayoutManager);
|
||||
// mViewDataBinding.recyclerView.setAdapter(mHomeworkAdapter);
|
||||
List<String> homeworkList = new ArrayList<>();
|
||||
homeworkList.add("暂时没有作业");
|
||||
// mHomeworkAdapter.setHomeworkList(homeworkList);
|
||||
|
||||
mViewDataBinding.ivApp.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
openArApk();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
if (isVisibleToUser) {
|
||||
if (mUserVisibleHintCallback != null) {
|
||||
mUserVisibleHintCallback.onUserVisibleHint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private UserVisibleHintCallback mUserVisibleHintCallback;
|
||||
|
||||
public interface UserVisibleHintCallback {
|
||||
void onUserVisibleHint();
|
||||
}
|
||||
|
||||
public void setUserVisibleHintCallback(UserVisibleHintCallback userVisibleHintCallback) {
|
||||
mUserVisibleHintCallback = userVisibleHintCallback;
|
||||
}
|
||||
|
||||
private void openArApk() {
|
||||
if (ApkUtils.isAvailable(mContext, "com.visiontalk.taskoptions") && ApkUtils.isAvailable(mContext, "com.visiontalk.honor")) {
|
||||
ApkUtils.openPackage(mContext, "com.visiontalk.taskoptions");
|
||||
} else if (ApkUtils.isAvailable(mContext, "com.visiontalk.taskoptions")) {
|
||||
ApkUtils.openPackage(mContext, "com.visiontalk.taskoptions");
|
||||
} else if (ApkUtils.isAvailable(mContext, "com.visiontalk.honor")) {
|
||||
ApkUtils.openPackage(mContext, "com.visiontalk.honor");
|
||||
} else {
|
||||
Log.e(TAG, "openArApk: not installed");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package com.xwad.os.fragment.biology;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.BaseDataBindingFragment;
|
||||
import com.xwad.os.databinding.FragmentBiologyBinding;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link BiologyFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class BiologyFragment extends BaseDataBindingFragment<FragmentBiologyBinding> {
|
||||
private static final String TAG = "BiologyFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// 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 BiologyFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "BiologyFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 BiologyFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static BiologyFragment newInstance(String param1, String param2) {
|
||||
BiologyFragment fragment = new BiologyFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_biology;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.imageView1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openSyncVideo("同步视频|生物");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/生物|e:JWFD");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openLaboratory("生物实验室");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView4.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(0, "生物");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("1");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.xwad.os.fragment.chemical;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.BaseDataBindingFragment;
|
||||
import com.xwad.os.databinding.FragmentChemicalBinding;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ChemicalFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ChemicalFragment extends BaseDataBindingFragment<FragmentChemicalBinding> {
|
||||
private static final String TAG = "ChemicalFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// 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 ChemicalFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "ChemicalFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 ChemicalFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ChemicalFragment newInstance(String param1, String param2) {
|
||||
ChemicalFragment fragment = new ChemicalFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_chemical;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.imageView1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openSyncVideo("同步视频|化学");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/化学|e:JWFD");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openLaboratory("化学实验室");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView4.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(0, "化学");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("1");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,190 @@
|
||||
package com.xwad.os.fragment.chinese;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.blankj.utilcode.util.NetworkUtils;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.databinding.FragmentChineseBinding;
|
||||
import com.xwad.os.manager.AmapManager;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ChineseFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ChineseFragment extends BaseMvvmFragment<ChineseViewModel, FragmentChineseBinding> implements NetworkUtils.OnNetworkStatusChangedListener {
|
||||
private static final String TAG = "ChineseFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// 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;
|
||||
|
||||
@Override
|
||||
public void onDisconnected() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(NetworkUtils.NetworkType networkType) {
|
||||
|
||||
}
|
||||
|
||||
public ChineseFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "ChineseFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 ChineseFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ChineseFragment newInstance(String param1, String param2) {
|
||||
ChineseFragment fragment = new ChineseFragment();
|
||||
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);
|
||||
NetworkUtils.registerNetworkStatusChangedListener(this);
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_chinese;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.llTabTbjzx.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.llTbjzx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_l);
|
||||
mViewDataBinding.tvTabTbjzx.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabTbjzx.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.llTabDyfx.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.llDyfx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_c);
|
||||
mViewDataBinding.tvTabDyfx.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabDyfx.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.llTabJdbk.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.rlJdbk.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_r);
|
||||
mViewDataBinding.tvTabJdbk.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabJdbk.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
AmapManager.getInstance().startLocation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
mViewDataBinding.llTbjzx.setVisibility(View.GONE);
|
||||
mViewDataBinding.llDyfx.setVisibility(View.GONE);
|
||||
mViewDataBinding.rlJdbk.setVisibility(View.GONE);
|
||||
mViewDataBinding.tvTabTbjzx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.tvTabDyfx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.tvTabJdbk.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivTabTbjzx.setVisibility(View.INVISIBLE);
|
||||
mViewDataBinding.ivTabDyfx.setVisibility(View.INVISIBLE);
|
||||
mViewDataBinding.ivTabJdbk.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void x(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.chinese;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentChineseBinding;
|
||||
|
||||
public class ChineseViewModel extends BaseViewModel<FragmentChineseBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentChineseBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,262 @@
|
||||
package com.xwad.os.fragment.complex;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.bean.jxw.TabBean;
|
||||
import com.xwad.os.databinding.FragmentComplexBinding;
|
||||
import com.xwad.os.jxw.AssertUtils;
|
||||
import com.xwad.os.jxw.LearnStageBean;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ComplexFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ComplexFragment extends BaseMvvmFragment<ComplexViewModel, FragmentComplexBinding> {
|
||||
private static final String TAG = "ComplexFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
private MyAdapter adapter;
|
||||
private TabTbxAdapter tabTbxAdapter;
|
||||
private List<TabBean> tabBeanList = new ArrayList();
|
||||
private List<Fragment> mFragment = new ArrayList();
|
||||
|
||||
|
||||
// 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 ComplexFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "ComplexFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 ComplexFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ComplexFragment newInstance(String param1, String param2) {
|
||||
ComplexFragment fragment = new ComplexFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_complex;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle savedInstanceState) {
|
||||
mViewDataBinding.subjectViewPager.setOffscreenPageLimit(10);
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
|
||||
linearLayoutManager.setOrientation(RecyclerView.VERTICAL);
|
||||
mViewDataBinding.rvTitle.setLayoutManager(linearLayoutManager);
|
||||
|
||||
|
||||
// if (Util.checkGrade(SPUtils.getGrade()).equals("小学")) {
|
||||
// xxPage.setVisibility(View.VISIBLE);
|
||||
// subject_viewPager.setVisibility(View.GONE);
|
||||
// rv_title.setVisibility(View.GONE);
|
||||
// } else {
|
||||
// xxPage.setVisibility(View.GONE);
|
||||
// subject_viewPager.setVisibility(View.VISIBLE);
|
||||
// rv_title.setVisibility(View.VISIBLE);
|
||||
// }
|
||||
tabBeanList.clear();
|
||||
mFragment.clear();
|
||||
for (LearnStageBean learnStageBean : getLearnStage()) {
|
||||
TabBean tabBean = new TabBean(learnStageBean.getName(),
|
||||
getResources().getIdentifier(learnStageBean.getNormal(), "drawable", mContext.getPackageName()),
|
||||
getResources().getIdentifier(learnStageBean.getPress(), "drawable", mContext.getPackageName()));
|
||||
tabBeanList.add(tabBean);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("subject", learnStageBean.getName());
|
||||
bundle.putString("label", learnStageBean.getLabel());
|
||||
bundle.putString("tbsp_tag", learnStageBean.getTbsp_tag());
|
||||
bundle.putBoolean("isBig", learnStageBean.getIsBig());
|
||||
try {
|
||||
Fragment fragment = (Fragment) Class.forName(learnStageBean.getClassName()).newInstance();
|
||||
fragment.setArguments(bundle);
|
||||
mFragment.add(fragment);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Log.e(TAG, "getLearnStage: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
tabTbxAdapter = new TabTbxAdapter(tabBeanList);
|
||||
mViewDataBinding.rvTitle.setAdapter(tabTbxAdapter);
|
||||
|
||||
adapter = new MyAdapter(getChildFragmentManager());
|
||||
mViewDataBinding.subjectViewPager.setAdapter(adapter);
|
||||
if (tabBeanList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
tabTbxAdapter.setChoosePosition(0);
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(0);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
private List<LearnStageBean> getLearnStage() {
|
||||
String grade = "一年级";
|
||||
String jsonString = AssertUtils.getFromAssets(mContext, "script/fragment_tbx.json");
|
||||
Type type = new TypeToken<List<LearnStageBean>>() {
|
||||
}.getType();
|
||||
List<LearnStageBean> arrayList = new Gson().fromJson(jsonString, type);
|
||||
List<LearnStageBean> resultList = new ArrayList<>();
|
||||
for (LearnStageBean learnStageBean : arrayList) {
|
||||
if ("六年级".equals(grade)) {
|
||||
String learnStage = learnStageBean.getLearnStage();
|
||||
if (learnStage.contains("," + grade)) {
|
||||
resultList.add(learnStageBean);
|
||||
}
|
||||
} else if (learnStageBean.getLearnStage().contains(grade)) {
|
||||
resultList.add(learnStageBean);
|
||||
}
|
||||
}
|
||||
return arrayList;
|
||||
}
|
||||
|
||||
|
||||
public class MyAdapter extends FragmentPagerAdapter {
|
||||
public MyAdapter(FragmentManager fragmentManager) {
|
||||
super(fragmentManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int i) {
|
||||
return mFragment.get(i);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mFragment.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int i) {
|
||||
return (mFragment.get(i)).hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
public class TabTbxAdapter extends BaseQuickAdapter<TabBean, BaseViewHolder> {
|
||||
private int defSel;
|
||||
|
||||
public void setChoosePosition(int i) {
|
||||
int i2 = defSel;
|
||||
if (i2 == i) {
|
||||
return;
|
||||
}
|
||||
if (i2 != -1) {
|
||||
getData().get(defSel).setSelect(false);
|
||||
notifyItemChanged(defSel);
|
||||
}
|
||||
defSel = i;
|
||||
if (defSel != -1) {
|
||||
getData().get(defSel).setSelect(true);
|
||||
notifyItemChanged(defSel);
|
||||
}
|
||||
}
|
||||
|
||||
public TabTbxAdapter(List<TabBean> list) {
|
||||
super(R.layout.item_tab_1, list);
|
||||
defSel = -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void convert(final BaseViewHolder baseViewHolder, TabBean tabBean) {
|
||||
RelativeLayout relativeLayout = baseViewHolder.getView(R.id.rl_root);
|
||||
TextView textView = baseViewHolder.getView(R.id.iv_tab_title);
|
||||
if (tabBean.isSelect()) {
|
||||
relativeLayout.setBackgroundResource(R.drawable.icon_xk_tab_bg_pre);
|
||||
textView.setTextSize(getResources().getDimension(R.dimen.x12));
|
||||
textView.setTextColor(-1);
|
||||
} else {
|
||||
relativeLayout.setBackground(null);
|
||||
textView.setTextSize(getResources().getDimension(R.dimen.x10));
|
||||
textView.setTextColor(1627389951);
|
||||
}
|
||||
textView.setText(tabBean.getTab_Title());
|
||||
baseViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
setChoosePosition(baseViewHolder.getAdapterPosition());
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(baseViewHolder.getAdapterPosition());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.complex;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentComplexBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class ComplexViewModel extends BaseViewModel<FragmentComplexBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentComplexBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
package com.xwad.os.fragment.content;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.arialyy.annotations.Download;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.task.DownloadTask;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.adapter.HomeworkAdapter;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.bean.HomeworkBean;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentContentBinding;
|
||||
import com.xwad.os.utils.ScreenUtils;
|
||||
import com.xwad.os.view.EquallyDividedItemDecoration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ContentFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ContentFragment extends BaseMvvmFragment<ContentViewModel, FragmentContentBinding> {
|
||||
private static final String TAG = "ContentFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private HomeworkAdapter mHomeworkAdapter;
|
||||
|
||||
private ArrayList<HomeworkBean> mHomeworkBeanList;
|
||||
|
||||
private static final String HOME_WORK_LIST_NAME = "home_work_list_name";
|
||||
|
||||
public void setHomeWorkList(ArrayList<HomeworkBean> homeWorkList) {
|
||||
Log.e(TAG, "setHomeWorkList: ");
|
||||
Bundle args = getArguments();
|
||||
args.putSerializable(HOME_WORK_LIST_NAME, homeWorkList);
|
||||
setArguments(args);
|
||||
mHomeworkBeanList = homeWorkList;
|
||||
setAdapterData();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// TODO: Rename parameter arguments, choose names that match
|
||||
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
|
||||
private static final String SUBJECT_NAME = "subject_name";
|
||||
|
||||
// TODO: Rename and change types of parameters
|
||||
private String mSubject;
|
||||
|
||||
public ContentFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this factory method to create a new instance of
|
||||
* this fragment using the provided parameters.
|
||||
*
|
||||
* @param subject Parameter 1.
|
||||
* @return A new instance of fragment ContentFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ContentFragment newInstance(String subject) {
|
||||
Log.e(TAG, "newInstance: ");
|
||||
ContentFragment fragment = new ContentFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(SUBJECT_NAME, subject);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Download.onTaskComplete
|
||||
void taskComplete(DownloadTask task) {
|
||||
//在这里处理任务完成的状态
|
||||
Log.e(TAG, "taskComplete: " + task.getFilePath());
|
||||
Log.e(TAG, "taskComplete: " + task.getDownloadEntity().getUrl());
|
||||
mHomeworkAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Log.e(TAG, "onCreate: ");
|
||||
if (getArguments() != null) {
|
||||
Bundle args = getArguments();
|
||||
mSubject = args.getString(SUBJECT_NAME);
|
||||
mHomeworkBeanList = args.getParcelableArrayList(HOME_WORK_LIST_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_content;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
Log.e(TAG, "initDataBinding: ");
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
Log.e(TAG, "initView: ");
|
||||
|
||||
Aria.download(this).register();
|
||||
mHomeworkAdapter = new HomeworkAdapter();
|
||||
int orientation = mContext.getResources().getConfiguration().orientation;
|
||||
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||
mViewDataBinding.recyclerView.addItemDecoration(new EquallyDividedItemDecoration(1, ScreenUtils.dp2px(getResources(), 4)));
|
||||
mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(mContext, 1));
|
||||
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
mViewDataBinding.recyclerView.addItemDecoration(new EquallyDividedItemDecoration(2, ScreenUtils.dp2px(getResources(), 4)));
|
||||
mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(mContext, 2));
|
||||
}
|
||||
mViewDataBinding.recyclerView.setAdapter(mHomeworkAdapter);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
Log.e(TAG, "initData: ");
|
||||
if (getArguments() != null) {
|
||||
Bundle args = getArguments();
|
||||
mHomeworkBeanList = args.getParcelableArrayList(HOME_WORK_LIST_NAME);
|
||||
setAdapterData();
|
||||
}
|
||||
}
|
||||
|
||||
private void setAdapterData() {
|
||||
Log.e(TAG, "setAdapterData: ");
|
||||
if (mViewDataBinding == null) {
|
||||
return;
|
||||
}
|
||||
if (mHomeworkBeanList == null || mHomeworkBeanList.isEmpty()) {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.recyclerView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.recyclerView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (mHomeworkAdapter != null) {
|
||||
mHomeworkAdapter.setHomeworkList(mHomeworkBeanList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Log.e(TAG, "onResume: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
Log.e(TAG, "onDestroyView: ");
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.content;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentContentBinding;
|
||||
|
||||
public class ContentViewModel extends BaseViewModel<FragmentContentBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentContentBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
package com.xwad.os.fragment.english;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.databinding.FragmentEnglishBinding;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link EnglishFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class EnglishFragment extends BaseMvvmFragment<EnglishViewModel, FragmentEnglishBinding> {
|
||||
private static final String TAG = "EnglishFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// 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 EnglishFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "EnglishFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 EnglishFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static EnglishFragment newInstance(String param1, String param2) {
|
||||
EnglishFragment fragment = new EnglishFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_english;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.llTabTbjzx.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.llTbjzx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_l);
|
||||
mViewDataBinding.tvTabTbjzx.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabTbjzx.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.llTabDyfx.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.llDyfx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_c);
|
||||
mViewDataBinding.tvTabDyfx.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabDyfx.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.llTabJdbk.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.rlJdbk.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_r);
|
||||
mViewDataBinding.tvTabJdbk.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabJdbk.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
mViewDataBinding.llTbjzx.setVisibility(View.GONE);
|
||||
mViewDataBinding.llDyfx.setVisibility(View.GONE);
|
||||
mViewDataBinding.rlJdbk.setVisibility(View.GONE);
|
||||
mViewDataBinding.tvTabTbjzx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.tvTabDyfx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.tvTabJdbk.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivTabTbjzx.setVisibility(View.INVISIBLE);
|
||||
mViewDataBinding.ivTabDyfx.setVisibility(View.INVISIBLE);
|
||||
mViewDataBinding.ivTabJdbk.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.english;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentEnglishBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class EnglishViewModel extends BaseViewModel<FragmentEnglishBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentEnglishBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
248
app/src/main/java/com/xwad/os/fragment/main/MainFragment.java
Normal file
248
app/src/main/java/com/xwad/os/fragment/main/MainFragment.java
Normal file
@@ -0,0 +1,248 @@
|
||||
package com.xwad.os.fragment.main;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.databinding.FragmentMainBinding;
|
||||
import com.xwad.os.fragment.subject.SubjectFragment;
|
||||
import com.xwad.os.fragment.user.UserFragment;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
import com.xwad.os.view.ScaleCircleNavigator;
|
||||
import com.xwad.os.view.viewpager.BaseFragmentPagerAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link MainFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class MainFragment extends BaseMvvmFragment<MainViewModel, FragmentMainBinding> {
|
||||
private static final String TAG = "MainFragment";
|
||||
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private ScaleCircleNavigator scaleCircleNavigator;
|
||||
private FragmentManager mFragmentManager;
|
||||
// private FragmentTransaction mFragmentTransaction;
|
||||
private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter;
|
||||
|
||||
private List<Fragment> mFragments;
|
||||
private SubjectFragment mSubjectFragment;
|
||||
private int defaultCurrent = 1;
|
||||
|
||||
// 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 MainFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "MainFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 MainFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static MainFragment newInstance(String param1, String param2) {
|
||||
MainFragment fragment = new MainFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_main;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mFragmentManager = getChildFragmentManager();
|
||||
// mFragmentTransaction = mFragmentManager.beginTransaction();
|
||||
mFragments = new ArrayList<>();
|
||||
mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments);
|
||||
// fragmentTransaction.add(R.id.viewPager, appListFragment);
|
||||
// fragmentTransaction.commit();
|
||||
mFragments.add(new UserFragment());
|
||||
mSubjectFragment = new SubjectFragment();
|
||||
mFragments.add(mSubjectFragment);
|
||||
|
||||
scaleCircleNavigator = new ScaleCircleNavigator(mContext);
|
||||
scaleCircleNavigator.setCircleCount(1 + mSubjectFragment.getFragmentSize());
|
||||
scaleCircleNavigator.setNormalCircleColor(Color.DKGRAY);
|
||||
scaleCircleNavigator.setSelectedCircleColor(Color.LTGRAY);
|
||||
scaleCircleNavigator.setCircleClickListener(new ScaleCircleNavigator.OnCircleClickListener() {
|
||||
@Override
|
||||
public void onClick(int index) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
mViewDataBinding.viewPager.setAdapter(mBaseFragmentPagerAdapter);
|
||||
mViewDataBinding.viewPager.setOffscreenPageLimit(8);
|
||||
mViewDataBinding.magicIndicator.setNavigator(scaleCircleNavigator);
|
||||
// ViewPagerHelper.bind(mMagicIndicator, mViewPager);
|
||||
mSubjectFragment.setPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
mViewDataBinding.magicIndicator.onPageScrolled(position + 1, positionOffset, positionOffsetPixels);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
mViewDataBinding.magicIndicator.onPageSelected(position + 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
mViewDataBinding.magicIndicator.onPageScrollStateChanged(state + 1);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
// Log.e(TAG, "onPageScrolled: position = " + position + " positionOffset = " + positionOffset + " positionOffsetPixels = " + positionOffsetPixels);
|
||||
if (position <= 1) {
|
||||
mViewDataBinding.magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
Log.e(TAG, "onPageSelected: position = " + position);
|
||||
if (position <= 1) {
|
||||
mViewDataBinding.magicIndicator.onPageSelected(position);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
Log.e(TAG, "onPageSelected: state = " + state);
|
||||
if (state <= 1) {
|
||||
mViewDataBinding.magicIndicator.onPageScrollStateChanged(state);
|
||||
}
|
||||
}
|
||||
});
|
||||
if (mFragments.size() > 1) {
|
||||
mViewDataBinding.viewPager.setCurrentItem(defaultCurrent);
|
||||
}
|
||||
|
||||
mViewDataBinding.cl0.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openApp("com.uiui.zyappstore", "com.uiui.zyappstore.activity.MainActivity");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openApp("com.uiui.zybrowser", "com.uiui.zybrowser.activity.main.MainActivity");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openApp("com.android.documentsui");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
// OpenApkUtils.getInstance().openApp("com.android.camera");
|
||||
Intent intent = new Intent(Intent.ACTION_CAMERA_BUTTON);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl4.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(Settings.ACTION_SETTINGS);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl5.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
// OpenApkUtils.getInstance().openApp("com.android.gallery3d.app");
|
||||
Intent intent = new Intent(Intent.CATEGORY_APP_GALLERY);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl6.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openApp("com.uiui.zyappstore");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.cl7.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openApp("com.uiui.zyappstore");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
public void setCurrentItem() {
|
||||
mViewDataBinding.viewPager.setCurrentItem(defaultCurrent);
|
||||
mSubjectFragment.setCurrentItem();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xwad.os.fragment.main;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentMainBinding;
|
||||
|
||||
public class MainViewModel extends BaseViewModel<FragmentMainBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentMainBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
144
app/src/main/java/com/xwad/os/fragment/math/MathFragment.java
Normal file
144
app/src/main/java/com/xwad/os/fragment/math/MathFragment.java
Normal file
@@ -0,0 +1,144 @@
|
||||
package com.xwad.os.fragment.math;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.databinding.FragmentMathBinding;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link MathFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class MathFragment extends BaseMvvmFragment<MathViewModel, FragmentMathBinding> {
|
||||
private static final String TAG = "MathFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// 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 MathFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "MathFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 MathFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static MathFragment newInstance(String param1, String param2) {
|
||||
MathFragment fragment = new MathFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_math;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
// mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.llTabTbjzx.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.llTbjzx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_l);
|
||||
mViewDataBinding.tvTabTbjzx.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabTbjzx.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.llTabDyfx.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.llDyfx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_c);
|
||||
mViewDataBinding.tvTabDyfx.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabDyfx.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.llTabJdbk.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
hide();
|
||||
mViewDataBinding.rlJdbk.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.llZjx.setBackgroundResource(R.drawable.icon_yw_zjx_r);
|
||||
mViewDataBinding.tvTabJdbk.setVisibility(View.GONE);
|
||||
mViewDataBinding.ivTabJdbk.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
mViewDataBinding.llTbjzx.setVisibility(View.GONE);
|
||||
mViewDataBinding.llDyfx.setVisibility(View.GONE);
|
||||
mViewDataBinding.rlJdbk.setVisibility(View.GONE);
|
||||
mViewDataBinding.tvTabTbjzx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.tvTabDyfx.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.tvTabJdbk.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivTabTbjzx.setVisibility(View.INVISIBLE);
|
||||
mViewDataBinding.ivTabDyfx.setVisibility(View.INVISIBLE);
|
||||
mViewDataBinding.ivTabJdbk.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.math;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentMathBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class MathViewModel extends BaseViewModel<FragmentMathBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentMathBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
116
app/src/main/java/com/xwad/os/fragment/mine/MineFragment.java
Normal file
116
app/src/main/java/com/xwad/os/fragment/mine/MineFragment.java
Normal file
@@ -0,0 +1,116 @@
|
||||
package com.xwad.os.fragment.mine;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentMineBinding;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link MineFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class MineFragment extends BaseMvvmFragment<MineViewModel, FragmentMineBinding> {
|
||||
private static final String TAG = "PrecisionFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
private Activity mContext;
|
||||
|
||||
// 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 MineFragment() {
|
||||
// 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 PrecisionFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static MineFragment newInstance(String param1, String param2) {
|
||||
MineFragment fragment = new MineFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_mine;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void openPrecisionHome(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.mine;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentMineBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class MineViewModel extends BaseViewModel<FragmentMineBinding, FragmentEvent> {
|
||||
@Override
|
||||
public FragmentMineBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.xwad.os.fragment.physics;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.BaseDataBindingFragment;
|
||||
import com.xwad.os.databinding.FragmentPhysicsBinding;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link PhysicsFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class PhysicsFragment extends BaseDataBindingFragment<FragmentPhysicsBinding> {
|
||||
private static final String TAG = "PhysicsFragment";
|
||||
|
||||
private Activity mContext;
|
||||
|
||||
// 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 PhysicsFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "PhysicsFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 PhysicsFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static PhysicsFragment newInstance(String param1, String param2) {
|
||||
PhysicsFragment fragment = new PhysicsFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_physics;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.imageView1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openSyncVideo("同步视频|物理");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/物理|e:JWFD");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
OpenApkUtils.getInstance().openLaboratory("物理实验室");
|
||||
}
|
||||
});
|
||||
mViewDataBinding.imageView4.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(0, "物理");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("1");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
package com.xwad.os.fragment.precision;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentPrecisionBinding;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link PrecisionFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class PrecisionFragment extends BaseMvvmFragment<PrecisionViewModel, FragmentPrecisionBinding> {
|
||||
private static final String TAG = "PrecisionFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
// 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 PrecisionFragment() {
|
||||
// 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 PrecisionFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static PrecisionFragment newInstance(String param1, String param2) {
|
||||
PrecisionFragment fragment = new PrecisionFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_precision;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
String grade = mMMKV.decodeString(CommonConfig.APPOINT_PERIOD_NAME, OpenApkUtils.NAME_PRIMARY_SCHOOL);
|
||||
mViewDataBinding.tvGrade.setText(grade);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.getTypeData().observe(this, new Observer<String>() {
|
||||
@Override
|
||||
public void onChanged(String s) {
|
||||
mMMKV.encode(CommonConfig.APPOINT_PERIOD_NAME,s);
|
||||
mViewDataBinding.tvGrade.setText(s);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
if (isVisibleToUser) {
|
||||
if (mUserVisibleHintCallback != null) {
|
||||
mUserVisibleHintCallback.onUserVisibleHint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private UserVisibleHintCallback mUserVisibleHintCallback;
|
||||
|
||||
public interface UserVisibleHintCallback {
|
||||
void onUserVisibleHint();
|
||||
}
|
||||
|
||||
public void setUserVisibleHintCallback(UserVisibleHintCallback userVisibleHintCallback) {
|
||||
mUserVisibleHintCallback = userVisibleHintCallback;
|
||||
}
|
||||
|
||||
private void showPopupWindow(View view) {
|
||||
// 一个自定义的布局,作为显示的内容
|
||||
View contentView = LayoutInflater.from(getCtx()).inflate(
|
||||
R.layout.popup_fault_type, null);
|
||||
PopupWindow popupWindow = new PopupWindow(contentView,
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
|
||||
// 设置按钮的点击事件
|
||||
TextView tv_type1 = contentView.findViewById(R.id.tv_type1);
|
||||
tv_type1.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mViewModel.getTypeData().setValue(OpenApkUtils.NAME_PRIMARY_SCHOOL);
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
TextView tv_type2 = contentView.findViewById(R.id.tv_type2);
|
||||
tv_type2.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mViewModel.getTypeData().setValue(OpenApkUtils.NAME_MIDDLE_SCHOOL);
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
TextView tv_type3 = contentView.findViewById(R.id.tv_type3);
|
||||
tv_type3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mViewModel.getTypeData().setValue(OpenApkUtils.NAME_HIGH_SCHOOL);
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
|
||||
// 我觉得这里是API的一个bug
|
||||
// popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.popup_background));
|
||||
// 设置好参数之后再show
|
||||
popupWindow.showAsDropDown(view, 0, 4, Gravity.CENTER);
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void openPrecisionHome(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(0, "");
|
||||
// OpenApkUtils.getInstance().openARHuiben();
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("1");
|
||||
}
|
||||
}
|
||||
|
||||
public void openPrecisionTestPaper(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(8, "");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("3");
|
||||
}
|
||||
}
|
||||
|
||||
public void openPrecisionSpecial(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(7, "");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("2");
|
||||
}
|
||||
}
|
||||
|
||||
public void openPrecisionQuestionBook(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(4, "");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("4");
|
||||
}
|
||||
}
|
||||
|
||||
public void openPrecisionFavorites(View view) {
|
||||
if (OpenApkUtils.getInstance().isNewAiApp()) {
|
||||
OpenApkUtils.getInstance().openAiPrecision(3, "");
|
||||
} else {
|
||||
OpenApkUtils.getInstance().openPrecision("5");
|
||||
}
|
||||
}
|
||||
|
||||
public void showWindow(View view) {
|
||||
showPopupWindow(view);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.xwad.os.fragment.precision;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentPrecisionBinding;
|
||||
|
||||
public class PrecisionViewModel extends BaseViewModel<FragmentPrecisionBinding, FragmentEvent> {
|
||||
@Override
|
||||
public FragmentPrecisionBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<String> mTypeData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<String> getTypeData() {
|
||||
return mTypeData;
|
||||
}
|
||||
}
|
||||
113
app/src/main/java/com/xwad/os/fragment/read/ReadFragment.java
Normal file
113
app/src/main/java/com/xwad/os/fragment/read/ReadFragment.java
Normal file
@@ -0,0 +1,113 @@
|
||||
package com.xwad.os.fragment.read;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentReadBinding;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link ReadFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class ReadFragment extends BaseMvvmFragment<ReadViewModel, FragmentReadBinding> {
|
||||
private static final String TAG = "PrecisionFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
// 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 ReadFragment() {
|
||||
// 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 PrecisionFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static ReadFragment newInstance(String param1, String param2) {
|
||||
ReadFragment fragment = new ReadFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_read;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void openPrecisionHome(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.read;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentReadBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class ReadViewModel extends BaseViewModel<FragmentReadBinding, FragmentEvent> {
|
||||
@Override
|
||||
public FragmentReadBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
113
app/src/main/java/com/xwad/os/fragment/safe/SafeFragment.java
Normal file
113
app/src/main/java/com/xwad/os/fragment/safe/SafeFragment.java
Normal file
@@ -0,0 +1,113 @@
|
||||
package com.xwad.os.fragment.safe;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentSafeBinding;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link SafeFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class SafeFragment extends BaseMvvmFragment<SafeViewModel, FragmentSafeBinding> {
|
||||
private static final String TAG = "PrecisionFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
// 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 SafeFragment() {
|
||||
// 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 PrecisionFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static SafeFragment newInstance(String param1, String param2) {
|
||||
SafeFragment fragment = new SafeFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_safe;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void openPrecisionHome(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.safe;
|
||||
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentSafeBinding;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
|
||||
public class SafeViewModel extends BaseViewModel<FragmentSafeBinding, FragmentEvent> {
|
||||
@Override
|
||||
public FragmentSafeBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
package com.xwad.os.fragment.subject;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.BaseDataBindingFragment;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentSubjectBinding;
|
||||
import com.xwad.os.fragment.biology.BiologyFragment;
|
||||
import com.xwad.os.fragment.chemical.ChemicalFragment;
|
||||
import com.xwad.os.fragment.chinese.ChineseFragment;
|
||||
import com.xwad.os.fragment.complex.ComplexFragment;
|
||||
import com.xwad.os.fragment.english.EnglishFragment;
|
||||
import com.xwad.os.fragment.math.MathFragment;
|
||||
import com.xwad.os.fragment.physics.PhysicsFragment;
|
||||
import com.xwad.os.fragment.precision.PrecisionFragment;
|
||||
import com.xwad.os.view.viewpager.BaseFragmentPagerAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link SubjectFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class SubjectFragment extends BaseDataBindingFragment<FragmentSubjectBinding> {
|
||||
private static final String TAG = "SubjectFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private String[] mAllTitle = new String[]{"精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合"};
|
||||
|
||||
private String[] mTitleWithoutScience = new String[]{"精准学", "语文", "数学", "英语"};
|
||||
|
||||
private FragmentActivity mContext;
|
||||
|
||||
// private ARStudyFragment mARStudyFragment;
|
||||
private PrecisionFragment mPrecisionFragment;
|
||||
private ChineseFragment mChineseFragment;
|
||||
private MathFragment mMathFragment;
|
||||
private EnglishFragment mEnglishFragment;
|
||||
|
||||
private PhysicsFragment mPhysicsFragment;
|
||||
private ChemicalFragment mChemicalFragment;
|
||||
private BiologyFragment mBiologyFragment;
|
||||
private ComplexFragment mComplexFragment;
|
||||
|
||||
// private AppFragment mAppFragment;
|
||||
|
||||
private List<Fragment> mFragments;
|
||||
private FragmentManager mFragmentManager;
|
||||
private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter;
|
||||
private ViewPager.OnPageChangeListener mListener;
|
||||
private int defaultCurrent = 0;
|
||||
|
||||
// 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 SubjectFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "SubjectFragment: ");
|
||||
long time = System.currentTimeMillis();
|
||||
Log.e(TAG, "SubjectFragment: start " + time);
|
||||
mFragments = new ArrayList<>();
|
||||
// mARStudyFragment = new ARStudyFragment();
|
||||
// mARStudyFragment.setUserVisibleHintCallback(new ARStudyFragment.UserVisibleHintCallback() {
|
||||
// @Override
|
||||
// public void onUserVisibleHint() {
|
||||
// if (mViewDataBinding.viewPager != null) {
|
||||
// mViewDataBinding.viewPager.postDelayed(new Runnable() {
|
||||
// @Override
|
||||
// public void run() {
|
||||
// mViewDataBinding.viewPager.setOffscreenPageLimit(11);
|
||||
// }
|
||||
// }, 2345);
|
||||
// Log.e(TAG, "setUserVisibleHint: setOffscreenPageLimit");
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
mPrecisionFragment = new PrecisionFragment();
|
||||
mChineseFragment = new ChineseFragment();
|
||||
mMathFragment = new MathFragment();
|
||||
mEnglishFragment = new EnglishFragment();
|
||||
if (!isLower()) {
|
||||
mPhysicsFragment = new PhysicsFragment();
|
||||
mChemicalFragment = new ChemicalFragment();
|
||||
mBiologyFragment = new BiologyFragment();
|
||||
mComplexFragment = new ComplexFragment();
|
||||
}
|
||||
// mAppFragment = new AppFragment();
|
||||
|
||||
// mFragments.add(mARStudyFragment);
|
||||
mFragments.add(mPrecisionFragment);
|
||||
mFragments.add(mChineseFragment);
|
||||
mFragments.add(mMathFragment);
|
||||
mFragments.add(mEnglishFragment);
|
||||
if (!isLower()) {
|
||||
mFragments.add(mPhysicsFragment);
|
||||
mFragments.add(mChemicalFragment);
|
||||
mFragments.add(mBiologyFragment);
|
||||
mFragments.add(mComplexFragment);
|
||||
}
|
||||
// mFragments.add(mAppFragment);
|
||||
Log.e(TAG, "SubjectFragment: end = " + (System.currentTimeMillis() - time));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 SubjectFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static SubjectFragment newInstance(String param1, String param2) {
|
||||
SubjectFragment fragment = new SubjectFragment();
|
||||
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);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_subject;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
long time = System.currentTimeMillis();
|
||||
Log.e(TAG, "initView: start " + time);
|
||||
mFragmentManager = getChildFragmentManager();
|
||||
mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments);
|
||||
mViewDataBinding.viewPager.setAdapter(mBaseFragmentPagerAdapter);
|
||||
mViewDataBinding.viewPager.setOnPageChangeListener(mListener);
|
||||
if (!isLower()) {
|
||||
mViewDataBinding.mainSlidingTabLayout.setViewPager(mViewDataBinding.viewPager, mAllTitle);
|
||||
} else {
|
||||
mViewDataBinding.mainSlidingTabLayout.setViewPager(mViewDataBinding.viewPager, mTitleWithoutScience);
|
||||
}
|
||||
Log.e(TAG, "initView: end = " + (System.currentTimeMillis() - time));
|
||||
mViewDataBinding.viewPager.setOffscreenPageLimit(10);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: isVisibleToUser = " + isVisibleToUser);
|
||||
if (isVisibleToUser) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
Log.e(TAG, "onResume: ");
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
private boolean isLower() {
|
||||
String grade = mMMKV.decodeString(CommonConfig.UIUI_USER_GRADE_KEY, "七年级");
|
||||
Log.e(TAG, "isLower: " + grade);
|
||||
switch (grade) {
|
||||
case "一年级":
|
||||
case "二年级":
|
||||
case "三年级":
|
||||
case "四年级":
|
||||
case "五年级":
|
||||
case "六年级":
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public int getFragmentSize() {
|
||||
Log.e(TAG, "getFragmentSize: ");
|
||||
return mFragments == null ? 0 : mFragments.size();
|
||||
}
|
||||
|
||||
public void setCurrentItem() {
|
||||
mViewDataBinding.viewPager.setCurrentItem(defaultCurrent);
|
||||
}
|
||||
|
||||
public void setPageChangeListener(ViewPager.OnPageChangeListener listener) {
|
||||
this.mListener = listener;
|
||||
}
|
||||
}
|
||||
696
app/src/main/java/com/xwad/os/fragment/user/UserFragment.java
Normal file
696
app/src/main/java/com/xwad/os/fragment/user/UserFragment.java
Normal file
@@ -0,0 +1,696 @@
|
||||
package com.xwad.os.fragment.user;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.arialyy.annotations.Download;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.task.DownloadTask;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.activity.ExitActivity;
|
||||
import com.xwad.os.activity.homework.HomeworkActivity;
|
||||
import com.xwad.os.activity.more.MoreAppActivity;
|
||||
import com.xwad.os.activity.user.UserActivity;
|
||||
import com.xwad.os.adapter.AppAdapter;
|
||||
import com.xwad.os.adapter.HomeworkAdapter;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.bean.BaseResponse;
|
||||
import com.xwad.os.bean.DesktopIcon;
|
||||
import com.xwad.os.bean.HomeworkBean;
|
||||
import com.xwad.os.bean.PhraseContent;
|
||||
import com.xwad.os.bean.SnInfo;
|
||||
import com.xwad.os.bean.StudyStatBean;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentUserBinding;
|
||||
import com.xwad.os.jxw.JxwPackageConfig;
|
||||
import com.xwad.os.manager.RemoteManager;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
import com.xwad.os.utils.TimeUtils;
|
||||
import com.xwad.os.utils.Utils;
|
||||
import com.xwad.os.view.RecyclerViewSpacesItemDecoration;
|
||||
import com.xwad.os.view.VerticalDecorationWithoutFirst;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Use the {@link UserFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBinding> {
|
||||
private static final String TAG = "UserFragment";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private FragmentActivity mContext;
|
||||
|
||||
private AppAdapter mAppAdapter;
|
||||
private HomeworkAdapter mHomeworkAdapter;
|
||||
|
||||
// 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 UserFragment() {
|
||||
// Required empty public constructor
|
||||
Log.e(TAG, "UserFragment: ");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 UserFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static UserFragment newInstance(String param1, String param2) {
|
||||
UserFragment fragment = new UserFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(ARG_PARAM1, param1);
|
||||
args.putString(ARG_PARAM2, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Download.onTaskComplete
|
||||
void taskComplete(DownloadTask task) {
|
||||
//在这里处理任务完成的状态
|
||||
Log.e(TAG, "taskComplete: " + task.getFilePath());
|
||||
Log.e(TAG, "taskComplete: " + task.getDownloadEntity().getUrl());
|
||||
mHomeworkAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mParam1 = getArguments().getString(ARG_PARAM1);
|
||||
mParam2 = getArguments().getString(ARG_PARAM2);
|
||||
}
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_user;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
Aria.download(this).register();
|
||||
|
||||
Log.e(TAG, "initView: ");
|
||||
mViewDataBinding.tvNotification.requestFocus();
|
||||
registerOwnReceiver();
|
||||
String name = mMMKV.decodeString(CommonConfig.UIUI_USER_NAME_KEY, "");
|
||||
if (TextUtils.isEmpty(name)) {
|
||||
mViewDataBinding.tvName.setText(getString(R.string.default_nickname));
|
||||
} else {
|
||||
mViewDataBinding.tvName.setText(name);
|
||||
}
|
||||
String grade = mMMKV.decodeString(CommonConfig.UIUI_USER_GRADE_KEY, "");
|
||||
if (TextUtils.isEmpty(grade)) {
|
||||
mViewDataBinding.tvGrade.setText(getString(R.string.default_grade));
|
||||
} else {
|
||||
mViewDataBinding.tvGrade.setText(grade);
|
||||
}
|
||||
String avatar = mMMKV.decodeString(CommonConfig.UIUI_USER_AVATAR_KEY, "");
|
||||
Glide.with(mViewDataBinding.ivAvatar).load(avatar).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar);
|
||||
|
||||
int logined = mMMKV.decodeInt(CommonConfig.isLogined, 0);
|
||||
if (logined == 1) {
|
||||
mViewDataBinding.ivActivation.setVisibility(View.GONE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
|
||||
}
|
||||
setButtonVisibility();
|
||||
|
||||
mViewDataBinding.tvTime.setText(TimeUtils.getNowTimeInMinute());
|
||||
mViewDataBinding.tvDate1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate3.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 4));
|
||||
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
|
||||
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
wm.getDefaultDisplay().getRealMetrics(dm);
|
||||
float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5)
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 1));//top间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距
|
||||
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距
|
||||
mViewDataBinding.rvApp.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
|
||||
mAppAdapter = new AppAdapter();
|
||||
mViewDataBinding.rvApp.setAdapter(mAppAdapter);
|
||||
|
||||
mHomeworkAdapter = new HomeworkAdapter();
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
|
||||
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
|
||||
// mViewDataBinding.rvHomework.addItemDecoration(new EquallyDividedItemDecoration(1, ScreenUtils.dp2px(getResources(), 4)));
|
||||
mViewDataBinding.rvHomework.addItemDecoration(new VerticalDecorationWithoutFirst(0, 16, mContext));
|
||||
mViewDataBinding.rvHomework.setLayoutManager(linearLayoutManager);
|
||||
mViewDataBinding.rvHomework.setAdapter(mHomeworkAdapter);
|
||||
|
||||
initWifiState();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.mSnInfoData.observe(this, new Observer<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
public void onChanged(BaseResponse<SnInfo> snInfoBaseResponse) {
|
||||
if (snInfoBaseResponse != null) {
|
||||
//设备已经绑定
|
||||
switch (snInfoBaseResponse.code) {
|
||||
case 200://设备已经绑定
|
||||
SnInfo snInfo = snInfoBaseResponse.data;
|
||||
Glide.with(mViewDataBinding.ivAvatar).load(snInfo.getAvatar()).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar);
|
||||
String name = snInfo.getSn_name();
|
||||
String grade = snInfo.getGrade();
|
||||
if (TextUtils.isEmpty(name)) {
|
||||
mViewDataBinding.tvName.setText(getString(R.string.default_nickname));
|
||||
} else {
|
||||
mViewDataBinding.tvName.setText(name);
|
||||
}
|
||||
if (TextUtils.isEmpty(grade)) {
|
||||
mViewDataBinding.tvGrade.setText(getString(R.string.default_grade));
|
||||
} else {
|
||||
mViewDataBinding.tvGrade.setText(grade);
|
||||
}
|
||||
mViewDataBinding.tvPercent.setText(TimeUtils.secondsToHourMin(snInfo.getStudy_time()));
|
||||
mViewDataBinding.ivActivation.setVisibility(View.GONE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case 300: //设备没有绑定
|
||||
case 400://没有授权的设备
|
||||
case 402://sn不存在
|
||||
case 403://设备归属不存在
|
||||
// mViewDataBinding.tvName.setText(getString(R.string.default_nickname));
|
||||
// mViewDataBinding.tvGrade.setText(getString(R.string.default_grade));
|
||||
mViewDataBinding.ivActivation.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.GONE);
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
||||
setButtonVisibility();
|
||||
|
||||
mViewModel.getStudyStat();
|
||||
mViewModel.getQrCode();
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mStudyStatBeanData.observe(this, new Observer<StudyStatBean>() {
|
||||
@Override
|
||||
public void onChanged(StudyStatBean studyStatBean) {
|
||||
if (studyStatBean != null) {
|
||||
// tv_percent.setText(studyStat.getStudy_exceed() + "%");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mQrCodeData.observe(this, new Observer<Bitmap>() {
|
||||
@Override
|
||||
public void onChanged(Bitmap bitmap) {
|
||||
mViewDataBinding.ivDeviceQrcode.setImageBitmap(bitmap);
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mDesktopListIconData.observe(this, new Observer<ArrayList<DesktopIcon>>() {
|
||||
@Override
|
||||
public void onChanged(ArrayList<DesktopIcon> desktopIcons) {
|
||||
Log.e(TAG, "setInstalledApp: " + desktopIcons);
|
||||
if (desktopIcons == null || desktopIcons.size() == 0) {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.rvApp.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
mViewDataBinding.ivNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.rvApp.setVisibility(View.VISIBLE);
|
||||
mAppAdapter.setDesktopIcons(desktopIcons);
|
||||
}
|
||||
mViewModel.getAppUsedStatistics();
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mAppUsedData.observe(this, new Observer<Long>() {
|
||||
@Override
|
||||
public void onChanged(Long time) {
|
||||
Log.e(TAG, "setAppUsedStatistics: " + time);
|
||||
// String useTime = TimeUtils.formatTime(time);
|
||||
// tv_duration.setText(String.format(getString(R.string.today_study_time), useTime));
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mHomeworkBeanListData.observe(this, new Observer<List<HomeworkBean>>() {
|
||||
@Override
|
||||
public void onChanged(List<HomeworkBean> homeworkBeans) {
|
||||
mHomeworkAdapter.setHomeworkList(homeworkBeans);
|
||||
if (homeworkBeans == null || homeworkBeans.isEmpty()) {
|
||||
mViewDataBinding.llNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.rvHomework.setVisibility(View.GONE);
|
||||
} else {
|
||||
mViewDataBinding.llNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.rvHomework.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.getHomework();
|
||||
|
||||
mViewModel.mPhraseData.observe(this, new Observer<PhraseContent>() {
|
||||
@Override
|
||||
public void onChanged(PhraseContent phraseContent) {
|
||||
String text = phraseContent.getContent();
|
||||
mViewDataBinding.tvNotification.setText(text);
|
||||
mViewDataBinding.tvNotification.requestFocus();
|
||||
}
|
||||
});
|
||||
mViewModel.getPhrase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
private void setButtonVisibility() {
|
||||
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
|
||||
Log.e(TAG, "setButtonVisibility: " + is_activation);
|
||||
if (is_activation) {
|
||||
boolean isReturnAndroid = RemoteManager.getInstance().isReturnAndroid();
|
||||
if (isReturnAndroid) {
|
||||
// mViewDataBinding.tvExit.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
// mViewDataBinding.tvExit.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
mViewDataBinding.ivActivation.setVisibility(View.GONE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
// mViewDataBinding.tvExit.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.ivActivation.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.clStudyTime.setVisibility(View.GONE);
|
||||
Glide.with(mViewDataBinding.ivAvatar).load(mMMKV.decodeString(CommonConfig.UIUI_USER_AVATAR_KEY)).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar);
|
||||
mViewDataBinding.tvName.setText(mMMKV.decodeString(CommonConfig.UIUI_USER_NAME_KEY, getString(R.string.default_nickname)));
|
||||
mViewDataBinding.tvGrade.setText(mMMKV.decodeString(CommonConfig.UIUI_USER_GRADE_KEY, getString(R.string.default_grade)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
Log.e(TAG, "setUserVisibleHint: " + isVisibleToUser);
|
||||
if (isVisibleToUser && isViewInitiated) {
|
||||
mViewModel.getInstalledApp();
|
||||
mViewModel.getSnInfo();
|
||||
setButtonVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
Log.e(TAG, "onResume: ");
|
||||
setButtonVisibility();
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
Log.e(TAG, "onDestroy: ");
|
||||
unregisterOwnReceiver();
|
||||
}
|
||||
|
||||
private void registerOwnReceiver() {
|
||||
registerTimeReceiver();
|
||||
registerRefreshReceiver();
|
||||
registerUpdateDesktopReceiver();
|
||||
registerAppChangedReceiver();
|
||||
registWiFiStatuReceiver();
|
||||
registBateeryReceiver();
|
||||
}
|
||||
|
||||
private void unregisterOwnReceiver() {
|
||||
if (mTimeChangedReceiver != null) {
|
||||
mContext.unregisterReceiver(mTimeChangedReceiver);
|
||||
}
|
||||
if (mRefreshReceiver != null) {
|
||||
mContext.unregisterReceiver(mRefreshReceiver);
|
||||
}
|
||||
if (updateDesktopReceiver != null) {
|
||||
mContext.unregisterReceiver(updateDesktopReceiver);
|
||||
}
|
||||
if (mAppChangedReceiver != null) {
|
||||
mContext.unregisterReceiver(mAppChangedReceiver);
|
||||
}
|
||||
if (mWiFiStatuReceiver != null) {
|
||||
mContext.unregisterReceiver(mWiFiStatuReceiver);
|
||||
}
|
||||
if (mPowerConnectReceiver != null) {
|
||||
mContext.unregisterReceiver(mPowerConnectReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private TimeChangedReceiver mTimeChangedReceiver;
|
||||
|
||||
/**
|
||||
* 监听时间和日期变化
|
||||
*/
|
||||
private void registerTimeReceiver() {
|
||||
mTimeChangedReceiver = new TimeChangedReceiver();
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
|
||||
filter.addAction(Intent.ACTION_DATE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_TIME_CHANGED);
|
||||
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_TIME_TICK);
|
||||
mContext.registerReceiver(mTimeChangedReceiver, filter);
|
||||
}
|
||||
|
||||
private class TimeChangedReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("TimeChangedReceiver", "onReceive:" + action);
|
||||
|
||||
switch (action) {
|
||||
case Intent.ACTION_DATE_CHANGED:
|
||||
case Intent.ACTION_TIME_CHANGED:
|
||||
case Intent.ACTION_TIMEZONE_CHANGED:
|
||||
case Intent.ACTION_TIME_TICK:
|
||||
mViewDataBinding.tvTime.setText(TimeUtils.getNowTimeInMinute());
|
||||
mViewDataBinding.tvDate1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
mViewDataBinding.tvDate3.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis()));
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final String ACTION_REFRESH_BINDING_STATUS = "RefreshBindingStatus";
|
||||
public static final String ACTION_REFRESH_LOVE_ENCOURAGEMENT = "RefreshLoveEncouragement";
|
||||
public static final String ACTION_REFRESH_HOMEWORK_REMINDERS = "RefreshHomeworkReminders";
|
||||
|
||||
private void registerRefreshReceiver() {
|
||||
if (mRefreshReceiver == null) {
|
||||
mRefreshReceiver = new RefreshReceiver();
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(ACTION_REFRESH_BINDING_STATUS);
|
||||
filter.addAction(ACTION_REFRESH_LOVE_ENCOURAGEMENT);
|
||||
filter.addAction(ACTION_REFRESH_HOMEWORK_REMINDERS);
|
||||
mContext.registerReceiver(mRefreshReceiver, filter);
|
||||
}
|
||||
}
|
||||
|
||||
private RefreshReceiver mRefreshReceiver;
|
||||
|
||||
private class RefreshReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("RefreshReceiver", "onReceive: " + action);
|
||||
switch (action) {
|
||||
case ACTION_REFRESH_BINDING_STATUS:
|
||||
mViewModel.getSnInfo();
|
||||
setButtonVisibility();
|
||||
break;
|
||||
case ACTION_REFRESH_LOVE_ENCOURAGEMENT:
|
||||
mViewModel.getPhrase();
|
||||
break;
|
||||
case ACTION_REFRESH_HOMEWORK_REMINDERS:
|
||||
mViewModel.getHomework();
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private UpdateDesktopReceiver updateDesktopReceiver;
|
||||
|
||||
public static final String UPDATE_DESKTOP_ICON_ACTION = "UPDATE_DESKTOP_ICON";
|
||||
|
||||
private void registerUpdateDesktopReceiver() {
|
||||
if (updateDesktopReceiver == null) {
|
||||
updateDesktopReceiver = new UpdateDesktopReceiver();
|
||||
}
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
|
||||
filter.addAction(UPDATE_DESKTOP_ICON_ACTION);
|
||||
mContext.registerReceiver(updateDesktopReceiver, filter);
|
||||
}
|
||||
|
||||
class UpdateDesktopReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("UpdateDesktopReceiver", "onReceive: " + action);
|
||||
if (TextUtils.isEmpty(action)) {
|
||||
return;
|
||||
}
|
||||
if (UPDATE_DESKTOP_ICON_ACTION.equals(action)) {
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private AppChangedReceiver mAppChangedReceiver;
|
||||
|
||||
private void registerAppChangedReceiver() {
|
||||
if (mAppChangedReceiver == null) {
|
||||
mAppChangedReceiver = new AppChangedReceiver();
|
||||
}
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
|
||||
filter.addDataScheme("package");
|
||||
mContext.registerReceiver(mAppChangedReceiver, filter);
|
||||
}
|
||||
|
||||
class AppChangedReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("AppChangedReceiver", "onReceive: " + action);
|
||||
if (TextUtils.isEmpty(action)) {
|
||||
return;
|
||||
}
|
||||
mViewModel.getInstalledApp();
|
||||
}
|
||||
}
|
||||
|
||||
private WiFiStatuReceiver mWiFiStatuReceiver;
|
||||
|
||||
|
||||
private void registWiFiStatuReceiver() {
|
||||
if (mWiFiStatuReceiver != null) {
|
||||
return;
|
||||
}
|
||||
mWiFiStatuReceiver = new WiFiStatuReceiver();
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(NETWORK_STATE_CHANGE);
|
||||
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
|
||||
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
|
||||
mContext.registerReceiver(mWiFiStatuReceiver, filter);
|
||||
}
|
||||
|
||||
private static final String NETWORK_STATE_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE";
|
||||
|
||||
private class WiFiStatuReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.d("fht", "action: " + action);
|
||||
if (action.equals(NETWORK_STATE_CHANGE)) {
|
||||
boolean isNetOK = isWifiConnect();
|
||||
Log.d("fht", "网络状态发生变化,是否可用:" + isNetOK);
|
||||
if (isNetOK) {
|
||||
initWifiState();
|
||||
} else {
|
||||
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.icon_wifi_disconnect));
|
||||
mViewDataBinding.tvWifiStatus.setText("未连接");
|
||||
}
|
||||
} else if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
|
||||
int wifistate = intent.getIntExtra(
|
||||
WifiManager.EXTRA_WIFI_STATE,
|
||||
WifiManager.WIFI_STATE_DISABLED);
|
||||
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
|
||||
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.icon_wifi_disconnect));
|
||||
mViewDataBinding.tvWifiStatus.setText("未连接");
|
||||
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
|
||||
checkWifiState();
|
||||
}
|
||||
} else if (action.equals(WifiManager.RSSI_CHANGED_ACTION)) {
|
||||
initWifiState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void initWifiState() {
|
||||
ConnectivityManager manager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
|
||||
Log.d("fht", "info.isConnected(): " + info.isConnected());
|
||||
if (info.isConnected()) {
|
||||
checkWifiState();
|
||||
} else {
|
||||
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.icon_wifi_disconnect));
|
||||
mViewDataBinding.tvWifiStatus.setText("未连接");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isWifiConnect() {
|
||||
ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
|
||||
return mWifiInfo != null && mWifiInfo.isConnected();
|
||||
}
|
||||
|
||||
public void checkWifiState() {
|
||||
if (isWifiConnect()) {
|
||||
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.icon_wifi_connect));
|
||||
mViewDataBinding.tvWifiStatus.setText("已连接");
|
||||
} else {
|
||||
//无连接
|
||||
Log.d("fht", "无wifi连接");
|
||||
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.icon_wifi_disconnect));
|
||||
mViewDataBinding.tvWifiStatus.setText("未连接");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 电池广播
|
||||
*/
|
||||
private void registBateeryReceiver() {
|
||||
IntentFilter intentFilter = new IntentFilter();
|
||||
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
|
||||
|
||||
mContext.registerReceiver(mPowerConnectReceiver, intentFilter);
|
||||
}
|
||||
|
||||
private PowerConnectReceiver mPowerConnectReceiver = new PowerConnectReceiver();
|
||||
|
||||
class PowerConnectReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e("PowerConnectReceiver", "onReceive: " + action);
|
||||
switch (action) {
|
||||
case Intent.ACTION_BATTERY_CHANGED:
|
||||
//你可以读到充电状态,如果在充电,可以读到是usb还是交流电
|
||||
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
|
||||
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
|
||||
status == BatteryManager.BATTERY_STATUS_FULL;
|
||||
|
||||
//当前剩余电量
|
||||
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
|
||||
//电量最大值
|
||||
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
|
||||
|
||||
//电量百分比
|
||||
int batteryPer = (int) (level / (float) scale * 100);
|
||||
mViewDataBinding.batteryView.setBatteryLevel(batteryPer, isCharging);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
|
||||
public void exit(View view) {
|
||||
Intent intent = new Intent("Receiver_Refresh_Password_Action");
|
||||
intent.setPackage("com.uiui.zy");
|
||||
mContext.sendBroadcast(intent);
|
||||
|
||||
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
|
||||
if (is_activation) {
|
||||
startActivity(new Intent(mContext, ExitActivity.class));
|
||||
} else {
|
||||
Utils.exitDesktop(mContext);
|
||||
}
|
||||
}
|
||||
|
||||
public void openSn(View view) {
|
||||
OpenApkUtils.getInstance().openZySn();
|
||||
}
|
||||
|
||||
public void openUser(View view) {
|
||||
startActivity(new Intent(mContext, UserActivity.class));
|
||||
}
|
||||
|
||||
public void toMore(View view) {
|
||||
startActivity(new Intent(mContext, MoreAppActivity.class));
|
||||
}
|
||||
|
||||
public void openJxwUpdate(View view) {
|
||||
OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME);
|
||||
}
|
||||
|
||||
public void openHomework(View view) {
|
||||
startActivity(new Intent(mContext, HomeworkActivity.class));
|
||||
}
|
||||
|
||||
public void refreshHomework(View view) {
|
||||
mViewModel.getHomework();
|
||||
}
|
||||
|
||||
public void toWifi(View view) {
|
||||
mContext.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
|
||||
}
|
||||
}
|
||||
}
|
||||
282
app/src/main/java/com/xwad/os/fragment/user/UserViewModel.java
Normal file
282
app/src/main/java/com/xwad/os/fragment/user/UserViewModel.java
Normal file
@@ -0,0 +1,282 @@
|
||||
package com.xwad.os.fragment.user;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
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.FragmentEvent;
|
||||
import com.xwad.os.BuildConfig;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.bean.AppUsed;
|
||||
import com.xwad.os.bean.BaseResponse;
|
||||
import com.xwad.os.bean.DesktopIcon;
|
||||
import com.xwad.os.bean.HomeworkBean;
|
||||
import com.xwad.os.bean.PhraseContent;
|
||||
import com.xwad.os.bean.SnInfo;
|
||||
import com.xwad.os.bean.StudyStatBean;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentUserBinding;
|
||||
import com.xwad.os.manager.AppManager;
|
||||
import com.xwad.os.manager.RemoteManager;
|
||||
import com.xwad.os.network.NetInterfaceManager;
|
||||
import com.xwad.os.network.UrlAddress;
|
||||
import com.xwad.os.utils.ActivationUtil;
|
||||
import com.xwad.os.utils.ApkUtils;
|
||||
import com.xwad.os.utils.CXAESUtil;
|
||||
import com.xwad.os.utils.LenovoCsdkUtil;
|
||||
import com.xwad.os.utils.TimeUtils;
|
||||
import com.xwad.os.utils.Utils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class UserViewModel extends BaseViewModel<FragmentUserBinding, FragmentEvent> {
|
||||
private static final String TAG = "UserViewModel";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
@Override
|
||||
public FragmentUserBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<BaseResponse<SnInfo>> mSnInfoData = new MutableLiveData<>();
|
||||
|
||||
public void getSnInfo() {
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getSnInfoFragment(getLifecycle(), new NetInterfaceManager.ObserverCallback() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
Log.e("getSnInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(BaseResponse response) {
|
||||
Log.e("getSnInfo", "onNext: " + response);
|
||||
mSnInfoData.setValue(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
Log.e("getSnInfo", "onError: " + e.getMessage());
|
||||
String jsonString = mMMKV.decodeString(UrlAddress.SNINFO);
|
||||
Gson gson = new Gson();
|
||||
Type type = new TypeToken<BaseResponse<SnInfo>>() {
|
||||
}.getType();
|
||||
BaseResponse<SnInfo> userInfoBaseResponse = gson.fromJson(jsonString, type);
|
||||
mSnInfoData.setValue(userInfoBaseResponse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getSnInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<StudyStatBean> mStudyStatBeanData = new MutableLiveData<>();
|
||||
|
||||
public void getStudyStat() {
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getStudyStatObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<StudyStatBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getStudyStat", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<StudyStatBean> studyStatBeanBaseResponse) {
|
||||
Log.e("getStudyStat", "onNext: " + studyStatBeanBaseResponse);
|
||||
if (studyStatBeanBaseResponse.code == 200) {
|
||||
StudyStatBean studyStatBean = studyStatBeanBaseResponse.data;
|
||||
mStudyStatBeanData.setValue(studyStatBean);
|
||||
} else {
|
||||
mStudyStatBeanData.setValue(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getStudyStat", "onError: " + e.getMessage());
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getStudyStat", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Bitmap> mQrCodeData = new MutableLiveData<>();
|
||||
|
||||
public void getQrCode() {
|
||||
String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, LenovoCsdkUtil.getInstance().getSerial());
|
||||
Log.e("getQRCode", "setImageAndText: " + encryptString);
|
||||
Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400);
|
||||
mQrCodeData.setValue(bitmap);
|
||||
}
|
||||
|
||||
public MutableLiveData<ArrayList<DesktopIcon>> mDesktopListIconData = new MutableLiveData<>();
|
||||
|
||||
public void getInstalledApp() {
|
||||
ArrayList<DesktopIcon> desktopIcons = AppManager.getInstance().getFilterAppList();
|
||||
|
||||
DesktopIcon appstoreDesktopIcon = new DesktopIcon();
|
||||
appstoreDesktopIcon.setLable(ApkUtils.getAppName(getCtx(), "com.uiui.zyappstore"));
|
||||
appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME);
|
||||
appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME);
|
||||
appstoreDesktopIcon.setIcon(ApkUtils.getAppDrawable(getCtx(), "com.uiui.zyappstore"));
|
||||
desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon);
|
||||
|
||||
DesktopIcon updateDesktopIcon = new DesktopIcon();
|
||||
updateDesktopIcon.setLable("应用更新");
|
||||
updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME);
|
||||
updateDesktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_update));
|
||||
desktopIcons.add(desktopIcons.size(), updateDesktopIcon);
|
||||
|
||||
DesktopIcon desktopIcon = new DesktopIcon();
|
||||
desktopIcon.setLable("添加应用");
|
||||
desktopIcon.setPackageName(AppManager.ADD_NAME);
|
||||
desktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add));
|
||||
desktopIcons.add(desktopIcons.size(), desktopIcon);
|
||||
|
||||
mDesktopListIconData.setValue(desktopIcons);
|
||||
}
|
||||
|
||||
public MutableLiveData<Long> mAppUsedData = new MutableLiveData<>();
|
||||
|
||||
public void getAppUsedStatistics() {
|
||||
String jsonString = RemoteManager.getInstance().getAppUsedStatistics();
|
||||
if (TextUtils.isEmpty(jsonString)) {
|
||||
mAppUsedData.setValue((long) 0);
|
||||
} else {
|
||||
Gson gson = new Gson();
|
||||
Type listType = new TypeToken<List<AppUsed>>() {
|
||||
}.getType();
|
||||
try {
|
||||
List<AppUsed> appUseds = gson.fromJson(jsonString, listType);
|
||||
Log.e(TAG, "getAppUsedStatistics: " + appUseds);
|
||||
List<AppUsed> appUseTime = appUseds.stream().filter(new Predicate<AppUsed>() {
|
||||
@Override
|
||||
public boolean test(AppUsed appUsed) {
|
||||
return !BuildConfig.APPLICATION_ID.equals(appUsed.getPackages())
|
||||
&& !"com.safe.uiui".equals(appUsed.getPackages());
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
long time = appUseTime.stream().mapToLong(AppUsed::getUseTime).sum();
|
||||
mAppUsedData.setValue(time);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "getAppUsedStatistics: " + e.getMessage());
|
||||
mAppUsedData.setValue((long) 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public MutableLiveData<List<HomeworkBean>> mHomeworkBeanListData = new MutableLiveData<>();
|
||||
|
||||
public void getHomework() {
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getHomeworkObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<ArrayList<HomeworkBean>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getHomework", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<ArrayList<HomeworkBean>> listBaseResponse) {
|
||||
Log.e("getHomework", "onNext: " + listBaseResponse);
|
||||
List<HomeworkBean> homeworkBeans = listBaseResponse.data;
|
||||
if (homeworkBeans != null) {
|
||||
List<HomeworkBean> homeworkBeans2 = homeworkBeans.stream().filter(new Predicate<HomeworkBean>() {
|
||||
@Override
|
||||
public boolean test(HomeworkBean homeworkBean) {
|
||||
return TimeUtils.isHomeworkToday(homeworkBean.getCreated_at());
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
mHomeworkBeanListData.setValue(homeworkBeans2);
|
||||
} else {
|
||||
mHomeworkBeanListData.setValue(homeworkBeans);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getHomework", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getHomework", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<PhraseContent> mPhraseData = new MutableLiveData<>();
|
||||
|
||||
public void getPhrase() {
|
||||
boolean activation = ActivationUtil.getInstance().isActivation();
|
||||
if (!activation) {
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getPhraseObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<PhraseContent>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getPhrase", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<PhraseContent> phraseContentBaseResponse) {
|
||||
Log.e("getPhrase", "onNext: " + phraseContentBaseResponse);
|
||||
if (phraseContentBaseResponse.code == 200) {
|
||||
PhraseContent phraseContent = phraseContentBaseResponse.data;
|
||||
mPhraseData.setValue(phraseContent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getPhrase", "onError: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getPhrase", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.xwad.os.fragment.usercenter.device;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.xwad.os.BuildConfig;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.activity.permission.PermissionActivity;
|
||||
import com.xwad.os.activity.service.ServiceActivity;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.databinding.FragmentDeviceBinding;
|
||||
import com.xwad.os.utils.LenovoCsdkUtil;
|
||||
|
||||
public class DeviceFragment extends BaseMvvmFragment<DeviceViewModel, FragmentDeviceBinding> {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static DeviceFragment newInstance() {
|
||||
return new DeviceFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_device;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.tvModel.setText(Build.MODEL);
|
||||
mViewDataBinding.tvVersion.setText(BuildConfig.VERSION_NAME);
|
||||
mViewDataBinding.tvMac.setText(LenovoCsdkUtil.getInstance().getSerial());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void openService(View view) {
|
||||
startActivity(new Intent(mContext, ServiceActivity.class));
|
||||
}
|
||||
|
||||
public void checkPermission(View view) {
|
||||
startActivity(new Intent(mContext, PermissionActivity.class));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.usercenter.device;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentDeviceBinding;
|
||||
|
||||
public class DeviceViewModel extends BaseViewModel<FragmentDeviceBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentDeviceBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
package com.xwad.os.fragment.usercenter.info;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.CompoundButton;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.activity.edit.EditActivity;
|
||||
import com.xwad.os.activity.selectegrade.SelecteGradeActivity;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.bean.SnInfo;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.FragmentInfoBinding;
|
||||
import com.xwad.os.utils.ActivationUtil;
|
||||
import com.xwad.os.utils.LenovoCsdkUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class InfoFragment extends BaseMvvmFragment<InfoViewModel, FragmentInfoBinding> {
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static InfoFragment newInstance() {
|
||||
return new InfoFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_info;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mViewDataBinding.rbMale.setChecked(true);
|
||||
|
||||
}
|
||||
|
||||
private void setRadioButton() {
|
||||
mViewDataBinding.rbMale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", LenovoCsdkUtil.getInstance().getSerial());
|
||||
params.put("sex", "1");
|
||||
mViewModel.updateInfo(params);
|
||||
} else {
|
||||
mMMKV.encode(CommonConfig.UIUI_USER_GENDER_KEY, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rbFemale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("sn", LenovoCsdkUtil.getInstance().getSerial());
|
||||
params.put("sex", "2");
|
||||
mViewModel.updateInfo(params);
|
||||
} else {
|
||||
mMMKV.encode(CommonConfig.UIUI_USER_GENDER_KEY, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.mSnInfoData.observe(this, new Observer<SnInfo>() {
|
||||
@Override
|
||||
public void onChanged(SnInfo snInfo) {
|
||||
mViewDataBinding.setSnInfo(snInfo);
|
||||
int gender = snInfo.getSex();
|
||||
if (gender == 0) {
|
||||
mViewDataBinding.rgGender.clearCheck();
|
||||
} else if (gender == 1) {
|
||||
mViewDataBinding.rbMale.setChecked(true);
|
||||
} else if (gender == 2) {
|
||||
mViewDataBinding.rbFemale.setChecked(true);
|
||||
}
|
||||
setRadioButton();
|
||||
}
|
||||
});
|
||||
mViewModel.mSuccessfulData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
Toaster.show("更新成功");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (ActivationUtil.getInstance().isActivation()) {
|
||||
mViewModel.getSnInfo();
|
||||
} else {
|
||||
getLocalData();
|
||||
}
|
||||
}
|
||||
|
||||
private void getLocalData() {
|
||||
int gender = mMMKV.decodeInt(CommonConfig.UIUI_USER_GENDER_KEY, 1);
|
||||
if (gender == 1) {
|
||||
mViewDataBinding.rbMale.setChecked(true);
|
||||
} else if (gender == 2) {
|
||||
mViewDataBinding.rbFemale.setChecked(true);
|
||||
}
|
||||
setRadioButton();
|
||||
|
||||
String class_name = mMMKV.decodeString(CommonConfig.UIUI_USER_CLASS_KEY, "");
|
||||
if (TextUtils.isEmpty(class_name)) {
|
||||
mViewDataBinding.tvClass.setText(getString(R.string.notset));
|
||||
} else {
|
||||
mViewDataBinding.tvClass.setText(class_name);
|
||||
}
|
||||
String sn_grade = mMMKV.decodeString(CommonConfig.UIUI_USER_GRADE_KEY, "");
|
||||
if (TextUtils.isEmpty(sn_grade)) {
|
||||
mViewDataBinding.tvGrade.setText(getString(R.string.default_grade));
|
||||
} else {
|
||||
mViewDataBinding.tvGrade.setText(sn_grade);
|
||||
}
|
||||
String school = mMMKV.decodeString(CommonConfig.UIUI_USER_SCHOOL_KEY, "");
|
||||
if (TextUtils.isEmpty(school)) {
|
||||
mViewDataBinding.tvSchool.setText(getString(R.string.notset));
|
||||
} else {
|
||||
mViewDataBinding.tvSchool.setText(school);
|
||||
}
|
||||
}
|
||||
|
||||
private void edit(String type, String text, int maxLength) {
|
||||
Intent intent = new Intent(mContext, EditActivity.class);
|
||||
intent.putExtra("type", type);
|
||||
intent.putExtra("data", text);
|
||||
intent.putExtra("maxLength", maxLength);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void editClass(View view) {
|
||||
String text = mViewDataBinding.tvClass.getText().toString();
|
||||
edit(CommonConfig.UIUI_USER_CLASS_KEY, text, 8);
|
||||
}
|
||||
|
||||
public void editGrade(View view) {
|
||||
Intent intent = new Intent(mContext, SelecteGradeActivity.class);
|
||||
intent.putExtra("data", mViewDataBinding.tvGrade.getText());
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void editSchool(View view) {
|
||||
String text = mViewDataBinding.tvSchool.getText().toString();
|
||||
edit(CommonConfig.UIUI_USER_SCHOOL_KEY, text, 16);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
package com.xwad.os.fragment.usercenter.info;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.bean.BaseResponse;
|
||||
import com.xwad.os.bean.SnInfo;
|
||||
import com.xwad.os.databinding.FragmentInfoBinding;
|
||||
import com.xwad.os.network.NetInterfaceManager;
|
||||
import com.xwad.os.utils.ActivationUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class InfoViewModel extends BaseViewModel<FragmentInfoBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentInfoBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<SnInfo> mSnInfoData = new MutableLiveData<>();
|
||||
|
||||
public void getSnInfo() {
|
||||
if (!ActivationUtil.getInstance().isActivation()) {
|
||||
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getSnInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getSnInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<SnInfo> snInfoBaseResponse) {
|
||||
Log.e("getSnInfo", "onNext: " + snInfoBaseResponse);
|
||||
if (snInfoBaseResponse.code == 200) {
|
||||
mSnInfoData.setValue(snInfoBaseResponse.data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getSnInfo", "onError: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getSnInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mSuccessfulData = new MutableLiveData<>();
|
||||
|
||||
public void updateInfo(Map<String, String> params) {
|
||||
if (!ActivationUtil.getInstance().isActivation()) {
|
||||
|
||||
return;
|
||||
}
|
||||
NetInterfaceManager.getInstance().getUpdateInfoObservable(params)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("updateInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("updateInfo", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
mSuccessfulData.setValue(true);
|
||||
} else {
|
||||
Toaster.show(baseResponse.msg);
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("updateInfo", "onError: " + e.getMessage());
|
||||
mSuccessfulData.setValue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("updateInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.xwad.os.fragment.usercenter.parents;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.xwad.os.R;
|
||||
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.xwad.os.databinding.FragmentParentsBinding;
|
||||
import com.xwad.os.utils.OpenApkUtils;
|
||||
|
||||
public class ParentsFragment extends BaseMvvmFragment<ParentsViewModel, FragmentParentsBinding> {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static ParentsFragment newInstance() {
|
||||
return new ParentsFragment();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_parents;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mContext = getActivity();
|
||||
mViewModel.setCtx(getCtx());
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void openSn(View view) {
|
||||
OpenApkUtils.getInstance().openZySn();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xwad.os.fragment.usercenter.parents;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.databinding.FragmentParentsBinding;
|
||||
|
||||
public class ParentsViewModel extends BaseViewModel<FragmentParentsBinding, FragmentEvent> {
|
||||
|
||||
@Override
|
||||
public FragmentParentsBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user