diff --git a/app/build.gradle b/app/build.gradle index 065f9bf..5e691ba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdkVersion 24 targetSdkVersion 29 - versionCode 78 - versionName "1.8.6" + versionCode 79 + versionName "1.8.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true @@ -84,7 +84,7 @@ android { signingConfig signingConfigs.U807 buildConfigField "String", "platform", '"U807"' manifestPlaceholders = [ - AMAP_KEY : "d0cdff4516bb1a788ebdc02aeee75614" + AMAP_KEY : "8200776fc8cad995184a9a3a17a552e4" ] } @@ -93,7 +93,7 @@ android { signingConfig signingConfigs.U807 buildConfigField "String", "platform", '"U807"' manifestPlaceholders = [ - AMAP_KEY : "d0cdff4516bb1a788ebdc02aeee75614" + AMAP_KEY : "8200776fc8cad995184a9a3a17a552e4" ] } @@ -172,7 +172,7 @@ dependencies { implementation "androidx.room:room-runtime:2.4.3" annotationProcessor "androidx.room:room-compiler:2.4.3" //内存泄漏检测 - debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14' //磁盘缓存 implementation 'com.jakewharton:disklrucache:2.0.2' //glide @@ -196,9 +196,7 @@ dependencies { implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2' implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2' - //bindView - implementation 'com.jakewharton:butterknife:10.2.3' - annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' + implementation 'com.jakewharton.rxbinding4:rxbinding:4.0.0' implementation 'com.jeremyliao:live-event-bus-x:1.7.3' //MMKV diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7d6cb6f..f6be341 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl b/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl index f9c0dd6..13d32e4 100644 --- a/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl +++ b/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl @@ -27,4 +27,8 @@ interface IGetInfoInterface { List getAdminApp(); //写入系统数据 boolean putSecureInt(String key, int value); + //写入系统数据 + boolean putSystemInt(String key, int value); + //写入系统数据 + boolean putSystemFloat(String key, float value); } diff --git a/app/src/main/java/com/uiui/zyos/activity/AddIconActivity.java b/app/src/main/java/com/uiui/zyos/activity/AddIconActivity.java index 9388655..ed234a4 100644 --- a/app/src/main/java/com/uiui/zyos/activity/AddIconActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/AddIconActivity.java @@ -4,16 +4,15 @@ import android.content.Context; import android.util.DisplayMetrics; import android.view.View; import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.TextView; +import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.uiui.zyos.R; import com.uiui.zyos.adapter.AddAppAdapter; -import com.uiui.zyos.base.mvp.BaseMvpActivity; +import com.uiui.zyos.base.BaseDataBindingActivity; import com.uiui.zyos.bean.DesktopIcon; +import com.uiui.zyos.databinding.ActivityAddIconBinding; import com.uiui.zyos.manager.AppManager; import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; @@ -21,36 +20,27 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Set; -import butterknife.BindView; -import butterknife.ButterKnife; +public class AddIconActivity extends BaseDataBindingActivity { -public class AddIconActivity extends BaseMvpActivity { - - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.recyclerView) - RecyclerView recyclerView; - @BindView(R.id.tv_appsize) - TextView tv_appsize; + private ActivityAddIconBinding mBinding; private AddAppAdapter mAddAppAdapter; @Override - public int getLayoutId() { - return R.layout.activity_add_icon; + protected void initDataBinding() { + mBinding = DataBindingUtil.setContentView(this, R.layout.activity_add_icon); } @Override public void initView() { - ButterKnife.bind(this); - iv_back.setOnClickListener(new View.OnClickListener() { + mBinding.ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); - recyclerView.setLayoutManager(new GridLayoutManager(this, 6)); + mBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 6)); HashMap stringIntegerHashMap = new HashMap<>(); WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); @@ -60,9 +50,9 @@ public class AddIconActivity extends BaseMvpActivity { stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 - recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); mAddAppAdapter = new AddAppAdapter(); - recyclerView.setAdapter(mAddAppAdapter); + mBinding.recyclerView.setAdapter(mAddAppAdapter); } @Override @@ -72,9 +62,6 @@ public class AddIconActivity extends BaseMvpActivity { Set appList = AppManager.getInstance().getFilterAppset(); mAddAppAdapter.setPackageSet(appList); - tv_appsize.setText(String.format(getString(R.string.app_size), desktopIcons.size())); - + mBinding.tvAppsize.setText(String.format(getString(R.string.app_size), desktopIcons.size())); } - - } diff --git a/app/src/main/java/com/uiui/zyos/activity/ExitActivity.java b/app/src/main/java/com/uiui/zyos/activity/ExitActivity.java index 10ea3ca..a1d46cf 100644 --- a/app/src/main/java/com/uiui/zyos/activity/ExitActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/ExitActivity.java @@ -11,56 +11,21 @@ import android.util.Log; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; -import android.widget.LinearLayout; -import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; import com.tuo.customview.VerificationCodeView; import com.uiui.zyos.R; -import com.uiui.zyos.base.mvp.BaseMvpActivity; +import com.uiui.zyos.base.BaseDataBindingActivity; import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.databinding.ActivityExitBinding; import com.uiui.zyos.utils.Utils; -import butterknife.BindView; -import butterknife.ButterKnife; +public class ExitActivity extends BaseDataBindingActivity { + private static final String TAG = "ExitActivity"; -public class ExitActivity extends BaseMvpActivity { - private static final String TAG = ExitActivity.class.getSimpleName(); - - @BindView(R.id.bt_0) - TextView bt0; - @BindView(R.id.bt_1) - TextView bt1; - @BindView(R.id.bt_2) - TextView bt2; - @BindView(R.id.bt_3) - TextView bt3; - @BindView(R.id.bt_4) - TextView bt4; - @BindView(R.id.bt_5) - TextView bt5; - @BindView(R.id.bt_6) - TextView bt6; - @BindView(R.id.bt_7) - TextView bt7; - @BindView(R.id.bt_8) - TextView bt8; - @BindView(R.id.bt_9) - TextView bt9; - @BindView(R.id.bt_del) - TextView bt_del; - @BindView(R.id.bt_confirm) - TextView bt_confirm; - - @BindView(R.id.textView) - TextView textView; - @BindView(R.id.tv_hint) - TextView tv_hint; - @BindView(R.id.ll_keyboard) - LinearLayout ll_keyboard; - @BindView(R.id.icv) - VerificationCodeView codeView; + private ActivityExitBinding mBinding; private SoundPool soundPool; private int soundId; @@ -80,22 +45,21 @@ public class ExitActivity extends BaseMvpActivity { } @Override - public int getLayoutId() { - return R.layout.activity_exit; + protected void initDataBinding() { + mBinding = DataBindingUtil.setContentView(this, R.layout.activity_exit); } @Override public void initView() { - ButterKnife.bind(this); InputMethodManager imm = (InputMethodManager) ExitActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(codeView.getWindowToken(), 0); - codeView.getEditText().setOnClickListener(new View.OnClickListener() { + imm.hideSoftInputFromWindow(mBinding.icv.getWindowToken(), 0); + mBinding.icv.getEditText().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - ll_keyboard.setVisibility(View.VISIBLE); + mBinding.llKeyboard.setVisibility(View.VISIBLE); } }); - codeView.setInputCompleteListener(new VerificationCodeView.InputCompleteListener() { + mBinding.icv.setInputCompleteListener(new VerificationCodeView.InputCompleteListener() { @Override public void inputComplete() { checkPasswd(); @@ -107,34 +71,34 @@ public class ExitActivity extends BaseMvpActivity { } }); - bt_del.setOnClickListener(new View.OnClickListener() { + mBinding.btDel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - tv_hint.setText(""); - codeView.clearInputContent(); + mBinding.tvHint.setText(""); + mBinding.icv.clearInputContent(); } }); - bt_confirm.setOnClickListener(new View.OnClickListener() { + mBinding.btConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { checkPasswd(); } }); - bt0.setOnClickListener(view1 -> add(codeView, "0")); - bt1.setOnClickListener(view1 -> add(codeView, "1")); - bt2.setOnClickListener(view1 -> add(codeView, "2")); - bt3.setOnClickListener(view1 -> add(codeView, "3")); - bt4.setOnClickListener(view1 -> add(codeView, "4")); - bt5.setOnClickListener(view1 -> add(codeView, "5")); - bt6.setOnClickListener(view1 -> add(codeView, "6")); - bt7.setOnClickListener(view1 -> add(codeView, "7")); - bt8.setOnClickListener(view1 -> add(codeView, "8")); - bt9.setOnClickListener(view1 -> add(codeView, "9")); + mBinding.bt0.setOnClickListener(view1 -> add(mBinding.icv, "0")); + mBinding.bt1.setOnClickListener(view1 -> add(mBinding.icv, "1")); + mBinding.bt2.setOnClickListener(view1 -> add(mBinding.icv, "2")); + mBinding.bt3.setOnClickListener(view1 -> add(mBinding.icv, "3")); + mBinding.bt4.setOnClickListener(view1 -> add(mBinding.icv, "4")); + mBinding.bt5.setOnClickListener(view1 -> add(mBinding.icv, "5")); + mBinding.bt6.setOnClickListener(view1 -> add(mBinding.icv, "6")); + mBinding.bt7.setOnClickListener(view1 -> add(mBinding.icv, "7")); + mBinding.bt8.setOnClickListener(view1 -> add(mBinding.icv, "8")); + mBinding.bt9.setOnClickListener(view1 -> add(mBinding.icv, "9")); } private void checkPasswd() { - String content = codeView.getInputContent(); + String content = mBinding.icv.getInputContent(); if (TextUtils.isEmpty(content) || content.length() != 6) { return; } @@ -145,13 +109,13 @@ public class ExitActivity extends BaseMvpActivity { Utils.exitDesktop(this); } else { setEmpty(); - tv_hint.setText("密码错误"); + mBinding.tvHint.setText("密码错误"); } } else if (CommonConfig.DEFAULT_PASSWORD.equals(content)) { Utils.exitDesktop(this); } else { setEmpty(); - tv_hint.setText("密码错误"); + mBinding.tvHint.setText("密码错误"); } } @@ -159,8 +123,8 @@ public class ExitActivity extends BaseMvpActivity { Handler.getMain().postDelayed(new Runnable() { @Override public void run() { - codeView.clearInputContent(); - tv_hint.setText(""); + mBinding.icv.clearInputContent(); + mBinding.tvHint.setText(""); } }, 1000); } diff --git a/app/src/main/java/com/uiui/zyos/activity/NoticeActivity.java b/app/src/main/java/com/uiui/zyos/activity/NoticeActivity.java index 21b2b5d..2b67bd9 100644 --- a/app/src/main/java/com/uiui/zyos/activity/NoticeActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/NoticeActivity.java @@ -4,18 +4,13 @@ import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; -import android.os.Bundle; import android.os.PowerManager; import android.os.Vibrator; import android.text.TextUtils; import android.util.Log; import android.view.View; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.appcompat.app.AppCompatActivity; -import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.databinding.DataBindingUtil; import com.blankj.utilcode.util.FileUtils; import com.bumptech.glide.Glide; @@ -23,14 +18,15 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import com.uiui.zyos.R; import com.uiui.zyos.alarm.AlarmUtils; +import com.uiui.zyos.base.BaseDataBindingActivity; import com.uiui.zyos.bean.AlarmClockData; import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.databinding.ActivityNoticeBinding; import com.uiui.zyos.network.NetInterfaceManager; import com.uiui.zyos.utils.FileUtil; import com.uiui.zyos.utils.ScreenUtils; import com.uiui.zyos.utils.Utils; import com.uiui.zyos.utils.WakeUpUtils; -import com.uiui.zyos.view.JzvdStdAssert; import java.io.File; import java.io.FileInputStream; @@ -38,63 +34,58 @@ import java.io.IOException; import java.net.URI; import java.util.HashMap; -import butterknife.BindView; -import butterknife.ButterKnife; import cn.jzvd.JZDataSource; import cn.jzvd.Jzvd; import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; -public class NoticeActivity extends AppCompatActivity { - private String TAG = NoticeActivity.class.getSimpleName(); +public class NoticeActivity extends BaseDataBindingActivity { + private static final String TAG = "NoticeActivity"; - @BindView(R.id.tv_title) - TextView tv_title; - @BindView(R.id.bt_ok) - Button bt_ok; - @BindView(R.id.cl_voice) - ConstraintLayout cl_voice; - @BindView(R.id.cl_vp) - ConstraintLayout cl_vp; - @BindView(R.id.jz_video) - JzvdStdAssert jz_video; - @BindView(R.id.iv_dictation) - ImageView imageView; + private ActivityNoticeBinding mBinding; - private AlarmClockData alarmClockData; + private AlarmClockData mAlarmClockData; private int code; - private MediaPlayer mediaPlayer; - private PowerManager pm; - private PowerManager.WakeLock wakeLock; + private MediaPlayer mMediaPlayer; + private PowerManager mPowerManager; + private PowerManager.WakeLock mWakeLock; private AudioManager audioManager; - private Vibrator vibrator; + private Vibrator mVibrator; + @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_notice); - ButterKnife.bind(this); + protected void initDataBinding() { + mBinding = DataBindingUtil.setContentView(this, R.layout.activity_notice); + } + + @Override + protected void initView() { + + } + + @Override + protected void initData() { Intent intent = getIntent(); code = intent.getIntExtra("id", -1); - pm = (PowerManager) getSystemService(Context.POWER_SERVICE); - wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock"); - vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); + mWakeLock = mPowerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock"); + mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); if (code == -1) { finish(); } else { - wakeLock.acquire(60 * 1000L); + mWakeLock.acquire(60 * 1000L); long[] pattern = {1000, 5000, 1000, 5000}; - vibrator.vibrate(pattern, 0); + mVibrator.vibrate(pattern, 0); WakeUpUtils.wakeUpAndUnlockScreen(this); HashMap oldData = AlarmUtils.getInstance().getOldData(); - alarmClockData = oldData.get(code); - if (alarmClockData == null) { + mAlarmClockData = oldData.get(code); + if (mAlarmClockData == null) { finish(); } - Log.e(TAG, "onCreate: " + alarmClockData); - showData(alarmClockData); + Log.e(TAG, "onCreate: " + mAlarmClockData); + showData(mAlarmClockData); } } @@ -102,8 +93,8 @@ public class NoticeActivity extends AppCompatActivity { audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, AudioManager.FLAG_PLAY_SOUND); - tv_title.setText(alarmClockData.getTitle()); - bt_ok.setOnClickListener(new View.OnClickListener() { + mBinding.tvTitle.setText(alarmClockData.getTitle()); + mBinding.btOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HashMap oldData = AlarmUtils.getInstance().getOldData(); @@ -145,45 +136,45 @@ public class NoticeActivity extends AppCompatActivity { String filePath = alarmClockData.getFile(); if (!TextUtils.isEmpty(voiceUrl)) { - cl_voice.setVisibility(View.VISIBLE); + mBinding.clVoice.setVisibility(View.VISIBLE); String fileName = Utils.getFileNamefromURL(voiceUrl); File file = new File(Utils.getDownLoadPath(NoticeActivity.this) + fileName); String fileMD5 = FileUtils.getFileMD5ToString(file); // if (!md5.equals(fileMD5)) { // // TODO: 2021/12/16 // } else { - mediaPlayer = new MediaPlayer(); + mMediaPlayer = new MediaPlayer(); try { // 切歌之前先重置,释放掉之前的资源 - mediaPlayer.reset(); + mMediaPlayer.reset(); FileInputStream fis = new FileInputStream(file); - mediaPlayer.setDataSource(fis.getFD()); + mMediaPlayer.setDataSource(fis.getFD()); // 设置播放源 // mediaPlayer.setDataSource(file.getAbsolutePath()); // 开始播放前的准备工作,加载多媒体资源,获取相关信息 - mediaPlayer.prepare(); + mMediaPlayer.prepare(); // 开始播放 - mediaPlayer.start(); + mMediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); Log.e(TAG, "showData: " + e.getMessage()); } // } } else { - cl_voice.setVisibility(View.GONE); + mBinding.clVoice.setVisibility(View.GONE); } if (!TextUtils.isEmpty(filePath)) { - cl_vp.setVisibility(View.VISIBLE); + mBinding.clVp.setVisibility(View.VISIBLE); String fileType = FileUtil.getFileType(filePath); Log.e(TAG, "showData: " + fileType); if (FileUtil.isPictureFile(fileType)) { - jz_video.setVisibility(View.GONE); - imageView.setVisibility(View.VISIBLE); + mBinding.jzVideo.setVisibility(View.GONE); + mBinding.ivDictation.setVisibility(View.VISIBLE); RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F))); - Glide.with(NoticeActivity.this).load(filePath).apply(options).into(imageView); + Glide.with(NoticeActivity.this).load(filePath).apply(options).into(mBinding.ivDictation); } else if (FileUtil.isVideoFile(fileType)) { - jz_video.setVisibility(View.VISIBLE); - imageView.setVisibility(View.GONE); + mBinding.jzVideo.setVisibility(View.VISIBLE); + mBinding.ivDictation.setVisibility(View.GONE); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length()); String realPath = Utils.getDownLoadPath(NoticeActivity.this) + fileName; File file = new File(realPath); @@ -197,13 +188,13 @@ public class NoticeActivity extends AppCompatActivity { jzDataSource = new JZDataSource(uri.toString(), ""); } jzDataSource.looping = true; - jz_video.setUp(jzDataSource, Jzvd.SCREEN_NORMAL); - jz_video.startPreloading(); - jz_video.startVideoAfterPreloading(); - jz_video.startVideo(); + mBinding.jzVideo.setUp(jzDataSource, Jzvd.SCREEN_NORMAL); + mBinding.jzVideo.startPreloading(); + mBinding.jzVideo.startVideoAfterPreloading(); + mBinding.jzVideo.startVideo(); } } else { - cl_vp.setVisibility(View.GONE); + mBinding.clVp.setVisibility(View.GONE); } } @@ -211,12 +202,12 @@ public class NoticeActivity extends AppCompatActivity { @Override protected void onDestroy() { super.onDestroy(); - if (mediaPlayer != null) { - if (mediaPlayer.isPlaying()) { - mediaPlayer.stop(); + if (mMediaPlayer != null) { + if (mMediaPlayer.isPlaying()) { + mMediaPlayer.stop(); } - mediaPlayer.release(); - mediaPlayer = null; + mMediaPlayer.release(); + mMediaPlayer = null; } } diff --git a/app/src/main/java/com/uiui/zyos/activity/PasswordActivity.java b/app/src/main/java/com/uiui/zyos/activity/PasswordActivity.java index 7b7b48e..2a5c5b4 100644 --- a/app/src/main/java/com/uiui/zyos/activity/PasswordActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/PasswordActivity.java @@ -10,55 +10,20 @@ import android.util.Log; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; -import android.widget.LinearLayout; -import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; import com.tuo.customview.VerificationCodeView; import com.uiui.zyos.R; -import com.uiui.zyos.base.mvp.BaseMvpActivity; +import com.uiui.zyos.base.BaseDataBindingActivity; import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.databinding.ActivityPasswdBinding; -import butterknife.BindView; -import butterknife.ButterKnife; +public class PasswordActivity extends BaseDataBindingActivity { + private static final String TAG = "PasswordActivity"; -public class PasswordActivity extends BaseMvpActivity { - private static final String TAG = PasswordActivity.class.getSimpleName(); - - @BindView(R.id.bt_0) - TextView bt0; - @BindView(R.id.bt_1) - TextView bt1; - @BindView(R.id.bt_2) - TextView bt2; - @BindView(R.id.bt_3) - TextView bt3; - @BindView(R.id.bt_4) - TextView bt4; - @BindView(R.id.bt_5) - TextView bt5; - @BindView(R.id.bt_6) - TextView bt6; - @BindView(R.id.bt_7) - TextView bt7; - @BindView(R.id.bt_8) - TextView bt8; - @BindView(R.id.bt_9) - TextView bt9; - @BindView(R.id.bt_del) - TextView bt_del; - @BindView(R.id.bt_confirm) - TextView bt_confirm; - - @BindView(R.id.textView) - TextView textView; - @BindView(R.id.tv_hint) - TextView tv_hint; - @BindView(R.id.ll_keyboard) - LinearLayout ll_keyboard; - @BindView(R.id.icv) - VerificationCodeView codeView; + private ActivityPasswdBinding mBinding; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -67,22 +32,21 @@ public class PasswordActivity extends BaseMvpActivity { } @Override - public int getLayoutId() { - return R.layout.activity_passwd; + protected void initDataBinding() { + mBinding = DataBindingUtil.setContentView(this, R.layout.activity_passwd); } @Override public void initView() { - ButterKnife.bind(this); InputMethodManager imm = (InputMethodManager) PasswordActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(codeView.getWindowToken(), 0); - codeView.getEditText().setOnClickListener(new View.OnClickListener() { + imm.hideSoftInputFromWindow(mBinding.icv.getWindowToken(), 0); + mBinding.icv.getEditText().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - ll_keyboard.setVisibility(View.VISIBLE); + mBinding.llKeyboard.setVisibility(View.VISIBLE); } }); - codeView.setInputCompleteListener(new VerificationCodeView.InputCompleteListener() { + mBinding.icv.setInputCompleteListener(new VerificationCodeView.InputCompleteListener() { @Override public void inputComplete() { checkPasswd(); @@ -94,34 +58,34 @@ public class PasswordActivity extends BaseMvpActivity { } }); - bt_del.setOnClickListener(new View.OnClickListener() { + mBinding.btDel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - tv_hint.setText(""); - codeView.clearInputContent(); + mBinding.tvHint.setText(""); + mBinding.icv.clearInputContent(); } }); - bt_confirm.setOnClickListener(new View.OnClickListener() { + mBinding.btConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { checkPasswd(); } }); - bt0.setOnClickListener(view1 -> add(codeView, "0")); - bt1.setOnClickListener(view1 -> add(codeView, "1")); - bt2.setOnClickListener(view1 -> add(codeView, "2")); - bt3.setOnClickListener(view1 -> add(codeView, "3")); - bt4.setOnClickListener(view1 -> add(codeView, "4")); - bt5.setOnClickListener(view1 -> add(codeView, "5")); - bt6.setOnClickListener(view1 -> add(codeView, "6")); - bt7.setOnClickListener(view1 -> add(codeView, "7")); - bt8.setOnClickListener(view1 -> add(codeView, "8")); - bt9.setOnClickListener(view1 -> add(codeView, "9")); + mBinding.bt0.setOnClickListener(view1 -> add(mBinding.icv, "0")); + mBinding.bt1.setOnClickListener(view1 -> add(mBinding.icv, "1")); + mBinding.bt2.setOnClickListener(view1 -> add(mBinding.icv, "2")); + mBinding.bt3.setOnClickListener(view1 -> add(mBinding.icv, "3")); + mBinding.bt4.setOnClickListener(view1 -> add(mBinding.icv, "4")); + mBinding.bt5.setOnClickListener(view1 -> add(mBinding.icv, "5")); + mBinding.bt6.setOnClickListener(view1 -> add(mBinding.icv, "6")); + mBinding.bt7.setOnClickListener(view1 -> add(mBinding.icv, "7")); + mBinding.bt8.setOnClickListener(view1 -> add(mBinding.icv, "8")); + mBinding.bt9.setOnClickListener(view1 -> add(mBinding.icv, "9")); } private void checkPasswd() { - String content = codeView.getInputContent(); + String content = mBinding.icv.getInputContent(); if (TextUtils.isEmpty(content) || content.length() != 6) { return; } @@ -133,14 +97,14 @@ public class PasswordActivity extends BaseMvpActivity { finish(); } else { setEmpty(); - tv_hint.setText("密码错误"); + mBinding.tvHint.setText("密码错误"); } } else if (CommonConfig.DEFAULT_PASSWORD.equals(content)) { startActivity(new Intent(PasswordActivity.this, AddIconActivity.class)); finish(); } else { setEmpty(); - tv_hint.setText("密码错误"); + mBinding.tvHint.setText("密码错误"); } } @@ -148,8 +112,8 @@ public class PasswordActivity extends BaseMvpActivity { Handler.getMain().postDelayed(new Runnable() { @Override public void run() { - codeView.clearInputContent(); - tv_hint.setText(""); + mBinding.icv.clearInputContent(); + mBinding.tvHint.setText(""); } }, 1000); } diff --git a/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java b/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java index e50756e..be64930 100644 --- a/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java @@ -17,10 +17,8 @@ import android.view.KeyEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; -import android.widget.ImageView; import androidx.annotation.NonNull; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.viewpager.widget.ViewPager; @@ -33,8 +31,9 @@ import com.tencent.mmkv.MMKV; import com.uiui.zyos.BuildConfig; import com.uiui.zyos.R; import com.uiui.zyos.activity.ExitActivity; -import com.uiui.zyos.base.mvp.BaseMvpActivity; +import com.uiui.zyos.base.mvvm.BaseMvvmActivity; import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.databinding.ActivityMainBinding; import com.uiui.zyos.dialog.PrivacyPolicyDialog; import com.uiui.zyos.fragment.subject.SubjectFragment; import com.uiui.zyos.fragment.user.UserFragment; @@ -47,79 +46,43 @@ import com.uiui.zyos.utils.Utils; import com.uiui.zyos.view.ScaleCircleNavigator; import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; -import net.lucode.hackware.magicindicator.MagicIndicator; - import java.util.ArrayList; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - -public class MainActivity extends BaseMvpActivity implements MainContact.MainView, RemoteManager.ConnectedListener { - private static final String TAG = MainActivity.class.getSimpleName(); - - - @BindView(R.id.viewPager) - ViewPager mViewPager; - @BindView(R.id.magicIndicator) - MagicIndicator mMagicIndicator; - - @BindView(R.id.cl_0) - ConstraintLayout cl_0; - @BindView(R.id.cl_1) - ConstraintLayout cl_1; - @BindView(R.id.cl_2) - ConstraintLayout cl_2; - @BindView(R.id.cl_3) - ConstraintLayout cl_3; - @BindView(R.id.cl_4) - ConstraintLayout cl_4; - @BindView(R.id.cl_5) - ConstraintLayout cl_5; - @BindView(R.id.cl_6) - ConstraintLayout cl_6; - @BindView(R.id.cl_7) - ConstraintLayout cl_7; - @BindView(R.id.cl_8) - ConstraintLayout cl_8; - @BindView(R.id.cl_9) - ConstraintLayout cl_9; - - @BindView(R.id.iv_robot) - ImageView iv_robot; +public class MainActivity extends BaseMvvmActivity implements RemoteManager.ConnectedListener { + private static final String TAG = "MainActivity"; private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); - private MainAPresenter mPresenter; -// private HomeWatcher mHomeWatcher; - private ScaleCircleNavigator scaleCircleNavigator; private FragmentManager mFragmentManager; private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter; private List mFragments; + private UserFragment mUserFragment; private SubjectFragment mSubjectFragment; + private int defaultCurrent = 1; + @Override + public void onRemoteConnected() { + Log.e(TAG, "onConnected: "); + setDefaultDesktop(); + } + @Override public int getLayoutId() { return R.layout.activity_main; } - private void hideSystemUI() { - // Enables regular immersive mode. - // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE. - // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY - View decorView = getWindow().getDecorView(); - decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE - // Set the content to appear under the system bars so that the - // content doesn't resize when the system bars hide and show. - | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION -// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN - // Hide the nav bar and status bar - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); + @Override + protected void initDataBinding() { + mViewModel.setCtx(this); + mViewModel.setVDBinding(mViewDataBinding); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewDataBinding.setClick(new BtnClick()); } @Override @@ -133,11 +96,8 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie if (Build.VERSION.SDK_INT >= 33) { hideSystemUI(); } - ButterKnife.bind(this); + // toggleNotificationListenerService(this); - mPresenter = new MainAPresenter(this); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); RemoteManager.setListener(this); Utils.getAndroiodScreenProperty(this); @@ -154,8 +114,8 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie } mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); - mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setCurrentItem(defaultCurrent); + mViewDataBinding.viewPager.setAdapter(mBaseFragmentPagerAdapter); + mViewDataBinding.viewPager.setCurrentItem(defaultCurrent); scaleCircleNavigator = new ScaleCircleNavigator(this); scaleCircleNavigator.setCircleCount(1 + mSubjectFragment.getFragmentSize()); @@ -168,34 +128,34 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie } }); - mMagicIndicator.setNavigator(scaleCircleNavigator); + mViewDataBinding.magicIndicator.setNavigator(scaleCircleNavigator); // ViewPagerHelper.bind(mMagicIndicator, mViewPager); mSubjectFragment.setPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // Log.e("mSubjectFragment", "onPageScrolled: position = " + position + " positionOffset = " + positionOffset + " positionOffsetPixels = " + positionOffsetPixels); - mMagicIndicator.onPageScrolled(position + 1, positionOffset, positionOffsetPixels); + mViewDataBinding.magicIndicator.onPageScrolled(position + 1, positionOffset, positionOffsetPixels); } @Override public void onPageSelected(int position) { // Log.e("mSubjectFragment", "onPageSelected: position = " + position); - mMagicIndicator.onPageSelected(position + 1); + mViewDataBinding.magicIndicator.onPageSelected(position + 1); } @Override public void onPageScrollStateChanged(int state) { // Log.e("mSubjectFragment", "onPageSelected: state = " + state); - mMagicIndicator.onPageScrollStateChanged(state); + mViewDataBinding.magicIndicator.onPageScrollStateChanged(state); } }); - mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + mViewDataBinding.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // Log.e("mViewPager", "onPageScrolled: position = " + position + " positionOffset = " + positionOffset + " positionOffsetPixels = " + positionOffsetPixels); if (!(position == 1 && positionOffsetPixels == 0)) { if (position <= 1) { - mMagicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels); + mViewDataBinding.magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels); } } } @@ -204,115 +164,21 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie public void onPageSelected(int position) { // Log.e("mViewPager", "onPageSelected: position = " + position); if (position <= 1) { - mMagicIndicator.onPageSelected(position); + mViewDataBinding.magicIndicator.onPageSelected(position); } } @Override public void onPageScrollStateChanged(int state) { // Log.e("mViewPager", "onPageSelected: state = " + state); - mMagicIndicator.onPageScrollStateChanged(state); + mViewDataBinding.magicIndicator.onPageScrollStateChanged(state); } }); if (mFragments.size() > 1) { - mViewPager.setCurrentItem(defaultCurrent); - mMagicIndicator.onPageSelected(defaultCurrent); + mViewDataBinding.viewPager.setCurrentItem(defaultCurrent); + mViewDataBinding.magicIndicator.onPageSelected(defaultCurrent); } - iv_robot.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_VOICE_PACKAGE_NAME, JxwPackageConfig.JXW_VOICE_CLASS_NAME); - } - }); - cl_0.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { -// OpenApkUtils.getInstance().openApp("com.uiui.zyappstore", "com.uiui.zyappstore.activity.MainActivity"); - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_EXAMSYSTEM_NAME, JxwPackageConfig.JXW_EXAMSYSTEM_CLASS); - } - }); - cl_1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - OpenApkUtils.getInstance().openApp("com.uiui.zybrowser", "com.uiui.zybrowser.activity.main.MainActivity"); - } - }); - cl_2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { -// OpenApkUtils.getInstance().openApp("com.android.documentsui"); - OpenApkUtils.getInstance().openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); - } - }); - cl_3.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - OpenApkUtils.getInstance().openApp("com.mediatek.camera"); - } - }); - cl_4.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { -// Intent intent = new Intent(Settings.ACTION_SETTINGS); -// startActivity(intent); -// int activated = Settings.Secure.getInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0); -// if (RemoteManager.getInstance().putSecureInt(Settings.Secure.NIGHT_DISPLAY_ACTIVATED, activated == 0 ? 1 : 0)) { -// Log.e(TAG, "onClick: putSecureInt successfully"); -// } else { -// Log.e(TAG, "onClick: putSecureInt failed"); -// } - ComponentName cn = new ComponentName(RemoteManager.SN_PACKAGE_NAME, "com.uiui.zy.activity.EyeProtectionActivity"); - Intent intent = new Intent(); - intent.setComponent(cn); - try { - startActivity(intent); - } catch (Exception e) { - Log.e(TAG, "onClick: " + e.getMessage()); - Toaster.show("应用未安装"); - } - } - }); - cl_5.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { -// OpenApkUtils.getInstance().openApp("com.android.gallery3d"); - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_YOUER_PACKAGE_NAME, JxwPackageConfig.JXW_YOUER_CLASS_NAME); - } - }); - cl_6.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - OpenApkUtils.getInstance().openQuality(); - } - }); - cl_7.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_DICTIONARY_PACKAGE_NAME, JxwPackageConfig.JXW_DICTIONARY_CLASS_NAME); - } - }); - cl_8.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); - } - }); - cl_9.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent("Receiver_Refresh_Password_Action"); - intent.setPackage("com.uiui.zy"); - sendBroadcast(intent); - - int is_activation = Settings.Global.getInt(getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); - if (is_activation == 1) { - startActivity(new Intent(MainActivity.this, ExitActivity.class)); - } else { - Utils.exitDesktop(MainActivity.this); - } - } - }); // ComponentName cn = new ComponentName("com.jxw.mskt.video", "com.jxw.mskt.video.VideoDownload"); // Intent intent = new Intent(); // intent.setComponent(cn); @@ -335,10 +201,18 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie registmUpdateAddressReceiver(); } - @Override - public void onConnected() { - Log.e(TAG, "onConnected: "); - setDefaultDesktop(); + private void hideSystemUI() { + // Enables regular immersive mode. + // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE. + // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY + View decorView = getWindow().getDecorView(); + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE + // Set the content to appear under the system bars so that the + // content doesn't resize when the system bars hide and show. + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + // Hide the nav bar and status bar + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); } private void setDefaultDesktop() { @@ -365,11 +239,11 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie super.onWindowFocusChanged(hasFocus); Log.e(TAG, "onWindowFocusChanged: hasFocus = " + hasFocus); if (hasFocus) {//表示渲染结束 - if (mViewPager != null) { - mViewPager.postDelayed(new Runnable() { + if (mViewDataBinding.viewPager != null) { + mViewDataBinding.viewPager.postDelayed(new Runnable() { @Override public void run() { - mViewPager.setOffscreenPageLimit(4); + mViewDataBinding.viewPager.setOffscreenPageLimit(4); } }, 1987); } @@ -435,8 +309,8 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie protected void onRestart() { super.onRestart(); Log.e(TAG, "onRestart: "); - mPresenter.sendAPPUsage(); - mPresenter.sendRunningInfo(); + mViewModel.sendAPPUsage(); + mViewModel.sendRunningInfo(); } @Override @@ -454,7 +328,6 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie @Override protected void onDestroy() { super.onDestroy(); - mPresenter.detachView(); // if (mHomeWatcher != null) { // mHomeWatcher.stopWatch();// 在销毁时停止监听,不然会报错的。 // } @@ -713,13 +586,81 @@ public class MainActivity extends BaseMvpActivity implements MainContact.MainVie } } - @Override - public void sendAPPUsageFinish() { + public class BtnClick { + public void openRobot(View view) { + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_VOICE_PACKAGE_NAME, JxwPackageConfig.JXW_VOICE_CLASS_NAME); + } - } + public void open0(View view) { +// OpenApkUtils.getInstance().openApp("com.uiui.zyappstore", "com.uiui.zyappstore.activity.MainActivity"); + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_EXAMSYSTEM_NAME, JxwPackageConfig.JXW_EXAMSYSTEM_CLASS); + } - @Override - public void sendRunningInfoFinish() { + public void open1(View view) { + OpenApkUtils.getInstance().openApp("com.uiui.zybrowser", "com.uiui.zybrowser.activity.main.MainActivity"); + } + public void open2(View view) { +// OpenApkUtils.getInstance().openApp("com.android.documentsui"); + OpenApkUtils.getInstance().openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); + } + + public void open3(View view) { + OpenApkUtils.getInstance().openApp("com.mediatek.camera"); + } + + public void open4(View view) { +// Intent intent = new Intent(Settings.ACTION_SETTINGS); +// startActivity(intent); +// int activated = Settings.Secure.getInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0); +// if (RemoteManager.getInstance().putSecureInt(Settings.Secure.NIGHT_DISPLAY_ACTIVATED, activated == 0 ? 1 : 0)) { +// Log.e(TAG, "onClick: putSecureInt successfully"); +// } else { +// Log.e(TAG, "onClick: putSecureInt failed"); +// } + ComponentName cn = new ComponentName(RemoteManager.SN_PACKAGE_NAME, "com.uiui.zy.activity.EyeProtectionActivity"); + Intent intent = new Intent(); + intent.setComponent(cn); + try { + startActivity(intent); + } catch (Exception e) { + Log.e(TAG, "onClick: " + e.getMessage()); + Toaster.show("应用未安装"); + } + } + + public void open5(View view) { +// OpenApkUtils.getInstance().openApp("com.android.gallery3d"); + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_YOUER_PACKAGE_NAME, JxwPackageConfig.JXW_YOUER_CLASS_NAME); + } + + public void open6(View view) { + OpenApkUtils.getInstance().openQuality(); + } + + public void open7(View view) { + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_DICTIONARY_PACKAGE_NAME, JxwPackageConfig.JXW_DICTIONARY_CLASS_NAME); + } + + public void open8(View view) { + OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); + } + + public void open9(View view) { + Intent intent = new Intent("Receiver_Refresh_Password_Action"); + intent.setPackage("com.uiui.zy"); + sendBroadcast(intent); + + int is_activation = Settings.Global.getInt(getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); + if (is_activation == 1) { + startActivity(new Intent(MainActivity.this, ExitActivity.class)); + } else { + Utils.exitDesktop(MainActivity.this); + } + } + + public void openAppStore(View view) { + ApkUtils.openPackage(MainActivity.this, "com.uiui.appstore"); + } } } diff --git a/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java b/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java deleted file mode 100644 index 932f39b..0000000 --- a/app/src/main/java/com/uiui/zyos/activity/main/MainContact.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.uiui.zyos.activity.main; - -import com.uiui.zyos.base.mvp.BasePresenter; -import com.uiui.zyos.base.mvp.BaseView; - -public class MainContact { - public interface Presenter extends BasePresenter { - /*上传正在运行的APP*/ - void sendAPPUsage(); - /*上传后台运行的APP*/ - void sendRunningInfo(); - } - - public interface MainView extends BaseView { - void sendAPPUsageFinish(); - void sendRunningInfoFinish(); - } -} diff --git a/app/src/main/java/com/uiui/zyos/activity/main/MainAPresenter.java b/app/src/main/java/com/uiui/zyos/activity/main/MainViewModel.java similarity index 70% rename from app/src/main/java/com/uiui/zyos/activity/main/MainAPresenter.java rename to app/src/main/java/com/uiui/zyos/activity/main/MainViewModel.java index 7dda83e..4c6906e 100644 --- a/app/src/main/java/com/uiui/zyos/activity/main/MainAPresenter.java +++ b/app/src/main/java/com/uiui/zyos/activity/main/MainViewModel.java @@ -1,6 +1,5 @@ package com.uiui.zyos.activity.main; -import android.content.Context; import android.text.TextUtils; import android.util.Log; @@ -8,7 +7,9 @@ import com.google.gson.JsonObject; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.zyos.BuildConfig; +import com.uiui.zyos.base.mvvm.BaseViewModel; import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.databinding.ActivityMainBinding; import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.network.NetInterfaceManager; import com.uiui.zyos.utils.ActivationUtil; @@ -19,42 +20,23 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; -import io.reactivex.rxjava3.subjects.BehaviorSubject; -public class MainAPresenter implements MainContact.Presenter { - private static final String TAG = MainAPresenter.class.getSimpleName(); +public class MainViewModel extends BaseViewModel { - private Context mContext; - private MainContact.MainView mView; + private static final String TAG = "MainViewModel"; - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - MainAPresenter(Context context) { - this.mContext = context; - Log.e(TAG, "MainAPresenter: " + context.getClass()); + @Override + public ActivityMainBinding getVDBinding() { + return binding; } @Override - public void attachView(MainContact.MainView view) { - this.mView = view; + public void onDestroy() { + } - @Override - public void detachView() { - this.mView = null; - } - - @Override public void sendAPPUsage() { - boolean activation = ActivationUtil.isActivation(mContext); + boolean activation = ActivationUtil.isActivation(getCtx()); if (!activation) { return; } @@ -62,18 +44,18 @@ public class MainAPresenter implements MainContact.Presenter { String packagename = AppUsedTimeUtils.getInstance().getAppPackageName(); Log.e(TAG, "onRestart packagename == " + packagename); if (!TextUtils.isEmpty(packagename)) { - Log.e(TAG, "onRestart: " + ApkUtils.getAppNameByPackage(mContext, packagename)); + Log.e(TAG, "onRestart: " + ApkUtils.getAppNameByPackage(getCtx(), packagename)); Log.e(TAG, "onRestart: " + packagename); NetInterfaceManager.getInstance() .getAppUsageRecordControl() .sendappUsageRecord(RemoteManager.getInstance().getSerial(), - ApkUtils.getAppNameByPackage(mContext, packagename), + ApkUtils.getAppNameByPackage(getCtx(), packagename), packagename, AppUsedTimeUtils.getInstance().getStartTime() / 1000, AppUsedTimeUtils.getInstance().getEndTime() / 1000) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -94,18 +76,15 @@ public class MainAPresenter implements MainContact.Presenter { @Override public void onComplete() { Log.e("sendAPPUsage", "onComplete: "); - mView.sendAPPUsageFinish(); } }); } else { - Log.e("onRestart", "app = null" + packagename); - mView.sendAPPUsageFinish(); + Log.e("sendAPPUsage", "app = null" + packagename); } } - @Override public void sendRunningInfo() { - boolean activation = ActivationUtil.isActivation(mContext); + boolean activation = ActivationUtil.isActivation(getCtx()); if (!activation) { return; } @@ -114,18 +93,15 @@ public class MainAPresenter implements MainContact.Presenter { long time = AppUsedTimeUtils.getInstance().getStartTime(); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("app_package", BuildConfig.APPLICATION_ID); - jsonObject.addProperty("version_name", ApkUtils.getAPPVersionName(mContext, BuildConfig.APPLICATION_ID)); + jsonObject.addProperty("version_name", ApkUtils.getAPPVersionName(getCtx(), BuildConfig.APPLICATION_ID)); jsonObject.addProperty("start_time", time / 1000); String jsonString = jsonObject.toString(); Log.e(TAG, "sendRunningInfo: " + jsonString); AppUsedTimeUtils.getInstance().sendRunningApp(new AppUsedTimeUtils.RunningAppCallback() { @Override public void onComplete() { - if (mView != null) { - mView.sendRunningInfoFinish(); - } + Log.e("sendRunningInfo", "onComplete: " ); } }); } - } diff --git a/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java b/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java index bd7cc5d..35d938e 100644 --- a/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/more/MoreAppActivity.java @@ -9,56 +9,40 @@ import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.TextView; +import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.uiui.zyos.R; import com.uiui.zyos.adapter.AppAdapter; -import com.uiui.zyos.base.mvp.BaseMvpActivity; +import com.uiui.zyos.base.mvvm.BaseMvvmActivity; import com.uiui.zyos.bean.DesktopIcon; +import com.uiui.zyos.databinding.ActivityMoreappBinding; import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; +import java.util.ArrayList; import java.util.HashMap; -import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; +public class MoreAppActivity extends BaseMvvmActivity { -public class MoreAppActivity extends BaseMvpActivity implements MoreContact.MoreView { - - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.recyclerView) - RecyclerView recyclerView; - @BindView(R.id.tv_appsize) - TextView tv_appsize; - - private MorePresenter mPresenter; private AppAdapter mAppAdapter; - @Override public int getLayoutId() { return R.layout.activity_moreapp; } @Override - public void initView() { - ButterKnife.bind(this); - mPresenter = new MorePresenter(this); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); + protected void initDataBinding() { + mViewModel.setCtx(this); + mViewModel.setVDBinding(mViewDataBinding); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewDataBinding.setClick(new BtnClick()); + } - iv_back.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - recyclerView.setLayoutManager(new GridLayoutManager(this, 6)); + @Override + public void initView() { + mViewDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 6)); HashMap stringIntegerHashMap = new HashMap<>(); WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); @@ -68,21 +52,28 @@ public class MoreAppActivity extends BaseMvpActivity implements MoreContact.More stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 - recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mViewDataBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); mAppAdapter = new AppAdapter(); - recyclerView.setAdapter(mAppAdapter); + mViewDataBinding.recyclerView.setAdapter(mAppAdapter); + registerAppChangedReceiver(); } @Override public void initData() { - registerAppChangedReceiver(); - mPresenter.getInstalledApp(); + mViewModel.mDesktopIconListData.observe(this, new Observer>() { + @Override + public void onChanged(ArrayList desktopIcons) { + mAppAdapter.setDesktopIcons(desktopIcons); + mViewDataBinding.tvAppsize.setText(String.format(getString(R.string.app_size), desktopIcons.size() - 1)); + } + }); + mViewModel.getInstalledApp(); } @Override protected void onResume() { super.onResume(); - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } @Override @@ -93,12 +84,6 @@ public class MoreAppActivity extends BaseMvpActivity implements MoreContact.More } } - @Override - public void setDesktopIcons(List desktopIcons) { - mAppAdapter.setDesktopIcons(desktopIcons); - tv_appsize.setText(String.format(getString(R.string.app_size), desktopIcons.size() - 1)); - } - private AppChangedReceiver mAppChangedReceiver; private void registerAppChangedReceiver() { @@ -124,7 +109,13 @@ public class MoreAppActivity extends BaseMvpActivity implements MoreContact.More if (TextUtils.isEmpty(action)) { return; } - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); + } + } + + public class BtnClick { + public void exit(View view) { + finish(); } } } diff --git a/app/src/main/java/com/uiui/zyos/activity/more/MoreAppViewModel.java b/app/src/main/java/com/uiui/zyos/activity/more/MoreAppViewModel.java new file mode 100644 index 0000000..f186726 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/activity/more/MoreAppViewModel.java @@ -0,0 +1,37 @@ +package com.uiui.zyos.activity.more; + +import androidx.lifecycle.MutableLiveData; + +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.zyos.R; +import com.uiui.zyos.base.mvvm.BaseViewModel; +import com.uiui.zyos.bean.DesktopIcon; +import com.uiui.zyos.databinding.ActivityMoreappBinding; +import com.uiui.zyos.manager.AppManager; + +import java.util.ArrayList; + +public class MoreAppViewModel extends BaseViewModel { + + @Override + public ActivityMoreappBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } + + public MutableLiveData> mDesktopIconListData = new MutableLiveData<>(); + + public void getInstalledApp() { + ArrayList desktopIcons = AppManager.getInstance().getFilterAppList(); + DesktopIcon desktopIcon = new DesktopIcon(); + desktopIcon.setLable("添加应用"); + desktopIcon.setPackageName("com.zyos.add"); + desktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add)); + desktopIcons.add(desktopIcons.size(), desktopIcon); + mDesktopIconListData.setValue(desktopIcons); + } +} diff --git a/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java b/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java deleted file mode 100644 index fd119d2..0000000 --- a/app/src/main/java/com/uiui/zyos/activity/more/MoreContact.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.uiui.zyos.activity.more; - -import com.uiui.zyos.base.mvp.BasePresenter; -import com.uiui.zyos.base.mvp.BaseView; -import com.uiui.zyos.bean.DesktopIcon; - -import java.util.List; - -public class MoreContact { - public interface Presenter extends BasePresenter { - void getInstalledApp(); - } - - public interface MoreView extends BaseView { - void setDesktopIcons(List desktopIcons); - } -} diff --git a/app/src/main/java/com/uiui/zyos/activity/more/MorePresenter.java b/app/src/main/java/com/uiui/zyos/activity/more/MorePresenter.java deleted file mode 100644 index 40f5e5b..0000000 --- a/app/src/main/java/com/uiui/zyos/activity/more/MorePresenter.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.uiui.zyos.activity.more; - -import android.content.Context; -import android.util.Log; - -import androidx.annotation.NonNull; - -import com.trello.rxlifecycle4.android.ActivityEvent; -import com.uiui.zyos.R; -import com.uiui.zyos.bean.DesktopIcon; -import com.uiui.zyos.manager.AppManager; - -import java.util.ArrayList; - -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -public class MorePresenter implements MoreContact.Presenter { - private static final String TAG = MorePresenter.class.getSimpleName(); - - - private Context mContext; - private MoreContact.MoreView mView; - - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - MorePresenter(Context context) { - this.mContext = context; - Log.e(TAG, "MainAPresenter: " + context.getClass()); - } - - @Override - public void attachView(@NonNull MoreContact.MoreView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - } - - @Override - public void getInstalledApp() { - ArrayList desktopIcons = AppManager.getInstance().getFilterAppList(); - DesktopIcon desktopIcon = new DesktopIcon(); - desktopIcon.setLable("添加应用"); - desktopIcon.setPackageName("com.zyos.add"); - desktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_add)); - desktopIcons.add(desktopIcons.size(), desktopIcon); - mView.setDesktopIcons(desktopIcons); - } -} diff --git a/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java index 5d3dc4b..82e7148 100644 --- a/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java +++ b/app/src/main/java/com/uiui/zyos/adapter/AddAppAdapter.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Set; public class AddAppAdapter extends RecyclerView.Adapter { - private static final String TAG = AddAppAdapter.class.getSimpleName(); + private static final String TAG = "AddAppAdapter"; private Context mContext; diff --git a/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java index 3cf5b6c..92e6627 100644 --- a/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java +++ b/app/src/main/java/com/uiui/zyos/adapter/AppAdapter.java @@ -34,7 +34,7 @@ import java.util.ArrayList; import java.util.List; public class AppAdapter extends RecyclerView.Adapter { - private static final String TAG = AppAdapter.class.getSimpleName(); + private static final String TAG = "AppAdapter"; private Context mContext; diff --git a/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java new file mode 100644 index 0000000..5aaf472 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java @@ -0,0 +1,139 @@ +package com.uiui.zyos.adapter; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.provider.Settings; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.RecyclerView; + +import com.hjq.toast.Toaster; +import com.uiui.zyos.R; +import com.uiui.zyos.activity.ManualActivity; +import com.uiui.zyos.activity.PasswordActivity; +import com.uiui.zyos.activity.ServiceActivity; +import com.uiui.zyos.bean.DesktopIcon; +import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.manager.AppManager; +import com.uiui.zyos.utils.ApkUtils; +import com.uiui.zyos.utils.BitmapUtils; +import com.uiui.zyos.utils.IconUtils; +import com.uiui.zyos.utils.OpenApkUtils; + +import java.util.List; + +public class FileAdapter extends RecyclerView.Adapter { + private static final String TAG = "FileAdapter"; + + private Context mContext; + + private List desktopIcons; + + @NonNull + @Override + public AppHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new AppHolder(LayoutInflater.from(mContext).inflate(R.layout.item_file, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull AppHolder holder, int position) { + DesktopIcon desktopIcon = desktopIcons.get(position); + String lable = desktopIcon.getLable(); + holder.tv_appname.setText(lable); + holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); + String pkg = desktopIcon.getPackageName(); + Log.e(TAG, "getView: " + pkg); + int i = IconUtils.appClassNameList.indexOf(pkg); + if (i != -1) { + String val = IconUtils.appIconList.get(i); + int resID = mContext.getResources().getIdentifier(val, "drawable", "com.uiui.zyos"); + if (resID == 0) { + Log.e(TAG, "getView: not found src : " + pkg); + holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon())); + } else { + holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID)); + } + } else { + switch (pkg) { + case AppManager.ADD_NAME: + case AppManager.UPDATE_NAME: + case AppManager.MANUAL_NAME: + case AppManager.SERVICE_NAME: + holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); + break; + default: + holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon())); + break; + } + } + holder.root.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + switch (pkg) { + case AppManager.ADD_NAME: + mContext.startActivity(new Intent(mContext, PasswordActivity.class)); + break; + case AppManager.UPDATE_NAME: + Intent intent = new Intent(); + ComponentName componentName = new ComponentName("com.uiui.zy", "com.uiui.zy.activity.update.UpdateActivity"); + intent.setComponent(componentName); + mContext.startActivity(intent); + break; + case AppManager.MANUAL_NAME: + mContext.startActivity(new Intent(mContext, ManualActivity.class)); + break; + case AppManager.SERVICE_NAME: + mContext.startActivity(new Intent(mContext, ServiceActivity.class)); + break; + default: + int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1); + if (settingOtherAppInstaller == 0 + && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName() + )) { + Toaster.show("已禁止应用打开"); + } else { + OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); + } + break; + } + + } + }); + } + + @Override + public int getItemCount() { + return desktopIcons == null ? 0 : desktopIcons.size(); + } + + public List getDesktopIcons() { + return desktopIcons; + } + + public void setDesktopIcons(List desktopIcons) { + this.desktopIcons = desktopIcons; + notifyDataSetChanged(); + } + + class AppHolder extends RecyclerView.ViewHolder { + ConstraintLayout root; + TextView tv_appname; + ImageView iv_icon; + + public AppHolder(@NonNull View itemView) { + super(itemView); + root = itemView.findViewById(R.id.root); + tv_appname = itemView.findViewById(R.id.tv_appname); + iv_icon = itemView.findViewById(R.id.iv_icon); + } + } +} diff --git a/app/src/main/java/com/uiui/zyos/alarm/AlarmUtils.java b/app/src/main/java/com/uiui/zyos/alarm/AlarmUtils.java index 2507227..ca6ffbe 100644 --- a/app/src/main/java/com/uiui/zyos/alarm/AlarmUtils.java +++ b/app/src/main/java/com/uiui/zyos/alarm/AlarmUtils.java @@ -35,9 +35,10 @@ import java.util.Map; import java.util.TimeZone; public class AlarmUtils { + private static final String TAG = "AlarmUtils"; + @SuppressLint("StaticFieldLeak") private static AlarmUtils sInstance; - private static String TAG = AlarmUtils.class.getSimpleName(); private Context mContext; private AlarmManager alarmManager; private SQLiteDatabase db; diff --git a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java index 161e1bf..ba66cb3 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java @@ -28,7 +28,7 @@ import com.uiui.zyos.utils.OpenApkUtils; import com.uiui.zyos.utils.SystemUtils; public class BaseApplication extends Application { - private static final String TAG = BaseApplication.class.getSimpleName(); + private static final String TAG = "BaseApplication"; @Override public void onCreate() { @@ -62,7 +62,7 @@ public class BaseApplication extends Application { RemoteManager.init(this); RemoteManager.setListener(new RemoteManager.ConnectedListener() { @Override - public void onConnected() { + public void onRemoteConnected() { CrashReport.setDeviceId(BaseApplication.this, RemoteManager.getInstance().getSerial()); RemoteManager.getInstance().aliyunPushInit(); } diff --git a/app/src/main/java/com/uiui/zyos/base/BaseDataBindingFragment.java b/app/src/main/java/com/uiui/zyos/base/BaseDataBindingFragment.java new file mode 100644 index 0000000..cbc3f9d --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/BaseDataBindingFragment.java @@ -0,0 +1,257 @@ +package com.uiui.zyos.base; + +import android.app.Activity; +import android.content.Context; +import android.content.res.Configuration; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ViewDataBinding; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +import java.lang.ref.WeakReference; +import java.lang.reflect.ParameterizedType; + +/** + * @author: lml + * @date: 2021/12/15 + */ +public abstract class BaseDataBindingFragment extends BaseFragment { + protected String mTag = this.getClass().getSimpleName(); + /** + * 是否顯示了 + */ + protected boolean mIsVisible; + /** + * 是否準備好了-Created + */ + protected boolean mHasPrepare; + protected VDB mViewDataBinding; + + protected Bundle bundle;//来自getArguments() + protected Bundle savedInstanceState; + + /** + * 上下文 + */ + private WeakReference ctx; + + public Context getCtx() { + return ctx == null ? null : ctx.get(); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + ctx = new WeakReference<>(context); + } + + /** + * onCreate、onResume里不能调用 + * + * @return + */ + public boolean isAttached() { + boolean flag = getCtx() != null && isAdded(); + Log.e(" >> isAttached >>", "flag = " + flag); + return flag; + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + mViewDataBinding = DataBindingUtil.inflate(inflater, getLayoutId(), container, false); + mViewDataBinding.setLifecycleOwner(this); + return mViewDataBinding.getRoot(); + } + + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + +// if (initStatusBarToolBar()) { +// toolbar = getToolbar(); +// } + //注册eventbus +// if (getClass().isAnnotationPresent(BindEventBus.class)) +// EventBusManager.register(this); + // + +// fitsLayoutOverlap(); + initDataBinding(); + initView(bundle = getArguments()); + // + initData(this.savedInstanceState = savedInstanceState); + // + if (mIsVisible) { + onEnter(); + } + mHasPrepare = true; + // +// LiveDataBus.get().with(ConstantUtils.DATA_BUS_LOADING_FRAGMENT, Boolean.class).observe(getActivity(), bool -> { +// L.e(" >> LiveDataBus >> DATA_BUS_LOADING_FRAGMENT: %s", bool); +// if(bool) { +// showLoading(R.string.str_please_wait); +// } else { +// hideLoading(); +// } +// }); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + mHasPrepare = false; + mViewDataBinding = null; + //移除eventbus +// if (getClass().isAnnotationPresent(BindEventBus.class)) +// EventBusManager.unregister(this); + // + } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + if (mIsVisible == getUserVisibleHint()) + return; + mIsVisible = getUserVisibleHint(); + if (mIsVisible) { + if (!mHasPrepare) + return; + onEnter(); + } else { + onExit(); + } + } + + @LayoutRes + protected abstract int getLayoutId(); + +// protected abstract Toolbar getToolbar(); + +// protected View getStatusView() { +// return null; +// } + + protected abstract void initDataBinding(); + + protected abstract void initView(Bundle bundle); + + protected abstract void initData(Bundle savedInstanceState); + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); +// fitsLayoutOverlap(); + } + +// protected boolean isImmersionBarEnabled() { +// return true; +// } + +// protected boolean initStatusBarToolBar() { +// return true; +// } + + +// private void fitsLayoutOverlap() { +// if (!isImmersionBarEnabled()) return; +// if (statusBarView != null) { +// ImmersionBar.setStatusBarView(getActivity(), statusBarView); +// } +// if (toolbar != null) { +// ImmersionBar.setTitleBar(getActivity(), toolbar); +// } +// } + + protected void hideInputMethod(Activity activity) { + InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); + View view = activity.getCurrentFocus(); + if (view != null) { + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + } + + protected void hideInputMethod(Activity activity, EditText editText) { + InputMethodManager imm = (InputMethodManager) editText.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE); + View view = activity.getCurrentFocus(); + if (view != null) { + imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); + } + } + + protected void showInputMethod(EditText editText) { + InputMethodManager imm = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED); + } + + +// private CustomDialog mWaitDialog; +// +// public void showLoading(@StringRes int contentID) { +// showLoading(contentID, R.color.white); +// } +// +// public void showLoading(@StringRes int contentID, @ColorRes int color) { +// hideLoading(); +// DialogX.init(getActivity()); +// if (color == R.color.white) { +// mWaitDialog = DialogXUtil.getInstance().showLoading(getActivity(), getString(contentID), getResources().getColor(color)); +// } else { +// mWaitDialog = DialogXUtil.getInstance().showLoading_black(getActivity(), getString(contentID), getResources().getColor(color)); +// } +// } +// +// public void updateLoadingTip(@StringRes int messageID, int percent) { +// try { +// if (mWaitDialog != null && mWaitDialog.isShow()) { +// TextView tvTip = mWaitDialog.getCustomView().findViewById(R.id.tv_load_tip); +// if (tvTip != null) +// tvTip.setText(getResources().getString(messageID) + (percent == -1 ? "" : percent + "%")); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// public boolean isShowLoading() { +// return mWaitDialog != null && mWaitDialog.isShow(); +// } +// +// public void hideLoading() { +// try { +// boolean isShow = isShowLoading(); +// L.d(" >> hideLoading :: isShow: %s", isShow); +// if (isShow) +// mWaitDialog.dismiss(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + + /** + * 進入界面 + */ + protected void onEnter() { + + } + + /** + * 離開界面 + */ + protected void onExit() { + + } + +} diff --git a/app/src/main/java/com/uiui/zyos/base/BaseLazyFragment.java b/app/src/main/java/com/uiui/zyos/base/BaseLazyFragment.java index 4a28d7a..45e27f9 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseLazyFragment.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseLazyFragment.java @@ -11,7 +11,7 @@ import androidx.fragment.app.Fragment; * Date: 1/23/15. */ public abstract class BaseLazyFragment extends Fragment { - private static final String TAG = BaseLazyFragment.class.getSimpleName(); + private static final String TAG = "BaseLazyFragment"; private boolean isPrepared; @Override diff --git a/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java b/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java index 62ee1f8..98ff14d 100644 --- a/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java +++ b/app/src/main/java/com/uiui/zyos/base/mvvm/BaseMvvmActivity.java @@ -16,7 +16,7 @@ import java.lang.reflect.ParameterizedType; public abstract class BaseMvvmActivity extends BaseTransparentActivity { - private static final String TAG = BaseMvvmActivity.class.getSimpleName(); + private static final String TAG = "BaseMvvmActivity"; protected VM mViewModel; protected VDB mViewDataBinding; diff --git a/app/src/main/java/com/uiui/zyos/bean/GuideBean.java b/app/src/main/java/com/uiui/zyos/bean/GuideBean.java new file mode 100644 index 0000000..80f421e --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/bean/GuideBean.java @@ -0,0 +1,26 @@ +package com.uiui.zyos.bean; + +import java.io.Serializable; + +public class GuideBean implements Serializable { + private static final long serialVersionUID = 603876094734315379L; + + String type; + String file; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } +} diff --git a/app/src/main/java/com/uiui/zyos/disklrucache/CacheHelper.java b/app/src/main/java/com/uiui/zyos/disklrucache/CacheHelper.java index bb29c4c..b32a0b5 100644 --- a/app/src/main/java/com/uiui/zyos/disklrucache/CacheHelper.java +++ b/app/src/main/java/com/uiui/zyos/disklrucache/CacheHelper.java @@ -30,7 +30,7 @@ import java.io.Serializable; * 磁盘缓存帮助类 */ public class CacheHelper { - private static final String TAG = CacheHelper.class.getSimpleName(); + private static final String TAG = "CacheHelper"; private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java deleted file mode 100644 index 03f20c2..0000000 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppContact.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.uiui.zyos.fragment.app; - -import com.uiui.zyos.base.mvp.BasePresenter; -import com.uiui.zyos.base.mvp.BaseView; -import com.uiui.zyos.bean.DesktopIcon; - -import java.util.ArrayList; - -public class AppContact { - public interface AppPresenter extends BasePresenter { - void getInstalledApp(); - } - - public interface AppView extends BaseView { - void setInstalledApp( ArrayList desktopIcons); - } -} diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java index b4f087d..2cd2592 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppFragment.java @@ -8,46 +8,32 @@ import android.os.Bundle; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; -import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.WindowManager; -import android.widget.ImageView; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.uiui.zyos.R; -import com.uiui.zyos.activity.more.MoreAppActivity; import com.uiui.zyos.adapter.AppAdapter; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment; import com.uiui.zyos.bean.DesktopIcon; +import com.uiui.zyos.databinding.FragmentAppBinding; import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; import java.util.ArrayList; import java.util.HashMap; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link AppFragment#newInstance} factory method to * create an instance of this fragment. */ -public class AppFragment extends BaseFragment implements AppContact.AppView { - private static final String TAG = AppFragment.class.getSimpleName(); +public class AppFragment extends BaseMvvmFragment { + private static final String TAG = "AppFragment"; - @BindView(R.id.rv_app) - RecyclerView rv_app; - @BindView(R.id.iv_nodata) - ImageView iv_nodata; - - private AppPresenter mPresenter; - private View rootView; private FragmentActivity mContext; private AppAdapter mAppAdapter; @@ -95,41 +81,22 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_app, container, false); - mContext = (FragmentActivity) rootView.getContext(); - mPresenter = new AppPresenter(mContext); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected int getLayoutId() { + return R.layout.fragment_app; } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; + protected void initDataBinding() { + mContext = getActivity(); + mViewModel.setCtx(getCtx()); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewModel.setVDBinding(mViewDataBinding); +// mViewDataBinding.setClick(new BtnClick()); } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); - initData(); - } - - private void initView() { - rv_app.setLayoutManager(new GridLayoutManager(mContext, 6)); + protected void initView(Bundle bundle) { + mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 6)); HashMap stringIntegerHashMap = new HashMap<>(); WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); @@ -139,14 +106,38 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 - rv_app.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mViewDataBinding.rvApp.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); mAppAdapter = new AppAdapter(); - rv_app.setAdapter(mAppAdapter); + mViewDataBinding.rvApp.setAdapter(mAppAdapter); registerOwnReceiver(); } - private void initData() { + @Override + protected void initData(Bundle savedInstanceState) { + mViewModel.mDesktopIconListData.observe(this, new Observer>() { + @Override + public void onChanged(ArrayList 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 @@ -154,7 +145,7 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { super.setUserVisibleHint(isVisibleToUser); Log.e(TAG, "setUserVisibleHint: " + isVisibleToUser); if (isVisibleToUser && isViewInitiated) { - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } } @@ -162,7 +153,7 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { public void onResume() { super.onResume(); Log.e(TAG, "onResume: "); - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } @Override @@ -210,7 +201,7 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { return; } if (UPDATE_DESKTOP_ICON_ACTION.equals(action)) { - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } } } @@ -240,21 +231,11 @@ public class AppFragment extends BaseFragment implements AppContact.AppView { if (TextUtils.isEmpty(action)) { return; } - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } } + public class BtnClick { - @Override - public void setInstalledApp(ArrayList desktopIcons) { - Log.e(TAG, "setInstalledApp: " + desktopIcons); - if (desktopIcons == null || desktopIcons.size() == 0) { - iv_nodata.setVisibility(View.VISIBLE); - rv_app.setVisibility(View.INVISIBLE); - } else { - iv_nodata.setVisibility(View.GONE); - rv_app.setVisibility(View.VISIBLE); - mAppAdapter.setDesktopIcons(desktopIcons); - } } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java similarity index 61% rename from app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java rename to app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java index eae4613..dd596b0 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java @@ -1,47 +1,30 @@ package com.uiui.zyos.fragment.app; -import android.content.Context; +import androidx.lifecycle.MutableLiveData; import com.trello.rxlifecycle4.android.FragmentEvent; import com.uiui.zyos.R; +import com.uiui.zyos.base.mvvm.BaseViewModel; import com.uiui.zyos.bean.DesktopIcon; +import com.uiui.zyos.databinding.FragmentAppBinding; import com.uiui.zyos.manager.AppManager; import java.util.ArrayList; -import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.subjects.BehaviorSubject; +public class AppViewModel extends BaseViewModel { -public class AppPresenter implements AppContact.AppPresenter { - private static final String TAG = AppPresenter.class.getSimpleName(); - private Context mContext; - private AppContact.AppView mView; - - public AppPresenter(Context context) { - this.mContext = context; - } - - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; + @Override + public FragmentAppBinding getVDBinding() { + return binding; } @Override - public void attachView(@NonNull AppContact.AppView view) { - this.mView = view; + public void onDestroy() { + } - @Override - public void detachView() { - this.mView = null; - } + public MutableLiveData> mDesktopIconListData = new MutableLiveData<>(); - @Override public void getInstalledApp() { ArrayList desktopIcons = AppManager.getInstance().getFilterAppList(); @@ -49,30 +32,30 @@ public class AppPresenter implements AppContact.AppPresenter { appstoreDesktopIcon.setLable("应用市场"); appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME); appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME); - appstoreDesktopIcon.setIcon(mContext.getDrawable(R.drawable.com_android_appstore)); + appstoreDesktopIcon.setIcon(getCtx().getDrawable(R.drawable.com_android_appstore)); desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon); DesktopIcon updateDesktopIcon = new DesktopIcon(); updateDesktopIcon.setLable("应用更新"); updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME); - updateDesktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_update)); + 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(mContext.getDrawable(R.drawable.icon_manual)); +// manualIcon.setIcon(getCtx().getDrawable(R.drawable.icon_manual)); // desktopIcons.add(desktopIcons.size(), manualIcon); DesktopIcon browserIcon = new DesktopIcon(); - browserIcon.setIcon(mContext.getDrawable(R.drawable.uiui_zybrowser)); + 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(mContext.getDrawable(R.drawable.service_icon)); + serviceIcon.setIcon(getCtx().getDrawable(R.drawable.service_icon)); serviceIcon.setLable("联系客服"); serviceIcon.setPackageName(AppManager.SERVICE_NAME); desktopIcons.add(serviceIcon); @@ -80,8 +63,8 @@ public class AppPresenter implements AppContact.AppPresenter { DesktopIcon desktopIcon = new DesktopIcon(); desktopIcon.setLable("添加应用"); desktopIcon.setPackageName(AppManager.ADD_NAME); - desktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_add)); + desktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add)); desktopIcons.add(desktopIcons.size(), desktopIcon); - mView.setInstalledApp(desktopIcons); + mDesktopIconListData.setValue(desktopIcons); } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java b/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java index f4db921..3ebccad 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/ar/ARStudyFragment.java @@ -3,22 +3,18 @@ package com.uiui.zyos.fragment.ar; import android.app.Activity; import android.content.Context; import android.os.Bundle; -import android.os.Debug; import android.util.DisplayMetrics; import android.util.Log; -import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.WindowManager; -import android.widget.ImageView; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.uiui.zyos.R; import com.uiui.zyos.adapter.HomeworkAdapter; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentArStudyBinding; import com.uiui.zyos.utils.ApkUtils; import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; @@ -26,24 +22,16 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link ARStudyFragment#newInstance} factory method to * create an instance of this fragment. */ -public class ARStudyFragment extends BaseFragment { - private static final String TAG = ARStudyFragment.class.getSimpleName(); +public class ARStudyFragment extends BaseDataBindingFragment { + private static final String TAG = "ARStudyFragment"; - @BindView(R.id.iv_app) - ImageView iv_app; - @BindView(R.id.recyclerView) - RecyclerView recyclerView; - - private View rootView;// 设置为全局的 private Activity mContext; + private HomeworkAdapter mHomeworkAdapter; // TODO: Rename parameter arguments, choose names that match @@ -89,54 +77,17 @@ public class ARStudyFragment extends BaseFragment { } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); + protected int getLayoutId() { + return R.layout.fragment_ar_study; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_ar_study, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + mContext = getActivity(); } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - @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 initView() { + protected void initView(Bundle bundle) { WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getRealMetrics(dm); @@ -146,18 +97,18 @@ public class ARStudyFragment extends BaseFragment { stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 10));//底部间距 // stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 // stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 - recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mViewDataBinding.recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); mHomeworkAdapter = new HomeworkAdapter(); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - recyclerView.setLayoutManager(linearLayoutManager); - recyclerView.setAdapter(mHomeworkAdapter); + mViewDataBinding.recyclerView.setLayoutManager(linearLayoutManager); + mViewDataBinding.recyclerView.setAdapter(mHomeworkAdapter); List homeworkList = new ArrayList<>(); homeworkList.add("暂时没有作业"); mHomeworkAdapter.setHomeworkList(homeworkList); - iv_app.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivApp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openArApk(); @@ -165,6 +116,42 @@ public class ARStudyFragment extends BaseFragment { }); } + @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"); diff --git a/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java b/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java index 4e88b39..c7489c1 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/biology/BiologyFragment.java @@ -2,40 +2,24 @@ package com.uiui.zyos.fragment.biology; import android.app.Activity; import android.os.Bundle; +import android.util.Log; +import android.view.View; import androidx.fragment.app.Fragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentBiologyBinding; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link BiologyFragment#newInstance} factory method to * create an instance of this fragment. */ -public class BiologyFragment extends BaseFragment { - private static final String TAG = BiologyFragment.class.getSimpleName(); +public class BiologyFragment extends BaseDataBindingFragment { + private static final String TAG = "BiologyFragment"; - @BindView(R.id.imageView1) - ImageView imageView1; - @BindView(R.id.imageView2) - ImageView imageView2; - @BindView(R.id.imageView3) - ImageView imageView3; - @BindView(R.id.imageView4) - ImageView imageView4; - - private View rootView;// 设置为全局的 private Activity mContext; // TODO: Rename parameter arguments, choose names that match @@ -81,55 +65,36 @@ public class BiologyFragment extends BaseFragment { } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); + protected int getLayoutId() { + return R.layout.fragment_biology; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_biology, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + mContext = getActivity(); } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - private void initView() { - imageView1.setOnClickListener(new View.OnClickListener() { + protected void initView(Bundle bundle) { + mViewDataBinding.imageView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|生物"); } }); - imageView2.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/生物|e:JWFD"); } }); - imageView3.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openLaboratory("生物实验室"); } }); - imageView4.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (OpenApkUtils.getInstance().isNewAiApp()) { @@ -139,7 +104,21 @@ public class BiologyFragment extends BaseFragment { } } }); + } + + @Override + protected void initData(Bundle savedInstanceState) { } + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + + + @Override + public void onDestroyView() { + super.onDestroyView(); + } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java b/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java index 244b5fd..c4ecffa 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/chemical/ChemicalFragment.java @@ -2,41 +2,24 @@ package com.uiui.zyos.fragment.chemical; import android.app.Activity; import android.os.Bundle; +import android.util.Log; +import android.view.View; import androidx.fragment.app.Fragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentChemicalBinding; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link ChemicalFragment#newInstance} factory method to * create an instance of this fragment. */ -public class ChemicalFragment extends BaseFragment { - private static final String TAG = ChemicalFragment.class.getSimpleName(); +public class ChemicalFragment extends BaseDataBindingFragment { + private static final String TAG = "ChemicalFragment"; - @BindView(R.id.imageView1) - ImageView imageView1; - @BindView(R.id.imageView2) - ImageView imageView2; - @BindView(R.id.imageView3) - ImageView imageView3; - @BindView(R.id.imageView4) - ImageView imageView4; - - - private View rootView;// 设置为全局的 private Activity mContext; // TODO: Rename parameter arguments, choose names that match @@ -82,55 +65,36 @@ public class ChemicalFragment extends BaseFragment { } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); + protected int getLayoutId() { + return R.layout.fragment_chemical; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_chemical, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + mContext = getActivity(); } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - private void initView() { - imageView1.setOnClickListener(new View.OnClickListener() { + protected void initView(Bundle bundle) { + mViewDataBinding.imageView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|化学"); } }); - imageView2.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/化学|e:JWFD"); } }); - imageView3.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openLaboratory("化学实验室"); } }); - imageView4.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (OpenApkUtils.getInstance().isNewAiApp()) { @@ -140,7 +104,20 @@ public class ChemicalFragment extends BaseFragment { } } }); + } + + @Override + protected void initData(Bundle savedInstanceState) { } + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java deleted file mode 100644 index 602a7ec..0000000 --- a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseContact.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.uiui.zyos.fragment.chinese; - - -import com.uiui.zyos.base.mvp.BasePresenter; -import com.uiui.zyos.base.mvp.BaseView; - -public class ChineseContact { - public interface Presenter extends BasePresenter { - - } - - public interface ChineseView extends BaseView { - - } -} diff --git a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java index e87c8de..18a5f76 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseFragment.java @@ -9,73 +9,31 @@ import android.content.res.Configuration; import android.os.BatteryManager; 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.TextView; import androidx.annotation.NonNull; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import com.blankj.utilcode.util.NetworkUtils; import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment; +import com.uiui.zyos.databinding.FragmentChineseBinding; import com.uiui.zyos.dialog.ChineseDialog; import com.uiui.zyos.dialog.FoundationDialog; import com.uiui.zyos.jxw.JxwPackageConfig; import com.uiui.zyos.manager.AmapManager; -import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.utils.OpenApkUtils; import com.uiui.zyos.utils.Utils; -import butterknife.BindView; -import butterknife.ButterKnife; - - /** * A simple {@link Fragment} subclass. * Use the {@link ChineseFragment#newInstance} factory method to * create an instance of this fragment. */ -public class ChineseFragment extends BaseFragment implements ChineseContact.ChineseView, NetworkUtils.OnNetworkStatusChangedListener { - private static final String TAG = ChineseFragment.class.getSimpleName(); +public class ChineseFragment extends BaseMvvmFragment implements NetworkUtils.OnNetworkStatusChangedListener { + private static final String TAG = "ChineseFragment"; - @BindView(R.id.iv_sync_video) - ImageView iv_sync_video; - @BindView(R.id.tv_more_app) - TextView tv_more_app; - @BindView(R.id.cl_tutoring) - ConstraintLayout cl_tutoring; - @BindView(R.id.cl_near_antonyms) - ConstraintLayout cl_near_antonyms; - @BindView(R.id.cl_composition) - ConstraintLayout cl_composition; - @BindView(R.id.cl_read) - ConstraintLayout cl_read; - @BindView(R.id.cl_character) - ConstraintLayout cl_character; - @BindView(R.id.cl_classical) - ConstraintLayout cl_classical; - @BindView(R.id.cl_rhetoric) - ConstraintLayout cl_rhetoric; - @BindView(R.id.cl_treasure) - ConstraintLayout cl_treasure; - @BindView(R.id.cl_punctuation) - ConstraintLayout cl_punctuation; - - @BindView(R.id.iv_dictation) - ImageView iv_dictation; - @BindView(R.id.iv_character) - ImageView iv_character; - @BindView(R.id.iv_foundation) - ImageView iv_foundation; - - - private View rootView;// 设置为全局的 private Activity mContext; - private ChinesePresenter mChinesePresenter; // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -131,74 +89,50 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin } @Override - public void onConfigurationChanged(@NonNull Configuration newConfig) { - super.onConfigurationChanged(newConfig); + protected int getLayoutId() { + return R.layout.fragment_chinese; } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); - AmapManager.getInstance().startLocation(); - initData(); + protected void initDataBinding() { + mContext = getActivity(); + mViewModel.setCtx(getCtx()); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewModel.setVDBinding(mViewDataBinding); +// mViewDataBinding.setClick(new BtnClick()); } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_chinese, container, false); - mContext = (Activity) rootView.getContext(); - mChinesePresenter = new ChinesePresenter(mContext); - mChinesePresenter.attachView(this); - mChinesePresenter.setLifecycle(getLifecycleSubject()); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - private void initView() { + protected void initView(Bundle bundle) { Log.e(TAG, "initView: " + Utils.getBatteryLevel(mContext)); registerBatteryReceiver(); registTimeReceiver(); mContext.registerReceiver(mbatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - iv_sync_video.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivSyncVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|语文"); } }); - tv_more_app.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.tvMoreApp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); - cl_tutoring.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clTutoring.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/语文|e:JWFD"); } }); - cl_near_antonyms.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clNearAntonyms.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_NEAR_ANTONYMS_PACKAGE_NAME, JxwPackageConfig.JXW_NEAR_ANTONYMS_CLASS_NAME); } }); - cl_composition.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clComposition.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // OpenApkUtils.getInstance().openComposition(); @@ -217,38 +151,38 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin chineseDialog.show(); } }); - cl_read.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_READING_PACKAGE_NAME, JxwPackageConfig.JXW_READING_CLASS_NAME); } }); - cl_character.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clCharacter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_CHARACTER_PACKAGE_NAME, JxwPackageConfig.JXW_CHARACTER_CLASS_NAME); // OpenApkUtils.getInstance().openSolidifiedData("d:/同步学习/语文|e:JWFD"); } }); - cl_classical.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clClassical.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/中学文言文.JXW"); } }); - cl_rhetoric.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clRhetoric.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/中学修辞方法.JXW"); } }); - cl_treasure.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clTreasure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/小学中华宝典.JXW"); } }); - cl_punctuation.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clPunctuation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/中学标点符号.JXW"); @@ -256,7 +190,7 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin }); - iv_dictation.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivDictation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (OpenApkUtils.getInstance().isNewAiApp()) { @@ -266,13 +200,13 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin } } }); - iv_character.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivCharacter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_CHARACTER_PACKAGE_NAME, JxwPackageConfig.JXW_CHARACTER_CLASS_NAME); } }); - iv_foundation.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivFoundation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FoundationDialog foundationDialog = new FoundationDialog(mContext); @@ -303,8 +237,25 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin }); } - private void initData() { - initAmap(); + @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 @@ -322,10 +273,6 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin super.onResume(); } - - private void initAmap() { - } - private void registerBatteryReceiver() { if (null == batteryReceiver) { batteryReceiver = new BatteryReceiver(); @@ -373,11 +320,9 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN); if (status == BatteryManager.BATTERY_STATUS_CHARGING) { - if (rootView != null) { - } + } else { - if (rootView != null) { - } + } } } @@ -422,7 +367,6 @@ public class ChineseFragment extends BaseFragment implements ChineseContact.Chin @Override public void onDestroy() { super.onDestroy(); - mChinesePresenter.detachView(); NetworkUtils.unregisterNetworkStatusChangedListener(this); if (batteryReceiver != null) { mContext.unregisterReceiver(batteryReceiver); diff --git a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChinesePresenter.java b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChinesePresenter.java deleted file mode 100644 index 8b11e49..0000000 --- a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChinesePresenter.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.uiui.zyos.fragment.chinese; - -import android.content.Context; - -import com.trello.rxlifecycle4.android.FragmentEvent; - -import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -public class ChinesePresenter implements ChineseContact.Presenter { - private static final String TAG = ChinesePresenter.class.getSimpleName(); - private Context mContext; - private ChineseContact.ChineseView mView; - - public ChinesePresenter(Context context) { - this.mContext = context; - } - - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - @Override - public void attachView(@NonNull ChineseContact.ChineseView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - } - -} diff --git a/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseViewModel.java b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseViewModel.java new file mode 100644 index 0000000..44c39ca --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/fragment/chinese/ChineseViewModel.java @@ -0,0 +1,18 @@ +package com.uiui.zyos.fragment.chinese; + +import com.trello.rxlifecycle4.android.FragmentEvent; +import com.uiui.zyos.base.mvvm.BaseViewModel; +import com.uiui.zyos.databinding.FragmentChineseBinding; + +public class ChineseViewModel extends BaseViewModel { + + @Override + public FragmentChineseBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } +} diff --git a/app/src/main/java/com/uiui/zyos/fragment/complex/ComplexFragment.java b/app/src/main/java/com/uiui/zyos/fragment/complex/ComplexFragment.java index 323175e..194bc54 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/complex/ComplexFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/complex/ComplexFragment.java @@ -2,55 +2,25 @@ package com.uiui.zyos.fragment.complex; import android.app.Activity; import android.os.Bundle; +import android.util.Log; +import android.view.View; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentComplexBinding; import com.uiui.zyos.jxw.JxwPackageConfig; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link ComplexFragment#newInstance} factory method to * create an instance of this fragment. */ -public class ComplexFragment extends BaseFragment { - private static final String TAG = ComplexFragment.class.getSimpleName(); +public class ComplexFragment extends BaseDataBindingFragment { + private static final String TAG = "ComplexFragment"; - @BindView(R.id.cl_politics_video) - ConstraintLayout cl_politics_video; - @BindView(R.id.cl_politics_coach) - ConstraintLayout cl_politics_coach; - @BindView(R.id.cl_history_video) - ConstraintLayout cl_history_video; - @BindView(R.id.cl_history_coach) - ConstraintLayout cl_history_coach; - @BindView(R.id.cl_geography_video) - ConstraintLayout cl_geography_video; - @BindView(R.id.cl_geography_coach) - ConstraintLayout cl_geography_coach; - @BindView(R.id.cl_science_video) - ConstraintLayout cl_science_video; - @BindView(R.id.cl_science_coach) - ConstraintLayout cl_science_coach; - - @BindView(R.id.iv_video) - ImageView iv_video; - @BindView(R.id.iv_famous_teacher) - ImageView iv_famous_teacher; - - private View rootView;// 设置为全局的 private Activity mContext; // TODO: Rename parameter arguments, choose names that match @@ -95,86 +65,74 @@ public class ComplexFragment extends BaseFragment { Log.e(TAG, "onCreate: "); } + @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); + protected int getLayoutId() { + return R.layout.fragment_complex; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_complex, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + mContext = getActivity(); } - private void initView() { - cl_politics_video.setOnClickListener(new View.OnClickListener() { + @Override + protected void initView(Bundle bundle) { + mViewDataBinding.clPoliticsVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|政治"); } }); - cl_politics_coach.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clPoliticsCoach.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/政治|e:JWFD"); } }); - cl_history_video.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clHistoryVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|历史"); } }); - cl_history_coach.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clHistoryCoach.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/历史|e:JWFD"); } }); - cl_geography_video.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clGeographyVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|地理"); } }); - cl_geography_coach.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clGeographyCoach.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/地理|e:JWFD"); } }); - cl_science_video.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clScienceVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|科学"); } }); - cl_science_coach.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clScienceCoach.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/科学|e:JWFD"); } }); - iv_video.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|政治"); } }); - iv_famous_teacher.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivFamousTeacher.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_TEACHER_PACKAGE_NAME, JxwPackageConfig.JXW_TEACHER_CLASS_NAME); @@ -182,9 +140,19 @@ public class ComplexFragment extends BaseFragment { }); } + @Override + protected void initData(Bundle savedInstanceState) { + + } + + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + @Override public void onDestroyView() { super.onDestroyView(); - rootView = null; } + } diff --git a/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java b/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java index 34cf31a..aac6706 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/english/EnglishFragment.java @@ -3,47 +3,25 @@ package com.uiui.zyos.fragment.english; import android.app.Activity; 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 androidx.fragment.app.Fragment; import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentEnglishBinding; import com.uiui.zyos.dialog.EnglishBasicsDialog; import com.uiui.zyos.jxw.JxwPackageConfig; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link EnglishFragment#newInstance} factory method to * create an instance of this fragment. */ -public class EnglishFragment extends BaseFragment { - private static final String TAG = EnglishFragment.class.getSimpleName(); +public class EnglishFragment extends BaseDataBindingFragment { + private static final String TAG = "EnglishFragment"; - @BindView(R.id.imageView5) - ImageView imageView5; - @BindView(R.id.imageView6) - ImageView imageView6; - @BindView(R.id.imageView7) - ImageView imageView7; - @BindView(R.id.imageView8) - ImageView imageView8; - @BindView(R.id.imageView9) - ImageView imageView9; - @BindView(R.id.imageView10) - ImageView imageView10; - @BindView(R.id.imageView11) - ImageView imageView11; - - - private View rootView;// 设置为全局的 private Activity mContext; // TODO: Rename parameter arguments, choose names that match @@ -89,49 +67,30 @@ public class EnglishFragment extends BaseFragment { } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); + protected int getLayoutId() { + return R.layout.fragment_english; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_english, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - private void initView() { - imageView5.setOnClickListener(new View.OnClickListener() { + protected void initView(Bundle bundle) { + mViewDataBinding.imageView5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|英语"); } }); - imageView6.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/英语|e:JWFD"); } }); - imageView7.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/小学英语词汇.JXW"); @@ -181,25 +140,25 @@ public class EnglishFragment extends BaseFragment { englishBasicsDialog.show(); } }); - imageView8.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView8.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_TRANSLATE_PACKAGE_NAME, JxwPackageConfig.JXW_TRANSLATE_CLASS_NAME); } }); - imageView9.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView9.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_MEMORIZE_WORDS_PACKAGE_NAME, JxwPackageConfig.JXW_WUWEI_WORDS_CLASS_NAME); } }); - imageView10.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView10.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_ORAL_TEST_PACKAGE_NAME, JxwPackageConfig.JXW_ORAL_TEST_CLASS_NAME); } }); - imageView11.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView11.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (OpenApkUtils.getInstance().isNewAiApp()) { @@ -210,4 +169,19 @@ public class EnglishFragment extends BaseFragment { } }); } + + @Override + protected void initData(Bundle savedInstanceState) { + + } + + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java b/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java deleted file mode 100644 index eb14b02..0000000 --- a/app/src/main/java/com/uiui/zyos/fragment/main/MainContact.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.uiui.zyos.fragment.main; - -import com.uiui.zyos.base.mvp.BasePresenter; -import com.uiui.zyos.base.mvp.BaseView; - -public class MainContact { - public interface Presenter extends BasePresenter { - - } - - public interface MainView extends BaseView { - - } -} diff --git a/app/src/main/java/com/uiui/zyos/fragment/main/MainFPresenter.java b/app/src/main/java/com/uiui/zyos/fragment/main/MainFPresenter.java deleted file mode 100644 index 90d1bef..0000000 --- a/app/src/main/java/com/uiui/zyos/fragment/main/MainFPresenter.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.uiui.zyos.fragment.main; - -import android.content.Context; - -import com.trello.rxlifecycle4.android.FragmentEvent; - -import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -public class MainFPresenter implements MainContact.Presenter { - private static final String TAG = MainFPresenter.class.getSimpleName(); - private Context mContext; - private MainContact.MainView mView; - - public MainFPresenter(Context context) { - this.mContext = context; - } - - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - @Override - public void attachView(@NonNull MainContact.MainView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - } - -} diff --git a/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java b/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java index 58da4a3..10cd080 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/main/MainFragment.java @@ -3,68 +3,35 @@ package com.uiui.zyos.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.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.viewpager.widget.ViewPager; -import android.provider.Settings; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; -import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; +import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment; +import com.uiui.zyos.databinding.FragmentMainBinding; import com.uiui.zyos.fragment.subject.SubjectFragment; import com.uiui.zyos.fragment.user.UserFragment; import com.uiui.zyos.utils.OpenApkUtils; import com.uiui.zyos.view.ScaleCircleNavigator; - -import net.lucode.hackware.magicindicator.MagicIndicator; +import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; import java.util.ArrayList; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link MainFragment#newInstance} factory method to * create an instance of this fragment. */ -public class MainFragment extends BaseFragment implements MainContact.MainView { - private static final String TAG = MainFragment.class.getSimpleName(); +public class MainFragment extends BaseMvvmFragment { + private static final String TAG = "MainFragment"; - @BindView(R.id.viewPager) - ViewPager mViewPager; - @BindView(R.id.magicIndicator) - MagicIndicator mMagicIndicator; - - @BindView(R.id.cl_0) - ConstraintLayout cl_0; - @BindView(R.id.cl_1) - ConstraintLayout cl_1; - @BindView(R.id.cl_2) - ConstraintLayout cl_2; - @BindView(R.id.cl_3) - ConstraintLayout cl_3; - @BindView(R.id.cl_4) - ConstraintLayout cl_4; - @BindView(R.id.cl_5) - ConstraintLayout cl_5; - @BindView(R.id.cl_6) - ConstraintLayout cl_6; - @BindView(R.id.cl_7) - ConstraintLayout cl_7; - - - private MainFPresenter mPresenter; - private View rootView; private FragmentActivity mContext; private ScaleCircleNavigator scaleCircleNavigator; @@ -119,45 +86,21 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_main, container, false); - mContext = (FragmentActivity) rootView.getContext(); - mPresenter = new MainFPresenter(mContext); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected int getLayoutId() { + return R.layout.fragment_main; } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; + protected void initDataBinding() { + mContext = getActivity(); + mViewModel.setCtx(getCtx()); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewModel.setVDBinding(mViewDataBinding); +// mViewDataBinding.setClick(new BtnClick()); } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); - initData(); - } - - public void setCurrentItem() { - mViewPager.setCurrentItem(defaultCurrent); - mSubjectFragment.setCurrentItem(); - } - - private void initView() { + protected void initView(Bundle bundle) { mFragmentManager = getChildFragmentManager(); // mFragmentTransaction = mFragmentManager.beginTransaction(); mFragments = new ArrayList<>(); @@ -179,32 +122,32 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { } }); - mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setOffscreenPageLimit(8); - mMagicIndicator.setNavigator(scaleCircleNavigator); + 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) { - mMagicIndicator.onPageScrolled(position + 1, positionOffset, positionOffsetPixels); + mViewDataBinding.magicIndicator.onPageScrolled(position + 1, positionOffset, positionOffsetPixels); } @Override public void onPageSelected(int position) { - mMagicIndicator.onPageSelected(position + 1); + mViewDataBinding.magicIndicator.onPageSelected(position + 1); } @Override public void onPageScrollStateChanged(int state) { - mMagicIndicator.onPageScrollStateChanged(state + 1); + mViewDataBinding.magicIndicator.onPageScrollStateChanged(state + 1); } }); - mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + 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) { - mMagicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels); + mViewDataBinding.magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels); } } @@ -212,7 +155,7 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { public void onPageSelected(int position) { Log.e(TAG, "onPageSelected: position = " + position); if (position <= 1) { - mMagicIndicator.onPageSelected(position); + mViewDataBinding.magicIndicator.onPageSelected(position); } } @@ -220,33 +163,33 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { public void onPageScrollStateChanged(int state) { Log.e(TAG, "onPageSelected: state = " + state); if (state <= 1) { - mMagicIndicator.onPageScrollStateChanged(state); + mViewDataBinding.magicIndicator.onPageScrollStateChanged(state); } } }); if (mFragments.size() > 1) { - mViewPager.setCurrentItem(defaultCurrent); + mViewDataBinding.viewPager.setCurrentItem(defaultCurrent); } - cl_0.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl0.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openApp("com.uiui.zyappstore","com.uiui.zyappstore.activity.MainActivity"); + OpenApkUtils.getInstance().openApp("com.uiui.zyappstore", "com.uiui.zyappstore.activity.MainActivity"); } }); - cl_1.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - OpenApkUtils.getInstance().openApp("com.uiui.zybrowser","com.uiui.zybrowser.activity.main.MainActivity"); + OpenApkUtils.getInstance().openApp("com.uiui.zybrowser", "com.uiui.zybrowser.activity.main.MainActivity"); } }); - cl_2.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openApp("com.android.documentsui"); } }); - cl_3.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // OpenApkUtils.getInstance().openApp("com.android.camera"); @@ -254,14 +197,14 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { startActivity(intent); } }); - cl_4.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Settings.ACTION_SETTINGS); startActivity(intent); } }); - cl_5.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // OpenApkUtils.getInstance().openApp("com.android.gallery3d.app"); @@ -269,22 +212,37 @@ public class MainFragment extends BaseFragment implements MainContact.MainView { startActivity(intent); } }); - cl_6.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openApp("com.uiui.zyappstore"); } }); - cl_7.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.cl7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openApp("com.uiui.zyappstore"); } }); + } + + @Override + protected void initData(Bundle savedInstanceState) { } - private void initData() { + @Override + public void onDestroyView() { + super.onDestroyView(); + } + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + + public void setCurrentItem() { + mViewDataBinding.viewPager.setCurrentItem(defaultCurrent); + mSubjectFragment.setCurrentItem(); } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/main/MainViewModel.java b/app/src/main/java/com/uiui/zyos/fragment/main/MainViewModel.java new file mode 100644 index 0000000..3deff52 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/fragment/main/MainViewModel.java @@ -0,0 +1,20 @@ +package com.uiui.zyos.fragment.main; + +import com.trello.rxlifecycle4.android.FragmentEvent; +import com.uiui.zyos.base.mvvm.BaseViewModel; +import com.uiui.zyos.databinding.FragmentMainBinding; + +public class MainViewModel extends BaseViewModel { + + @Override + public FragmentMainBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } + + +} diff --git a/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java b/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java index 531c553..21e9f7f 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/math/MathFragment.java @@ -2,59 +2,25 @@ package com.uiui.zyos.fragment.math; import android.app.Activity; import android.os.Bundle; +import android.util.Log; +import android.view.View; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentMathBinding; import com.uiui.zyos.jxw.JxwPackageConfig; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link MathFragment#newInstance} factory method to * create an instance of this fragment. */ -public class MathFragment extends BaseFragment { - private static final String TAG = MathFragment.class.getSimpleName(); +public class MathFragment extends BaseDataBindingFragment { + private static final String TAG = "MathFragment"; - @BindView(R.id.iv_sync_video) - ImageView iv_sync_video; - @BindView(R.id.cl_tutoring) - ConstraintLayout cl_tutoring; - @BindView(R.id.cl_near_antonyms) - ConstraintLayout cl_near_antonyms; - @BindView(R.id.cl_composition) - ConstraintLayout cl_composition; - @BindView(R.id.cl_read) - ConstraintLayout cl_read; - @BindView(R.id.cl_character) - ConstraintLayout cl_rhetoric; - @BindView(R.id.cl_classical) - ConstraintLayout cl_classical; - - @BindView(R.id.cl_encyclopedia) - ConstraintLayout cl_encyclopedia; - @BindView(R.id.cl_number) - ConstraintLayout cl_number; - @BindView(R.id.cl_formula) - ConstraintLayout cl_formula; - - @BindView(R.id.iv_precision_learning) - ImageView iv_precision_learning; - - - private View rootView;// 设置为全局的 private Activity mContext; // TODO: Rename parameter arguments, choose names that match @@ -99,101 +65,83 @@ public class MathFragment extends BaseFragment { Log.e(TAG, "onCreate: "); } + @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); + protected int getLayoutId() { + return R.layout.fragment_math; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_math, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + mContext = getActivity(); } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - private void initView() { - iv_sync_video.setOnClickListener(new View.OnClickListener() { + protected void initView(Bundle bundle) { + mViewDataBinding.ivSyncVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|数学"); } }); - cl_tutoring.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clTutoring.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/数学|e:JWFD"); } }); - cl_near_antonyms.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clNearAntonyms.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/小学应用题训练.JXW"); } }); - cl_composition.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clComposition.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/小学奥数训练.JXW"); } }); - cl_read.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/中学方程精解.JXW"); } }); - cl_rhetoric.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clCharacter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/小学趣味数学.JXW"); } }); - cl_classical.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clClassical.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_ARITHMETIC_PACKAGE_NAME, JxwPackageConfig.JXW_ARITHMETIC_CLASS_NAME); } }); - cl_encyclopedia.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clEncyclopedia.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/中学公式大全.JXW"); } }); - cl_number.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clNumber.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_KNOW_MATHEMATICS_PACKAGE_NAME, JxwPackageConfig.JXW_KNOW_MATHEMATICS_CLASS_NAME); } }); - cl_formula.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clFormula.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSolidifiedData("f:/ansystem/固化数据/小学数学公式.JXW"); } }); - iv_precision_learning.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivPrecisionLearning.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (OpenApkUtils.getInstance().isNewAiApp()) { @@ -204,4 +152,20 @@ public class MathFragment extends BaseFragment { } }); } + + @Override + protected void initData(Bundle savedInstanceState) { + + } + + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + } + } diff --git a/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java b/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java index f62ceba..c28f0c5 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/physics/PhysicsFragment.java @@ -3,38 +3,23 @@ package com.uiui.zyos.fragment.physics; import android.app.Activity; 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 androidx.fragment.app.Fragment; import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentPhysicsBinding; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link PhysicsFragment#newInstance} factory method to * create an instance of this fragment. */ -public class PhysicsFragment extends BaseFragment { - private static final String TAG = PhysicsFragment.class.getSimpleName(); +public class PhysicsFragment extends BaseDataBindingFragment { + private static final String TAG = "PhysicsFragment"; - @BindView(R.id.imageView1) - ImageView imageView1; - @BindView(R.id.imageView2) - ImageView imageView2; - @BindView(R.id.imageView3) - ImageView imageView3; - @BindView(R.id.imageView4) - ImageView imageView4; - - private View rootView;// 设置为全局的 private Activity mContext; // TODO: Rename parameter arguments, choose names that match @@ -85,50 +70,36 @@ public class PhysicsFragment extends BaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_physics, container, false); - mContext = (Activity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected int getLayoutId() { + return R.layout.fragment_physics; } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; + protected void initDataBinding() { + mContext = getActivity(); } - private void initView() { - imageView1.setOnClickListener(new View.OnClickListener() { + @Override + protected void initView(Bundle bundle) { + mViewDataBinding.imageView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSyncVideo("同步视频|物理"); } }); - imageView2.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openSynchronousTutoring("d:/同步学习/物理|e:JWFD"); } }); - imageView3.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openLaboratory("物理实验室"); } }); - imageView4.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.imageView4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (OpenApkUtils.getInstance().isNewAiApp()) { @@ -138,6 +109,15 @@ public class PhysicsFragment extends BaseFragment { } } }); + } + + @Override + protected void initData(Bundle savedInstanceState) { } + + @Override + public void onDestroyView() { + super.onDestroyView(); + } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java b/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java index ebd5bda..eea2fa7 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/precision/PrecisionFragment.java @@ -1,56 +1,34 @@ package com.uiui.zyos.fragment.precision; -import android.app.Activity; -import android.media.Image; import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.lifecycle.Observer; - import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.TextView; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; + import com.tencent.mmkv.MMKV; import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment; import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.databinding.FragmentPrecisionBinding; -import com.uiui.zyos.fragment.ar.ARStudyFragment; -import com.uiui.zyos.fragment.chinese.ChinesePresenter; import com.uiui.zyos.utils.OpenApkUtils; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link PrecisionFragment#newInstance} factory method to * create an instance of this fragment. */ public class PrecisionFragment extends BaseMvvmFragment { - private static final String TAG = PrecisionFragment.class.getSimpleName(); + private static final String TAG = "PrecisionFragment"; private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); - @BindView(R.id.iv_bunk) - ImageView iv_bunk; - @BindView(R.id.iv_paper) - ImageView iv_paper; - @BindView(R.id.iv_test) - ImageView iv_test; - @BindView(R.id.iv_book) - ImageView iv_book; - @BindView(R.id.iv_favorites) - ImageView iv_favorites; - - // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; diff --git a/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java b/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java index c9c5108..44ba48c 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/subject/SubjectFragment.java @@ -1,23 +1,17 @@ package com.uiui.zyos.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 android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.flyco.tablayout.SlidingTabLayout; import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseFragment; -import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; +import com.uiui.zyos.base.BaseDataBindingFragment; +import com.uiui.zyos.databinding.FragmentSubjectBinding; import com.uiui.zyos.fragment.app.AppFragment; -import com.uiui.zyos.fragment.ar.ARStudyFragment; import com.uiui.zyos.fragment.biology.BiologyFragment; import com.uiui.zyos.fragment.chemical.ChemicalFragment; import com.uiui.zyos.fragment.chinese.ChineseFragment; @@ -26,32 +20,25 @@ import com.uiui.zyos.fragment.english.EnglishFragment; import com.uiui.zyos.fragment.math.MathFragment; import com.uiui.zyos.fragment.physics.PhysicsFragment; import com.uiui.zyos.fragment.precision.PrecisionFragment; +import com.uiui.zyos.view.viewpager.BaseFragmentPagerAdapter; import java.util.ArrayList; import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link SubjectFragment#newInstance} factory method to * create an instance of this fragment. */ -public class SubjectFragment extends BaseFragment { - private static final String TAG = SubjectFragment.class.getSimpleName(); - - @BindView(R.id.main_sliding_tab_layout) - SlidingTabLayout main_sliding_tab_layout; - @BindView(R.id.viewPager) - ViewPager mViewPager; +public class SubjectFragment extends BaseDataBindingFragment { + private static final String TAG = "SubjectFragment"; private String[] title = new String[]{ // "AR自主学", "精准学", "语文", "数学", "英语", "物理", "化学", "生物", "综合", "应用"}; - private View rootView; private FragmentActivity mContext; + // private ARStudyFragment mARStudyFragment; private PrecisionFragment mPrecisionFragment; private ChineseFragment mChineseFragment; @@ -88,11 +75,11 @@ public class SubjectFragment extends BaseFragment { // mARStudyFragment.setUserVisibleHintCallback(new ARStudyFragment.UserVisibleHintCallback() { // @Override // public void onUserVisibleHint() { -// if (mViewPager != null) { -// mViewPager.postDelayed(new Runnable() { +// if (mViewDataBinding.viewPager != null) { +// mViewDataBinding.viewPager.postDelayed(new Runnable() { // @Override // public void run() { -// mViewPager.setOffscreenPageLimit(11); +// mViewDataBinding.viewPager.setOffscreenPageLimit(11); // } // }, 2345); // Log.e(TAG, "setUserVisibleHint: setOffscreenPageLimit"); @@ -103,11 +90,11 @@ public class SubjectFragment extends BaseFragment { mPrecisionFragment.setUserVisibleHintCallback(new PrecisionFragment.UserVisibleHintCallback() { @Override public void onUserVisibleHint() { - if (mViewPager != null) { - mViewPager.postDelayed(new Runnable() { + if (mViewDataBinding.viewPager != null) { + mViewDataBinding.viewPager.postDelayed(new Runnable() { @Override public void run() { - mViewPager.setOffscreenPageLimit(10); + mViewDataBinding.viewPager.setOffscreenPageLimit(10); } }, 1234); Log.e(TAG, "setUserVisibleHint: setOffscreenPageLimit"); @@ -165,27 +152,31 @@ public class SubjectFragment extends BaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_subject, container, false); - mContext = (FragmentActivity) rootView.getContext(); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected int getLayoutId() { + return R.layout.fragment_subject; } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; + 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); + mViewDataBinding.mainSlidingTabLayout.setViewPager(mViewDataBinding.viewPager, title); + Log.e(TAG, "initView: end = " + (System.currentTimeMillis() - time)); + + } + + @Override + protected void initData(Bundle savedInstanceState) { + } @Override @@ -204,6 +195,11 @@ public class SubjectFragment extends BaseFragment { } } + @Override + public void onDestroyView() { + super.onDestroyView(); + } + @Override public void onResume() { Log.e(TAG, "onResume: "); @@ -216,22 +212,10 @@ public class SubjectFragment extends BaseFragment { } public void setCurrentItem() { - mViewPager.setCurrentItem(defaultCurrent); + mViewDataBinding.viewPager.setCurrentItem(defaultCurrent); } public void setPageChangeListener(ViewPager.OnPageChangeListener listener) { this.mListener = listener; } - - private void initView() { - long time = System.currentTimeMillis(); - Log.e(TAG, "initView: start " + time); - mFragmentManager = getChildFragmentManager(); - mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); - mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setOnPageChangeListener(mListener); - main_sliding_tab_layout.setViewPager(mViewPager, title); - Log.e(TAG, "initView: end = " + (System.currentTimeMillis() - time)); - - } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java deleted file mode 100644 index 390e1ed..0000000 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserContact.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.uiui.zyos.fragment.user; - -import android.graphics.Bitmap; - -import com.uiui.zyos.base.mvp.BasePresenter; -import com.uiui.zyos.base.mvp.BaseView; -import com.uiui.zyos.bean.BaseResponse; -import com.uiui.zyos.bean.DesktopIcon; -import com.uiui.zyos.bean.SnInfo; -import com.uiui.zyos.bean.StudyStatBean; - -import java.util.ArrayList; - -public class UserContact { - public interface Presenter extends BasePresenter { - /*获取设备信息*/ - void getSnInfo(); - void getStudyStat(); - void getQrCode(); - void getInstalledApp(); - void getAppUsedStatistics(); - } - - public interface UserView extends BaseView { - void setSnInfo(BaseResponse response); - void setStudyStat(StudyStatBean studyStat); - void setQrCode(Bitmap bitmap); - void setInstalledApp( ArrayList desktopIcons); - void setAppUsedStatistics(long time); - } -} diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java index 71d1dfb..7fa57d4 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java @@ -11,32 +11,27 @@ import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; -import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; -import com.shehuan.niv.NiceImageView; import com.tencent.mmkv.MMKV; import com.uiui.zyos.R; import com.uiui.zyos.activity.ExitActivity; import com.uiui.zyos.activity.more.MoreAppActivity; import com.uiui.zyos.adapter.AppAdapter; -import com.uiui.zyos.base.BaseFragment; +import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment; import com.uiui.zyos.bean.BaseResponse; import com.uiui.zyos.bean.DesktopIcon; import com.uiui.zyos.bean.SnInfo; import com.uiui.zyos.bean.StudyStatBean; import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.databinding.FragmentUserBinding; import com.uiui.zyos.dialog.SingleDialog; import com.uiui.zyos.jxw.JxwPackageConfig; import com.uiui.zyos.utils.ApkUtils; @@ -48,73 +43,20 @@ import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; import java.util.ArrayList; import java.util.HashMap; -import butterknife.BindView; -import butterknife.ButterKnife; - /** * A simple {@link Fragment} subclass. * Use the {@link UserFragment#newInstance} factory method to * create an instance of this fragment. */ -public class UserFragment extends BaseFragment implements UserContact.UserView { - private static final String TAG = UserFragment.class.getSimpleName(); +public class UserFragment extends BaseMvvmFragment { + private static final String TAG = "UserFragment"; - @BindView(R.id.iv_avatar) - NiceImageView iv_avatar; - @BindView(R.id.tv_name) - TextView tv_name; - @BindView(R.id.tv_grade) - TextView tv_grade; - @BindView(R.id.tv_exit) - TextView tv_exit; - @BindView(R.id.iv_speaker) - ImageView iv_speaker; - @BindView(R.id.tv_notification) - TextView tv_notification; - @BindView(R.id.cl_nodata) - ConstraintLayout cl_nodata; - @BindView(R.id.cl_usedata) - ConstraintLayout cl_usedata; - @BindView(R.id.tv_percent) - TextView tv_percent; - @BindView(R.id.tv_activated) - TextView tv_activated; - @BindView(R.id.tv_activated2) - TextView tv_activated2; - @BindView(R.id.tv_applet) - TextView tv_applet; - @BindView(R.id.tv_duration) - TextView tv_duration; - @BindView(R.id.tv_date1) - TextView tv_date1; - @BindView(R.id.iv_applet_qrcode) - NiceImageView iv_applet_qrcode; - @BindView(R.id.iv_device_qrcode) - NiceImageView iv_device_qrcode; - @BindView(R.id.cl_app) - ConstraintLayout cl_app; - @BindView(R.id.tv_date2) - TextView tv_date2; - @BindView(R.id.cl_more) - ConstraintLayout cl_more; - @BindView(R.id.rv_app) - RecyclerView rv_app; - @BindView(R.id.iv_nodata) - ImageView iv_nodata; - @BindView(R.id.tv_activation) - TextView tv_activation; - @BindView(R.id.cl_bind_statu) - ConstraintLayout cl_bind_statu; - @BindView(R.id.iv_bind) - ImageView iv_bind; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + private FragmentActivity mContext; private AppAdapter mAppAdapter; - private UserPresenter mPresenter; - private View rootView; - private FragmentActivity mContext; - 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"; @@ -158,85 +100,65 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { } @Override - public void fetchData() { - Log.e(TAG, "fetchData: "); -// mPresenter.getInstalledApp(); -// mPresenter.getSnInfo(); + protected int getLayoutId() { + return R.layout.fragment_user; } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Log.e(TAG, "onCreateView: "); - if (null != rootView) { - ViewGroup parent = (ViewGroup) rootView.getParent(); - if (null != parent) { - parent.removeView(rootView); - } - } else { // 如ongoing果rootView为空 ,就实例化该视图 - rootView = inflater.inflate(R.layout.fragment_user, container, false); - mContext = (FragmentActivity) rootView.getContext(); - mPresenter = new UserPresenter(mContext); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); - ButterKnife.bind(this, rootView); - initView(); - } - return rootView; + protected void initDataBinding() { + mContext = getActivity(); + mViewModel.setCtx(getCtx()); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewModel.setVDBinding(mViewDataBinding); +// mViewDataBinding.setClick(new BtnClick()); } @Override - public void onDestroyView() { - super.onDestroyView(); - rootView = null; - } - - private void initView() { + protected void initView(Bundle bundle) { Log.e(TAG, "initView: "); - tv_notification.requestFocus(); - tv_activated2.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.tvNotification.requestFocus(); + mViewDataBinding.tvActivated2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); } }); - tv_activated.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.tvActivated.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_UPDATE_CLASS_NAME); } }); - tv_applet.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.tvApplet.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); } }); - iv_avatar.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); - iv_applet_qrcode.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); - iv_device_qrcode.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); + mViewDataBinding.ivAvatar.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); + mViewDataBinding.ivAppletQrcode.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); + mViewDataBinding.ivDeviceQrcode.setOnClickListener(view -> ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity")); registerOwnReceiver(); String name = mMMKV.decodeString("USERINFO_NAME", ""); if (TextUtils.isEmpty(name)) { - tv_name.setText(getString(R.string.default_nickname)); + mViewDataBinding.tvName.setText(getString(R.string.default_nickname)); } else { - tv_name.setText(name); + mViewDataBinding.tvName.setText(name); } String grade = mMMKV.decodeString("USERINFO_GRADE", ""); if (TextUtils.isEmpty(grade)) { - tv_grade.setText(getString(R.string.default_grade)); + mViewDataBinding.tvGrade.setText(getString(R.string.default_grade)); } else { - tv_grade.setText(grade); + mViewDataBinding.tvGrade.setText(grade); } int logined = mMMKV.decodeInt(CommonConfig.isLogined, 0); if (logined == 1) { - cl_nodata.setVisibility(View.GONE); - cl_usedata.setVisibility(View.VISIBLE); + mViewDataBinding.clNodata.setVisibility(View.GONE); + mViewDataBinding.clUsedata.setVisibility(View.VISIBLE); } setButtonVisibility(); - tv_exit.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.tvExit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent("Receiver_Refresh_Password_Action"); @@ -251,30 +173,30 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { } } }); - tv_activation.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.ivActivation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); } }); String avatar = mMMKV.decodeString("USERINFO_AVATAR", ""); - Glide.with(iv_avatar).load(avatar).error(R.drawable.default_avatar).into(iv_avatar); - tv_date1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); - tv_date2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); - cl_more.setOnClickListener(new View.OnClickListener() { + Glide.with(mViewDataBinding.ivAvatar).load(avatar).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar); + mViewDataBinding.tvDate1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); + mViewDataBinding.tvDate2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); + mViewDataBinding.clMore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(mContext, MoreAppActivity.class)); } }); - cl_bind_statu.setOnClickListener(new View.OnClickListener() { + mViewDataBinding.clBindStatu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); } }); - rv_app.setLayoutManager(new GridLayoutManager(mContext, 4)); + mViewDataBinding.rvApp.setLayoutManager(new GridLayoutManager(mContext, 4)); HashMap stringIntegerHashMap = new HashMap<>(); WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); @@ -284,9 +206,117 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 1));//底部间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 20));//左间距 stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 20));//右间距 - rv_app.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mViewDataBinding.rvApp.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); mAppAdapter = new AppAdapter(); - rv_app.setAdapter(mAppAdapter); + mViewDataBinding.rvApp.setAdapter(mAppAdapter); + } + + @Override + protected void initData(Bundle savedInstanceState) { + mViewModel.mSnInfoData.observe(this, new Observer>() { + @Override + public void onChanged(BaseResponse 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(snInfo.getStudy_time_ranking() + "%"); + mViewDataBinding.tvDuration.setText(String.format(getString(R.string.today_study_time), TimeUtils.formatTime(snInfo.getStudy_time()))); + + mViewDataBinding.clNodata.setVisibility(View.GONE); + mViewDataBinding.clUsedata.setVisibility(View.VISIBLE); + mViewDataBinding.ivBind.setVisibility(View.GONE); + break; + case 300: //设备没有绑定 + case 400://没有授权的设备 + case 403://设备归属不存在 + case 402://sn不存在 + mViewDataBinding.tvName.setText(getString(R.string.unbind)); + mViewDataBinding.tvGrade.setText(getString(R.string.notset)); + mViewDataBinding.clNodata.setVisibility(View.VISIBLE); + mViewDataBinding.clUsedata.setVisibility(View.GONE); + mViewDataBinding.ivBind.setVisibility(View.VISIBLE); + break; +// Toaster.show(getString(R.string.device_unauthorized)); +// Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); +// tvName.setText(getString(R.string.device_unauthorized)); +// tvGrade.setText(getString(R.string.device_unauthorized)); +// clNodata.setVisibility(View.GONE); +// clUsedata.setVisibility(View.GONE); +// break; + default: + } + } + setButtonVisibility(); + + mViewModel.getStudyStat(); + mViewModel.getQrCode(); + } + }); + + mViewModel.mStudyStatBeanData.observe(this, new Observer() { + @Override + public void onChanged(StudyStatBean studyStatBean) { + if (studyStatBean != null) { +// tv_percent.setText(studyStat.getStudy_exceed() + "%"); + } + } + }); + mViewModel.mQrCodeData.observe(this, new Observer() { + @Override + public void onChanged(Bitmap bitmap) { + mViewDataBinding.ivDeviceQrcode.setImageBitmap(bitmap); + } + }); + mViewModel.mDesktopListIconData.observe(this, new Observer>() { + @Override + public void onChanged(ArrayList 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() { + @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)); + } + }); + } + + @Override + public void fetchData() { + Log.e(TAG, "fetchData: "); +// mPresenter.getInstalledApp(); +// mPresenter.getSnInfo(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); } private void showSingleDialog() { @@ -338,16 +368,16 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); Log.e(TAG, "setButtonVisibility: " + is_activation); if (is_activation != 1) { -// tv_exit.setVisibility(View.VISIBLE); - tv_activation.setVisibility(View.VISIBLE); +// tvExit.setVisibility(View.VISIBLE); + mViewDataBinding.ivActivation.setVisibility(View.VISIBLE); } else { int isReturnAndroid = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_RETURN_ANDROID_KEY, 1); if (isReturnAndroid == 0) { -// tv_exit.setVisibility(View.INVISIBLE); +// tvExit.setVisibility(View.INVISIBLE); } else { -// tv_exit.setVisibility(View.VISIBLE); +// tvExit.setVisibility(View.VISIBLE); } - tv_activation.setVisibility(View.GONE); + mViewDataBinding.ivActivation.setVisibility(View.GONE); } } @@ -356,18 +386,19 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { super.setUserVisibleHint(isVisibleToUser); Log.e(TAG, "setUserVisibleHint: " + isVisibleToUser); if (isVisibleToUser && isViewInitiated) { - mPresenter.getInstalledApp(); - mPresenter.getSnInfo(); + mViewModel.getInstalledApp(); + mViewModel.getSnInfo(); setButtonVisibility(); } } + @Override public void onResume() { super.onResume(); Log.e(TAG, "onResume: "); setButtonVisibility(); - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } @Override @@ -377,92 +408,6 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { unregisterOwnReceiver(); } - @Override - public void setSnInfo(BaseResponse response) { - if (response != null) { - //设备已经绑定 - switch (response.code) { - case 200://设备已经绑定 - SnInfo snInfo = response.data; - Glide.with(iv_avatar).load(snInfo.getAvatar()).error(R.drawable.default_avatar).into(iv_avatar); - String name = snInfo.getSn_name(); - String grade = snInfo.getGrade(); - if (TextUtils.isEmpty(name)) { - tv_name.setText(getString(R.string.default_nickname)); - } else { - tv_name.setText(name); - } - if (TextUtils.isEmpty(grade)) { - tv_grade.setText(getString(R.string.default_grade)); - } else { - tv_grade.setText(grade); - } - tv_percent.setText(snInfo.getStudy_time_ranking() + "%"); - tv_duration.setText(String.format(getString(R.string.today_study_time), TimeUtils.formatTime(snInfo.getStudy_time()))); - - cl_nodata.setVisibility(View.GONE); - cl_usedata.setVisibility(View.VISIBLE); - iv_bind.setImageDrawable(mContext.getDrawable(R.drawable.icon_device_bind)); - break; - case 300: //设备没有绑定 - case 400://没有授权的设备 - case 403://设备归属不存在 - case 402://sn不存在 - tv_name.setText(getString(R.string.unbind)); - tv_grade.setText(getString(R.string.notset)); - cl_nodata.setVisibility(View.VISIBLE); - cl_usedata.setVisibility(View.GONE); - iv_bind.setImageDrawable(mContext.getDrawable(R.drawable.icon_device_unbind)); - break; -// Toaster.show(getString(R.string.device_unauthorized)); -// Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); -// tv_name.setText(getString(R.string.device_unauthorized)); -// tv_grade.setText(getString(R.string.device_unauthorized)); -// cl_nodata.setVisibility(View.GONE); -// cl_usedata.setVisibility(View.GONE); -// break; - default: - } - } - setButtonVisibility(); - - mPresenter.getStudyStat(); - mPresenter.getQrCode(); - } - - @Override - public void setStudyStat(StudyStatBean studyStat) { - if (studyStat != null) { -// tv_percent.setText(studyStat.getStudy_exceed() + "%"); - } - } - - @Override - public void setQrCode(Bitmap bitmap) { - iv_device_qrcode.setImageBitmap(bitmap); - } - - @Override - public void setInstalledApp(ArrayList desktopIcons) { - Log.e(TAG, "setInstalledApp: " + desktopIcons); - if (desktopIcons == null || desktopIcons.size() == 0) { - iv_nodata.setVisibility(View.VISIBLE); - rv_app.setVisibility(View.INVISIBLE); - } else { - iv_nodata.setVisibility(View.GONE); - rv_app.setVisibility(View.VISIBLE); - mAppAdapter.setDesktopIcons(desktopIcons); - } - mPresenter.getAppUsedStatistics(); - } - - @Override - public void setAppUsedStatistics(long time) { - Log.e(TAG, "setAppUsedStatistics: " + time); - String useTime = TimeUtils.formatTime(time); -// tv_duration.setText(String.format(getString(R.string.today_study_time), useTime)); - } - private void registerOwnReceiver() { registerTimeReceiver(); registerRefreshReceiver(); @@ -513,8 +458,8 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { case Intent.ACTION_TIME_CHANGED: case Intent.ACTION_TIMEZONE_CHANGED: case Intent.ACTION_TIME_TICK: - tv_date1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); - tv_date2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); + mViewDataBinding.tvDate1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); + mViewDataBinding.tvDate2.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); default: break; } @@ -540,7 +485,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { String action = intent.getAction(); Log.e("RefreshReceiver", "onReceive: " + action); if (ACTION_REFRESH_BINDING_STATUS.equals(action)) { - mPresenter.getSnInfo(); + mViewModel.getSnInfo(); setButtonVisibility(); } } @@ -570,7 +515,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { return; } if (UPDATE_DESKTOP_ICON_ACTION.equals(action)) { - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } } } @@ -600,7 +545,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { if (TextUtils.isEmpty(action)) { return; } - mPresenter.getInstalledApp(); + mViewModel.getInstalledApp(); } } diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserViewModel.java similarity index 74% rename from app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java rename to app/src/main/java/com/uiui/zyos/fragment/user/UserViewModel.java index 5ab1a10..08a8760 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserPresenter.java +++ b/app/src/main/java/com/uiui/zyos/fragment/user/UserViewModel.java @@ -1,23 +1,26 @@ package com.uiui.zyos.fragment.user; -import android.content.Context; 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.uiui.zyos.BuildConfig; import com.uiui.zyos.R; +import com.uiui.zyos.base.mvvm.BaseViewModel; import com.uiui.zyos.bean.AppUsed; import com.uiui.zyos.bean.BaseResponse; import com.uiui.zyos.bean.DesktopIcon; import com.uiui.zyos.bean.SnInfo; import com.uiui.zyos.bean.StudyStatBean; import com.uiui.zyos.config.CommonConfig; -import com.uiui.zyos.disklrucache.CacheHelper; +import com.uiui.zyos.databinding.FragmentUserBinding; import com.uiui.zyos.manager.AppManager; import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.network.NetInterfaceManager; @@ -35,40 +38,24 @@ import java.util.stream.Collectors; import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.subjects.BehaviorSubject; -public class UserPresenter implements UserContact.Presenter { - private static final String TAG = UserPresenter.class.getSimpleName(); - private UserContact.UserView mView; - private Context mContext; - private CacheHelper mCacheHelper; +public class UserViewModel extends BaseViewModel { + private static final String TAG = "UserViewModel"; - public UserPresenter(Context context) { - this.mContext = context; - this.mCacheHelper = new CacheHelper(context); - } + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; + @Override + public FragmentUserBinding getVDBinding() { + return binding; } @Override - public void attachView(@NonNull UserContact.UserView view) { - this.mView = view; + public void onDestroy() { + } - @Override - public void detachView() { - this.mView = null; - } + public MutableLiveData> mSnInfoData = new MutableLiveData<>(); - @Override public void getSnInfo() { NetInterfaceManager.getInstance().getSnInfo(getLifecycle(), new NetInterfaceManager.ObserverCallback() { @Override @@ -79,18 +66,18 @@ public class UserPresenter implements UserContact.Presenter { @Override public void onNext(BaseResponse response) { Log.e("getSnInfo", "onNext: " + response); - mView.setSnInfo(response); + mSnInfoData.setValue(response); } @Override public void onError(Throwable e) { Log.e("getSnInfo", "onError: " + e.getMessage()); - String jsonString = mCacheHelper.getAsString(UrlAddress.SNINFO); + String jsonString = mMMKV.decodeString(UrlAddress.SNINFO); Gson gson = new Gson(); Type type = new TypeToken>() { }.getType(); BaseResponse userInfoBaseResponse = gson.fromJson(jsonString, type); - mView.setSnInfo(userInfoBaseResponse); + mSnInfoData.setValue(userInfoBaseResponse); } @Override @@ -100,14 +87,15 @@ public class UserPresenter implements UserContact.Presenter { }); } - @Override + public MutableLiveData mStudyStatBeanData = new MutableLiveData<>(); + public void getStudyStat() { - boolean activation = ActivationUtil.isActivation(mContext); + boolean activation = ActivationUtil.isActivation(getCtx()); if (!activation) { return; } NetInterfaceManager.getInstance().getStudyStatObservable() - .compose(RxLifecycle.bindUntilEvent(lifecycle, FragmentEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) .subscribe(new Observer>() { @Override public void onSubscribe(@NonNull Disposable d) { @@ -117,11 +105,11 @@ public class UserPresenter implements UserContact.Presenter { @Override public void onNext(@NonNull BaseResponse studyStatBeanBaseResponse) { Log.e("getStudyStat", "onNext: " + studyStatBeanBaseResponse); - if (studyStatBeanBaseResponse.code==200){ + if (studyStatBeanBaseResponse.code == 200) { StudyStatBean studyStatBean = studyStatBeanBaseResponse.data; - mView.setStudyStat(studyStatBean); - }else { - mView.setStudyStat(null); + mStudyStatBeanData.setValue(studyStatBean); + } else { + mStudyStatBeanData.setValue(null); } } @@ -138,15 +126,17 @@ public class UserPresenter implements UserContact.Presenter { }); } - @Override + public MutableLiveData mQrCodeData = new MutableLiveData<>(); + public void getQrCode() { String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, RemoteManager.getInstance().getSerial()); Log.e("getQRCode", "setImageAndText: " + encryptString); Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400); - mView.setQrCode(bitmap); + mQrCodeData.setValue(bitmap); } - @Override + public MutableLiveData> mDesktopListIconData = new MutableLiveData<>(); + public void getInstalledApp() { ArrayList desktopIcons = AppManager.getInstance().getFilterAppList(); @@ -154,29 +144,30 @@ public class UserPresenter implements UserContact.Presenter { appstoreDesktopIcon.setLable("应用市场"); appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME); appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_CLASS_NAME); - appstoreDesktopIcon.setIcon(mContext.getDrawable(R.drawable.com_android_appstore)); + appstoreDesktopIcon.setIcon(getCtx().getDrawable(R.drawable.com_android_appstore)); desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon); DesktopIcon updateDesktopIcon = new DesktopIcon(); updateDesktopIcon.setLable("应用更新"); updateDesktopIcon.setPackageName(AppManager.UPDATE_NAME); - updateDesktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_update)); + 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(mContext.getDrawable(R.drawable.icon_add)); + desktopIcon.setIcon(getCtx().getDrawable(R.drawable.icon_add)); desktopIcons.add(desktopIcons.size(), desktopIcon); - mView.setInstalledApp(desktopIcons); + mDesktopListIconData.setValue(desktopIcons); } - @Override + public MutableLiveData mAppUsedData = new MutableLiveData<>(); + public void getAppUsedStatistics() { String jsonString = RemoteManager.getInstance().getAppUsedStatistics(); if (TextUtils.isEmpty(jsonString)) { - mView.setAppUsedStatistics(0); + mAppUsedData.setValue((long) 0); } else { Gson gson = new Gson(); Type listType = new TypeToken>() { @@ -192,10 +183,10 @@ public class UserPresenter implements UserContact.Presenter { } }).collect(Collectors.toList()); long time = appUseTime.stream().mapToLong(AppUsed::getUseTime).sum(); - mView.setAppUsedStatistics(time); + mAppUsedData.setValue(time); } catch (Exception e) { Log.e(TAG, "getAppUsedStatistics: " + e.getMessage()); - mView.setAppUsedStatistics(0); + mAppUsedData.setValue((long) 0); } } } diff --git a/app/src/main/java/com/uiui/zyos/iconpostition/IconPositionManager.java b/app/src/main/java/com/uiui/zyos/iconpostition/IconPositionManager.java index 88934ad..5a8f5cf 100644 --- a/app/src/main/java/com/uiui/zyos/iconpostition/IconPositionManager.java +++ b/app/src/main/java/com/uiui/zyos/iconpostition/IconPositionManager.java @@ -20,7 +20,7 @@ public class IconPositionManager { private IconPositionDBHelper mDBHelper; private static final String TABLE_NAME = "DesktopIcon"; - private static String TAG = IconPositionManager.class.getSimpleName(); + private static final String TAG = "IconPositionManager"; private IconPositionManager(Context context) { if (context == null) { diff --git a/app/src/main/java/com/uiui/zyos/manager/AmapManager.java b/app/src/main/java/com/uiui/zyos/manager/AmapManager.java index 1029afd..01caffb 100644 --- a/app/src/main/java/com/uiui/zyos/manager/AmapManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/AmapManager.java @@ -27,7 +27,7 @@ import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; public class AmapManager { - private static final String TAG = AmapManager.class.getSimpleName(); + private static final String TAG = "AmapManager"; MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); diff --git a/app/src/main/java/com/uiui/zyos/manager/AppManager.java b/app/src/main/java/com/uiui/zyos/manager/AppManager.java index 1c8bd86..808cd77 100644 --- a/app/src/main/java/com/uiui/zyos/manager/AppManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/AppManager.java @@ -27,7 +27,7 @@ import java.util.function.Function; import java.util.stream.Collectors; public class AppManager { - private static final String TAG = AppManager.class.getSimpleName(); + private static final String TAG = "AppManager"; public static final String ADD_NAME = "com.zyos.add"; public static final String APPSTORE_PACKAGE_NAME = "com.uiui.zyappstore"; diff --git a/app/src/main/java/com/uiui/zyos/manager/ConnectManager.java b/app/src/main/java/com/uiui/zyos/manager/ConnectManager.java index 4113ba8..7f16854 100644 --- a/app/src/main/java/com/uiui/zyos/manager/ConnectManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/ConnectManager.java @@ -9,7 +9,7 @@ import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.utils.TimeUtils; public class ConnectManager { - private static final String TAG = ConnectManager.class.getSimpleName(); + private static final String TAG = "ConnectManager"; public static final long ONE_MINUTES_TIME = 60 * 1000; diff --git a/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java b/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java index cffdb49..6a354db 100644 --- a/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java @@ -14,22 +14,18 @@ import android.util.Log; import com.alibaba.sdk.android.push.CloudPushService; import com.alibaba.sdk.android.push.CommonCallback; import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; import com.tencent.bugly.crashreport.CrashReport; import com.tencent.mmkv.MMKV; import com.uiui.zy.IGetInfoInterface; -import com.uiui.zyos.bean.MapBean; import com.uiui.zyos.config.CommonConfig; -import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class RemoteManager { - private static final String TAG = RemoteManager.class.getSimpleName(); + private static final String TAG = "RemoteManager"; @SuppressLint("StaticFieldLeak") private static RemoteManager sInstance; @@ -58,7 +54,7 @@ public class RemoteManager { mGetInfoInterface = IGetInfoInterface.Stub.asInterface(service); mServiceConnected = true; for (ConnectedListener listener : mListeners) { - listener.onConnected(); + listener.onRemoteConnected(); } try { String sn = mGetInfoInterface.getSerial(); @@ -118,7 +114,7 @@ public class RemoteManager { } public interface ConnectedListener { - void onConnected(); + void onRemoteConnected(); } private static Set mListeners = new HashSet<>(); @@ -126,7 +122,7 @@ public class RemoteManager { public static void setListener(ConnectedListener listener) { mListeners.add(listener); if (mServiceConnected) { - listener.onConnected(); + listener.onRemoteConnected(); } } diff --git a/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java index f379a5c..1e1fff7 100644 --- a/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java @@ -14,6 +14,7 @@ import com.trello.rxlifecycle4.android.FragmentEvent; import com.uiui.zyos.alarm.AlarmUtils; import com.uiui.zyos.bean.AlarmClockData; import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.bean.GuideBean; import com.uiui.zyos.bean.LessonApp; import com.uiui.zyos.bean.LessonJson; import com.uiui.zyos.bean.LessonSetting; @@ -28,6 +29,7 @@ import com.uiui.zyos.network.api.AlarmClockApi; import com.uiui.zyos.network.api.AppUsageRecordApi; import com.uiui.zyos.network.api.CloudLessonApi; import com.uiui.zyos.network.api.CloudLessonAppApi; +import com.uiui.zyos.network.api.GetFilesApi; import com.uiui.zyos.network.api.RunNewApp; import com.uiui.zyos.network.api.SNInfoApi; import com.uiui.zyos.network.api.StudyStatApi; @@ -60,6 +62,8 @@ import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; public class NetInterfaceManager { + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + @SuppressLint("StaticFieldLeak") private static NetInterfaceManager INSTANCE; private Context mContext; @@ -67,7 +71,6 @@ public class NetInterfaceManager { private Retrofit mRetrofit; private OkHttpClient okHttpClient; - private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); //超时时间 @@ -224,6 +227,12 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable> getFilesObservable(int type) { + return mRetrofit.create(GetFilesApi.class) + .getFiles(type) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } /* * @@ -300,7 +309,7 @@ public class NetInterfaceManager { if (callback != null) { callback.onNext(userInfoBaseResponse); } - mCacheHelper.put(UrlAddress.SNINFO, GsonUtils.toJSONString(userInfoBaseResponse)); + mMMKV.encode(UrlAddress.SNINFO, GsonUtils.toJSONString(userInfoBaseResponse)); int code = userInfoBaseResponse.code; if (userInfoBaseResponse.code == 200) { mMMKV.encode(CommonConfig.isLogined, 1); @@ -319,13 +328,13 @@ public class NetInterfaceManager { mMMKV.encode("USERINFO_AVATAR", snInfo.getGrade()); } } else if (code == 300) { - mCacheHelper.put(UrlAddress.SNINFO, ""); + mMMKV.encode(UrlAddress.SNINFO, ""); mMMKV.encode(CommonConfig.isLogined, 0); } else if (code == 400) { - mCacheHelper.put(UrlAddress.SNINFO, ""); + mMMKV.encode(UrlAddress.SNINFO, ""); mMMKV.encode(CommonConfig.isLogined, 2); } else { - mCacheHelper.put(UrlAddress.SNINFO, ""); + mMMKV.encode(UrlAddress.SNINFO, ""); mMMKV.encode(CommonConfig.isLogined, 0); } } diff --git a/app/src/main/java/com/uiui/zyos/network/UrlAddress.java b/app/src/main/java/com/uiui/zyos/network/UrlAddress.java index 87e8092..9a4c0bc 100644 --- a/app/src/main/java/com/uiui/zyos/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/zyos/network/UrlAddress.java @@ -21,6 +21,8 @@ public class UrlAddress { /*爱心提醒通知成功*/ public static final String UPDATE_ALARM_CLOCK = "updateAlarmClock"; + /*获取文件*/ + public static final String GET_FILES = "file/getFiles"; /*网课模式*/ public final static String GET_CLOUD_LESSON = "Control/getCloudLessonSetting"; diff --git a/app/src/main/java/com/uiui/zyos/network/api/GetFilesApi.java b/app/src/main/java/com/uiui/zyos/network/api/GetFilesApi.java new file mode 100644 index 0000000..e480520 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/network/api/GetFilesApi.java @@ -0,0 +1,16 @@ +package com.uiui.zyos.network.api; + +import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.bean.GuideBean; +import com.uiui.zyos.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface GetFilesApi { + @GET(UrlAddress.GET_FILES) + Observable> getFiles( + @Query("type") int type + ); +} diff --git a/app/src/main/java/com/uiui/zyos/network/interceptor/RepeatRequestInterceptor.java b/app/src/main/java/com/uiui/zyos/network/interceptor/RepeatRequestInterceptor.java index cd501ac..e7ca7c9 100644 --- a/app/src/main/java/com/uiui/zyos/network/interceptor/RepeatRequestInterceptor.java +++ b/app/src/main/java/com/uiui/zyos/network/interceptor/RepeatRequestInterceptor.java @@ -22,7 +22,7 @@ import okio.Buffer; * v1.0 2022-07-15 16:16:52 */ public class RepeatRequestInterceptor implements Interceptor { - private static final String TAG = RepeatRequestInterceptor.class.getSimpleName(); + private static final String TAG = "RepeatRequestInterceptor"; private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); public static final String REPEAT_REQUEST_PROTOCOL = "OKHTTP_REPEAT_REQUEST_PROTOCOL"; @@ -39,7 +39,7 @@ public class RepeatRequestInterceptor implements Interceptor { // Response copy = response.newBuilder().body(responseBody).build(); ResponseBody copy = ResponseBody.create(responseBody.contentType(), content); if (BuildConfig.DEBUG) { -// Log.e(TAG, "请求体返回:| Response: " + request.url().encodedPath() + "\t body: " + content); + Log.e(TAG, "请求体返回:| Response: " + request.url() + "\t body: " + content); } //相同的请求 String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + requestBodyToString(request.body())); diff --git a/app/src/main/java/com/uiui/zyos/push/PushManager.java b/app/src/main/java/com/uiui/zyos/push/PushManager.java index 4ce1821..0845048 100644 --- a/app/src/main/java/com/uiui/zyos/push/PushManager.java +++ b/app/src/main/java/com/uiui/zyos/push/PushManager.java @@ -10,7 +10,7 @@ import com.uiui.zyos.network.NetInterfaceManager; import com.hjq.toast.Toaster; public class PushManager { - private static final String TAG = PushManager.class.getSimpleName(); + private static final String TAG = "PushManager"; public static final String SET_ALARMCLOCK = "zuoyeos.action.change.alarmclaock"; diff --git a/app/src/main/java/com/uiui/zyos/push/alipush/AliMessageIntentService.java b/app/src/main/java/com/uiui/zyos/push/alipush/AliMessageIntentService.java index 892f198..58efb67 100644 --- a/app/src/main/java/com/uiui/zyos/push/alipush/AliMessageIntentService.java +++ b/app/src/main/java/com/uiui/zyos/push/alipush/AliMessageIntentService.java @@ -18,7 +18,7 @@ import java.util.Map; */ public class AliMessageIntentService extends AliyunMessageIntentService { - private static final String TAG = AliyunMessageIntentService.class.getSimpleName(); + private static final String TAG = "AliyunMessageIntentService"; /** * 推送通知的回调方法 diff --git a/app/src/main/java/com/uiui/zyos/push/alipush/AliyunMessageReceiver.java b/app/src/main/java/com/uiui/zyos/push/alipush/AliyunMessageReceiver.java index 9278c24..3375092 100644 --- a/app/src/main/java/com/uiui/zyos/push/alipush/AliyunMessageReceiver.java +++ b/app/src/main/java/com/uiui/zyos/push/alipush/AliyunMessageReceiver.java @@ -19,7 +19,7 @@ import java.util.Map; */ public class AliyunMessageReceiver extends MessageReceiver { // 消息接收部分的LOG_TAG - public static final String TAG = AliyunMessageReceiver.class.getSimpleName(); + public static final String TAG = "AliyunMessageReceiver"; /** * 推送通知的回调方法 diff --git a/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java b/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java index 8be6ee1..0703c4c 100644 --- a/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java +++ b/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java @@ -9,7 +9,7 @@ import com.uiui.zyos.fragment.user.UserFragment; public class APKinstallReceiver extends BroadcastReceiver { - private static final String TAG = APKinstallReceiver.class.getSimpleName(); + private static final String TAG = "APKinstallReceiver"; @Override public void onReceive(final Context context, Intent intent) { diff --git a/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java b/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java index a20534b..a43c30e 100644 --- a/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java +++ b/app/src/main/java/com/uiui/zyos/receiver/BootReceiver.java @@ -15,7 +15,7 @@ import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; public class BootReceiver extends BroadcastReceiver { - private static final String TAG = BootReceiver.class.getSimpleName(); + private static final String TAG = "BootReceiver"; public static final String BOOT_COMPLETED = "zuoyeos.action.BOOT_COMPLETED"; public static final String SOS = "zyos.action.SOS"; diff --git a/app/src/main/java/com/uiui/zyos/service/DownloadService.java b/app/src/main/java/com/uiui/zyos/service/DownloadService.java index 9b001f0..cc70e8e 100644 --- a/app/src/main/java/com/uiui/zyos/service/DownloadService.java +++ b/app/src/main/java/com/uiui/zyos/service/DownloadService.java @@ -10,7 +10,7 @@ import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.task.DownloadTask; public class DownloadService extends Service { - private static final String TAG = DownloadService.class.getSimpleName(); + private static final String TAG = "DownloadService"; public DownloadService() { } diff --git a/app/src/main/java/com/uiui/zyos/service/NotificationService.java b/app/src/main/java/com/uiui/zyos/service/NotificationService.java index cd90e17..b6c6204 100644 --- a/app/src/main/java/com/uiui/zyos/service/NotificationService.java +++ b/app/src/main/java/com/uiui/zyos/service/NotificationService.java @@ -14,7 +14,7 @@ import java.util.Set; * @author TT */ public class NotificationService extends NotificationListenerService { - private static final String TAG = NotificationService.class.getSimpleName(); + private static final String TAG = "NotificationService"; private static HashMap> notificationMap = new HashMap>(); private static Set mListener = new HashSet(); diff --git a/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java b/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java index b748941..f6d99c3 100644 --- a/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java +++ b/app/src/main/java/com/uiui/zyos/service/main/MainSContact.java @@ -10,12 +10,9 @@ public class MainSContact { public interface Presenter extends BasePresenter { /*获取网课模式*/ void getCloudLessonSettings(); - /*获取闹钟*/ - void getAlarmClock(); } public interface MainSView extends BaseView { void setCloudLessonSettings(); - void setAlarmClock(List dataList); } } diff --git a/app/src/main/java/com/uiui/zyos/service/main/MainSPresenter.java b/app/src/main/java/com/uiui/zyos/service/main/MainSPresenter.java index a419579..56bf0a1 100644 --- a/app/src/main/java/com/uiui/zyos/service/main/MainSPresenter.java +++ b/app/src/main/java/com/uiui/zyos/service/main/MainSPresenter.java @@ -20,7 +20,7 @@ import io.reactivex.rxjava3.subjects.BehaviorSubject; * @author jgy02 */ public class MainSPresenter implements MainSContact.Presenter { - private static final String TAG = MainSPresenter.class.getSimpleName(); + private static final String TAG = "MainSPresenter"; private static final int OK = 200; private MainSContact.MainSView mView; private Context mContext; @@ -61,7 +61,6 @@ public class MainSPresenter implements MainSContact.Presenter { }); } - @Override public void getAlarmClock() { NetInterfaceManager.getInstance().getAlarmClock(true, getLifecycle(), new NetInterfaceManager.AlarmClockCallback() { @Override diff --git a/app/src/main/java/com/uiui/zyos/service/main/MainService.java b/app/src/main/java/com/uiui/zyos/service/main/MainService.java index ea63180..10a75aa 100644 --- a/app/src/main/java/com/uiui/zyos/service/main/MainService.java +++ b/app/src/main/java/com/uiui/zyos/service/main/MainService.java @@ -20,7 +20,7 @@ import java.util.HashMap; import java.util.List; public class MainService extends BaseRxService implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener { - private static final String TAG = MainService.class.getSimpleName(); + private static final String TAG = "MainService"; public MainSPresenter mPresenter; @@ -154,11 +154,7 @@ public class MainService extends BaseRxService implements MainSContact.MainSView @Override public void setCloudLessonSettings() { -// mPresenter.getAlarmClock(); - } - - @Override - public void setAlarmClock(List dataList) { } + } diff --git a/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java b/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java index 48975f1..39a9ebe 100644 --- a/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java @@ -100,7 +100,7 @@ public class ApkUtils { // this.add("com.android.settings"); this.add("com.android.messaging"); this.add("com.android.camera2"); - this.add("com.android.mms"); +// this.add("com.android.mms"); // this.add("com.uiui.city"); // this.add("com.android.fmradio"); // this.add("com.android.documentsui"); @@ -126,7 +126,7 @@ public class ApkUtils { public static final String ANDROID_LAUNCHER3_CLASS_NAME = "com.android.launcher3.Launcher"; public static final String ANDROID_LAUNCHER3_Quickstep_CLASS_NAME = "com.android.launcher3.uioverrides.QuickstepLauncher"; - private static String TAG = ApkUtils.class.getSimpleName(); + private static final String TAG = "ApkUtils"; public static ArrayList getSystemApp(Context context) { PackageManager pm = context.getPackageManager(); diff --git a/app/src/main/java/com/uiui/zyos/utils/AppUsedTimeUtils.java b/app/src/main/java/com/uiui/zyos/utils/AppUsedTimeUtils.java index 7047ce0..03e108c 100644 --- a/app/src/main/java/com/uiui/zyos/utils/AppUsedTimeUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/AppUsedTimeUtils.java @@ -27,7 +27,7 @@ import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; public class AppUsedTimeUtils { - private static final String TAG = AppUsedTimeUtils.class.getSimpleName(); + private static final String TAG = "AppUsedTimeUtils"; @SuppressLint("StaticFieldLeak") private static AppUsedTimeUtils sInstance; diff --git a/app/src/main/java/com/uiui/zyos/utils/ForegroundAppUtil.java b/app/src/main/java/com/uiui/zyos/utils/ForegroundAppUtil.java index 133533d..6f22f30 100644 --- a/app/src/main/java/com/uiui/zyos/utils/ForegroundAppUtil.java +++ b/app/src/main/java/com/uiui/zyos/utils/ForegroundAppUtil.java @@ -18,7 +18,7 @@ public class ForegroundAppUtil { private static final long START_TIME = END_TIME - TIME_INTERVAL; public static final String TOPAPP_KEY = "TOP_ALWAYS_SHOW_APP_NAME"; - private static String TAG = ForegroundAppUtil.class.getSimpleName(); + private static final String TAG = "ForegroundAppUtil"; public static String getForegroundPackageName(Context context) { //系统应用可以直接获取 diff --git a/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java b/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java index e504544..cb2c64f 100644 --- a/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java @@ -16,7 +16,7 @@ import com.bumptech.glide.Glide; * Created by Li_Xavier on 2017/6/20 0020. */ public class GlideLoadUtils { - private String TAG = "ImageLoader"; + private static final String TAG = "ImageLoader"; /** * 借助内部类 实现线程安全的单例模式 diff --git a/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java b/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java index 58d99b5..bb7e54b 100644 --- a/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java @@ -27,7 +27,7 @@ import java.util.Set; import java.util.function.BiConsumer; public class OpenApkUtils { - private static final String TAG = OpenApkUtils.class.getSimpleName(); + private static final String TAG = "OpenApkUtils"; @SuppressLint("StaticFieldLeak") private static OpenApkUtils sInstance; diff --git a/app/src/main/java/com/uiui/zyos/utils/TimeUtils.java b/app/src/main/java/com/uiui/zyos/utils/TimeUtils.java index d6f43be..ea39365 100644 --- a/app/src/main/java/com/uiui/zyos/utils/TimeUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/TimeUtils.java @@ -19,7 +19,7 @@ import java.util.Date; import java.util.Locale; public class TimeUtils { - private static final String TAG = TimeUtils.class.getSimpleName(); + private static final String TAG = "TimeUtils"; private static DateFormat df = new SimpleDateFormat("HH:mm", Locale.getDefault()); diff --git a/app/src/main/java/com/uiui/zyos/utils/Utils.java b/app/src/main/java/com/uiui/zyos/utils/Utils.java index 2a44c4a..b7ad482 100644 --- a/app/src/main/java/com/uiui/zyos/utils/Utils.java +++ b/app/src/main/java/com/uiui/zyos/utils/Utils.java @@ -37,7 +37,7 @@ import java.util.HashMap; import java.util.Map; public class Utils { - private static final String TAG = Utils.class.getSimpleName(); + private static final String TAG = "Utils"; /** * 获取设备序列号 diff --git a/app/src/main/java/com/uiui/zyos/view/GridSpaceItemDecoration.java b/app/src/main/java/com/uiui/zyos/view/GridSpaceItemDecoration.java index 9b2fdc4..b8c22b9 100644 --- a/app/src/main/java/com/uiui/zyos/view/GridSpaceItemDecoration.java +++ b/app/src/main/java/com/uiui/zyos/view/GridSpaceItemDecoration.java @@ -21,8 +21,7 @@ import androidx.recyclerview.widget.RecyclerView; * 创建时间 : 2020/3/19 4:54 PM */ public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration { - - private final String TAG = "GridSpaceItemDecoration"; + private static final String TAG = "GridSpaceItemDecoration"; private int mSpanCount;//横条目数量 private int mRowSpacing;//行间距 diff --git a/app/src/main/java/com/uiui/zyos/view/MyGridLayout.java b/app/src/main/java/com/uiui/zyos/view/MyGridLayout.java index 3589b38..163f9f0 100644 --- a/app/src/main/java/com/uiui/zyos/view/MyGridLayout.java +++ b/app/src/main/java/com/uiui/zyos/view/MyGridLayout.java @@ -27,7 +27,7 @@ public class MyGridLayout extends ViewGroup { int count = 0; private GridAdatper adapter; - private String TAG = MyGridLayout.class.getSimpleName(); + private static final String TAG = "MyGridLayout"; @SuppressLint("Recycle") public MyGridLayout(Context context, AttributeSet attrs, int defStyle) { diff --git a/app/src/main/res/drawable-hdpi/default_avatar.png b/app/src/main/res/drawable-hdpi/default_avatar.png index 681459c..37ccb6f 100644 Binary files a/app/src/main/res/drawable-hdpi/default_avatar.png and b/app/src/main/res/drawable-hdpi/default_avatar.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_activition_bind.png b/app/src/main/res/drawable-hdpi/icon_activition_bind.png new file mode 100644 index 0000000..a0ccd7d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_activition_bind.png differ diff --git a/app/src/main/res/drawable-xhdpi/user_app_box.png b/app/src/main/res/drawable-xhdpi/user_app_box.png index 996da07..ca69e2e 100644 Binary files a/app/src/main/res/drawable-xhdpi/user_app_box.png and b/app/src/main/res/drawable-xhdpi/user_app_box.png differ diff --git a/app/src/main/res/drawable-xhdpi/user_center_box.png b/app/src/main/res/drawable-xhdpi/user_center_box.png index 85e7f9b..6feb804 100644 Binary files a/app/src/main/res/drawable-xhdpi/user_center_box.png and b/app/src/main/res/drawable-xhdpi/user_center_box.png differ diff --git a/app/src/main/res/drawable-xhdpi/user_more.png b/app/src/main/res/drawable-xhdpi/user_more.png index 5c9d654..9afa766 100644 Binary files a/app/src/main/res/drawable-xhdpi/user_more.png and b/app/src/main/res/drawable-xhdpi/user_more.png differ diff --git a/app/src/main/res/drawable/tv_bind_background.xml b/app/src/main/res/drawable/tv_bind_background.xml new file mode 100644 index 0000000..7d06de3 --- /dev/null +++ b/app/src/main/res/drawable/tv_bind_background.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_exit.xml b/app/src/main/res/layout-land/activity_exit.xml index 41756d9..660539a 100644 --- a/app/src/main/res/layout-land/activity_exit.xml +++ b/app/src/main/res/layout-land/activity_exit.xml @@ -1,236 +1,243 @@ - - + + + + android:layout_height="match_parent" + android:background="@drawable/control_background"> - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.03" /> - - - + + + + + + + + + + app:layout_constraintStart_toStartOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout-land/fragment_app.xml b/app/src/main/res/layout-land/fragment_app.xml index e5486c8..1d422b2 100644 --- a/app/src/main/res/layout-land/fragment_app.xml +++ b/app/src/main/res/layout-land/fragment_app.xml @@ -1,45 +1,52 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> - - - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_ar_study.xml b/app/src/main/res/layout-land/fragment_ar_study.xml index a62d91a..2360286 100644 --- a/app/src/main/res/layout-land/fragment_ar_study.xml +++ b/app/src/main/res/layout-land/fragment_ar_study.xml @@ -1,86 +1,93 @@ - - + + + + - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> + android:id="@+id/constraintLayout3" + android:layout_width="@dimen/dp_359" + android:layout_height="@dimen/dp_210" + android:background="@drawable/ar_box" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_biology.xml b/app/src/main/res/layout-land/fragment_biology.xml index b13d959..7935c7a 100644 --- a/app/src/main/res/layout-land/fragment_biology.xml +++ b/app/src/main/res/layout-land/fragment_biology.xml @@ -1,137 +1,144 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.5" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_chemical.xml b/app/src/main/res/layout-land/fragment_chemical.xml index d361a3d..5108986 100644 --- a/app/src/main/res/layout-land/fragment_chemical.xml +++ b/app/src/main/res/layout-land/fragment_chemical.xml @@ -1,137 +1,144 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_chinese.xml b/app/src/main/res/layout-land/fragment_chinese.xml index 99b5e94..efcf6e3 100644 --- a/app/src/main/res/layout-land/fragment_chinese.xml +++ b/app/src/main/res/layout-land/fragment_chinese.xml @@ -1,465 +1,472 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - - - - - + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/constraintLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> - + + - + + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - - - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_complex.xml b/app/src/main/res/layout-land/fragment_complex.xml index 71a0340..ab157b3 100644 --- a/app/src/main/res/layout-land/fragment_complex.xml +++ b/app/src/main/res/layout-land/fragment_complex.xml @@ -1,442 +1,449 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_english.xml b/app/src/main/res/layout-land/fragment_english.xml index 3efc02a..186403a 100644 --- a/app/src/main/res/layout-land/fragment_english.xml +++ b/app/src/main/res/layout-land/fragment_english.xml @@ -1,159 +1,166 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - - + - + + + + + + + + - - - + android:layout_width="wrap_content" + android:layout_height="0dp" + android:layout_marginStart="@dimen/dp_9" + app:layout_constraintBottom_toBottomOf="@+id/constraintLayout3" + app:layout_constraintStart_toEndOf="@+id/constraintLayout3" + app:layout_constraintTop_toTopOf="@+id/constraintLayout3"> - + app:layout_constraintTop_toTopOf="parent"> - + - + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_main.xml b/app/src/main/res/layout-land/fragment_main.xml index 337781a..eb71b5e 100644 --- a/app/src/main/res/layout-land/fragment_main.xml +++ b/app/src/main/res/layout-land/fragment_main.xml @@ -1,297 +1,304 @@ - - + + + + - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent" /> - + - + - + + - + android:layout_height="match_parent"> - + - + + - - + android:layout_height="match_parent"> - + - + + - - + android:layout_height="match_parent"> - + - + + - - + android:layout_height="match_parent"> - + - + + - - + android:layout_height="match_parent"> - + - + + - - + android:layout_height="match_parent"> - + - + + - - + android:layout_height="match_parent"> - + - + + - - - + android:layout_height="match_parent"> + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_math.xml b/app/src/main/res/layout-land/fragment_math.xml index b1706b8..8e0d595 100644 --- a/app/src/main/res/layout-land/fragment_math.xml +++ b/app/src/main/res/layout-land/fragment_math.xml @@ -1,418 +1,425 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - - - + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/constraintLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> - - + + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + + + + + - + + android:id="@+id/cl_tutoring" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + app:layout_constraintTop_toTopOf="parent"> + + + - - - + android:id="@+id/cl_near_antonyms" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + app:layout_constraintTop_toTopOf="parent"> + + + - - - + android:id="@+id/cl_composition" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + - - - + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_physics.xml b/app/src/main/res/layout-land/fragment_physics.xml index 8a2b22d..007090c 100644 --- a/app/src/main/res/layout-land/fragment_physics.xml +++ b/app/src/main/res/layout-land/fragment_physics.xml @@ -1,136 +1,143 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_subject.xml b/app/src/main/res/layout-land/fragment_subject.xml index a480125..7e1cf5d 100644 --- a/app/src/main/res/layout-land/fragment_subject.xml +++ b/app/src/main/res/layout-land/fragment_subject.xml @@ -1,38 +1,45 @@ - - + + + + - + android:layout_height="match_parent"> - - - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_user.xml b/app/src/main/res/layout-land/fragment_user.xml index bedc29f..090f723 100644 --- a/app/src/main/res/layout-land/fragment_user.xml +++ b/app/src/main/res/layout-land/fragment_user.xml @@ -1,535 +1,538 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + - - - - - - - - - - - + android:textSize="@dimen/sp_10" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/constraintLayout5" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.476" /> - + android:ellipsize="marquee" + android:focusable="true" + android:focusableInTouchMode="true" + android:marqueeRepeatLimit="marquee_forever" + android:singleLine="true" + android:text="@string/tips" + android:textColor="@color/lightGray" + android:textSize="@dimen/sp_8" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/iv_speaker" + app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:id="@+id/constraintLayout" + android:layout_width="@dimen/dp_205" + android:layout_height="@dimen/dp_211" + android:background="@drawable/user_center_box" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/cl_nodata" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tv_date1" /> + + + + + + + + + + + + + - + android:layout_height="match_parent" + android:visibility="gone"> - + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/activity_exit.xml b/app/src/main/res/layout-sw800dp/activity_exit.xml index 41756d9..660539a 100644 --- a/app/src/main/res/layout-sw800dp/activity_exit.xml +++ b/app/src/main/res/layout-sw800dp/activity_exit.xml @@ -1,236 +1,243 @@ - - + + + + android:layout_height="match_parent" + android:background="@drawable/control_background"> - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.03" /> - - - + + + + + + + + + + app:layout_constraintStart_toStartOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout-sw800dp/activity_main.xml b/app/src/main/res/layout-sw800dp/activity_main.xml index 0256130..b67d172 100644 --- a/app/src/main/res/layout-sw800dp/activity_main.xml +++ b/app/src/main/res/layout-sw800dp/activity_main.xml @@ -1,356 +1,372 @@ - - + + + + + - - - - - - + android:layout_height="match_parent" + android:background="@drawable/main_background"> + android:layout_width="match_parent" + android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + android:layout_marginBottom="@dimen/dp_2" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + android:onClick="@{click::openAppStore}"> - + + + + + - + android:layout_height="match_parent" + android:visibility="gone"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_biology.xml b/app/src/main/res/layout-sw800dp/fragment_biology.xml index 61ed1d8..0c62ada 100644 --- a/app/src/main/res/layout-sw800dp/fragment_biology.xml +++ b/app/src/main/res/layout-sw800dp/fragment_biology.xml @@ -1,137 +1,144 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.5" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_chemical.xml b/app/src/main/res/layout-sw800dp/fragment_chemical.xml index de08a92..ac7246f 100644 --- a/app/src/main/res/layout-sw800dp/fragment_chemical.xml +++ b/app/src/main/res/layout-sw800dp/fragment_chemical.xml @@ -1,137 +1,144 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_chinese.xml b/app/src/main/res/layout-sw800dp/fragment_chinese.xml index be2d9ef..cb40018 100644 --- a/app/src/main/res/layout-sw800dp/fragment_chinese.xml +++ b/app/src/main/res/layout-sw800dp/fragment_chinese.xml @@ -1,465 +1,472 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - - - - - + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/constraintLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> - + + - + + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - - - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_complex.xml b/app/src/main/res/layout-sw800dp/fragment_complex.xml index e6bf6a5..3dac0e3 100644 --- a/app/src/main/res/layout-sw800dp/fragment_complex.xml +++ b/app/src/main/res/layout-sw800dp/fragment_complex.xml @@ -1,442 +1,449 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_english.xml b/app/src/main/res/layout-sw800dp/fragment_english.xml index 8190bc9..8db11dc 100644 --- a/app/src/main/res/layout-sw800dp/fragment_english.xml +++ b/app/src/main/res/layout-sw800dp/fragment_english.xml @@ -1,159 +1,166 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - - + - + + + + + + + + - - - + android:layout_width="wrap_content" + android:layout_height="0dp" + android:layout_marginStart="@dimen/dp_8" + app:layout_constraintBottom_toBottomOf="@+id/constraintLayout3" + app:layout_constraintStart_toEndOf="@+id/constraintLayout3" + app:layout_constraintTop_toTopOf="@+id/constraintLayout3"> - + app:layout_constraintTop_toTopOf="parent"> - + - + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_math.xml b/app/src/main/res/layout-sw800dp/fragment_math.xml index f6b3f2c..bff6825 100644 --- a/app/src/main/res/layout-sw800dp/fragment_math.xml +++ b/app/src/main/res/layout-sw800dp/fragment_math.xml @@ -1,417 +1,424 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - - - + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/constraintLayout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> - - + + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + + + + + - + + android:id="@+id/cl_tutoring" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + app:layout_constraintTop_toTopOf="parent"> + + + - - - + android:id="@+id/cl_near_antonyms" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + app:layout_constraintTop_toTopOf="parent"> + + + - - - + android:id="@+id/cl_composition" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + - - - + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_physics.xml b/app/src/main/res/layout-sw800dp/fragment_physics.xml index d575c96..ea9de86 100644 --- a/app/src/main/res/layout-sw800dp/fragment_physics.xml +++ b/app/src/main/res/layout-sw800dp/fragment_physics.xml @@ -1,136 +1,143 @@ - - + + + + - - - - - - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_subject.xml b/app/src/main/res/layout-sw800dp/fragment_subject.xml index d922469..dfc1b27 100644 --- a/app/src/main/res/layout-sw800dp/fragment_subject.xml +++ b/app/src/main/res/layout-sw800dp/fragment_subject.xml @@ -1,38 +1,45 @@ - - + + + + - + android:layout_height="match_parent"> - - - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_user.xml b/app/src/main/res/layout-sw800dp/fragment_user.xml index 30aed0f..45f6f89 100644 --- a/app/src/main/res/layout-sw800dp/fragment_user.xml +++ b/app/src/main/res/layout-sw800dp/fragment_user.xml @@ -1,536 +1,540 @@ - - + + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + - - - - - - - - - - - + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/constraintLayout5" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.476" /> - + android:ellipsize="marquee" + android:focusable="true" + android:focusableInTouchMode="true" + android:marqueeRepeatLimit="marquee_forever" + android:singleLine="true" + android:text="@string/tips" + android:textColor="@color/lightGray" + android:textSize="@dimen/sp_8" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/iv_speaker" + app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:id="@+id/constraintLayout" + android:layout_width="@dimen/dp_164" + android:layout_height="@dimen/dp_168" + android:background="@drawable/user_center_box" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + android:id="@+id/cl_nodata" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="visible"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + android:textSize="@dimen/sp_7" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tv_date1" /> + + + + + + + + + + + + + - + android:layout_height="match_parent" + android:visibility="visible"> - + + + + + + + + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_icon.xml b/app/src/main/res/layout/activity_add_icon.xml index bca8947..ee1bb21 100644 --- a/app/src/main/res/layout/activity_add_icon.xml +++ b/app/src/main/res/layout/activity_add_icon.xml @@ -1,66 +1,73 @@ - + + + + + android:layout_height="match_parent"> - + + + + + + + + + - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/constraintLayout" /> + - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_exit.xml b/app/src/main/res/layout/activity_exit.xml index 284396d..c939614 100644 --- a/app/src/main/res/layout/activity_exit.xml +++ b/app/src/main/res/layout/activity_exit.xml @@ -1,239 +1,246 @@ - - + + + + android:layout_height="match_parent" + android:background="@drawable/control_background"> - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.11" /> - - - + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/imageView5" + app:layout_constraintVertical_bias="0.796"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7c51c96..085c222 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,422 +1,443 @@ - - + + + + + - - - - - - + android:layout_height="match_parent" + android:background="@drawable/main_background"> + android:layout_width="match_parent" + android:layout_height="match_parent"> - + app:layout_constraintTop_toTopOf="parent" /> - + - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginBottom="@dimen/dp_2" + android:orientation="horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:onClick="@{click::open2}"> - + + + + + - + android:layout_height="match_parent" + android:onClick="@{click::open3}" + android:visibility="gone"> - + - + + + + android:onClick="@{click::open4}" + android:visibility="visible"> - + + + + + - - - - - + android:onClick="@{click::open6}"> - + + + + + - - - - - + android:onClick="@{click::open7}"> - + + + + + - - - - - + android:onClick="@{click::open8}"> - + + + + + - - - - - + android:onClick="@{click::open5}" + android:visibility="visible"> - + + + + + - + android:layout_height="match_parent" + android:layout_marginStart="@dimen/dp_4" + android:layout_marginEnd="@dimen/dp_4" + android:onClick="@{click::open9}" + android:visibility="visible"> - + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_moreapp.xml b/app/src/main/res/layout/activity_moreapp.xml index 3b4ff7c..0756f2f 100644 --- a/app/src/main/res/layout/activity_moreapp.xml +++ b/app/src/main/res/layout/activity_moreapp.xml @@ -1,66 +1,77 @@ - + + + + + + android:layout_height="match_parent"> - + + + + + + + + + - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/constraintLayout" /> + - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_notice.xml b/app/src/main/res/layout/activity_notice.xml index cdb7d11..ef3b12a 100644 --- a/app/src/main/res/layout/activity_notice.xml +++ b/app/src/main/res/layout/activity_notice.xml @@ -1,84 +1,91 @@ - - + + + + android:layout_width="match_parent" + android:layout_height="match_parent"> - + + + + + + + + + + + + + +