fix:
update:修改包名
This commit is contained in:
2025-11-28 20:50:52 +08:00
parent a34a680689
commit 7e16ba8813
298 changed files with 1063 additions and 1078 deletions

View 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);
}
}
}
}

View 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() {
}
}

View 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 {
}
}

View 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);
}
}

View 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");
}
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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) {
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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());
}
});
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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 {
}
}

View File

@@ -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() {
}
}

View File

@@ -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);
}
}

View File

@@ -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() {
}
}

View 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();
}
}

View File

@@ -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() {
}
}

View 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);
}
}

View File

@@ -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() {
}
}

View 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) {
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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();
}
}

View File

@@ -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);
}
}
}

View File

@@ -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;
}
}

View 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) {
}
}
}

View File

@@ -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() {
}
}

View 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) {
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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;
}
}

View 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));
}
}
}

View 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: ");
}
});
}
}

View File

@@ -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));
}
}
}

View File

@@ -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() {
}
}

View File

@@ -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);
}
}
}

View File

@@ -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: ");
}
});
}
}

View File

@@ -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();
}
}
}

View File

@@ -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() {
}
}