version:6.5

fix:
update:增加自动接听,语音播报,拨号提示音,悬浮按钮
This commit is contained in:
2024-07-10 18:44:46 +08:00
parent 90e98b73c0
commit ed06e2903c
70 changed files with 7109 additions and 1223 deletions

View File

@@ -2,6 +2,12 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.uiuios.aios">
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
<permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT"
android:description="@string/permdesc_install_shortcut"
@@ -33,6 +39,8 @@
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" /><!-- 接收短信权限 -->
<!-- 允许访问网络,必选权限 -->
<uses-permission android:name="android.permission.INTERNET" />
@@ -182,7 +190,7 @@
<activity android:name=".activity.control.ControlActivity" />
<activity android:name=".activity.quickapp.QuickAppActivity" />
<activity android:name=".activity.SpikeListActivity" />
<activity android:name=".activity.spikelist.SpikeListActivity" />
<activity android:name=".activity.infolist.InfoListActivity" />
<activity android:name=".activity.article.ArticleActivity" />
<activity
@@ -279,7 +287,7 @@
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity
android:name=".activity.SelectNumberActivity"
android:name=".activity.selectnumber.SelectNumberActivity"
android:launchMode="singleTask" />
<activity
android:name=".activity.screenlock.ScreenLockActivity"
@@ -331,6 +339,9 @@
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/activity_styles" />
<activity
android:name=".activity.tts.TtsActivity"
android:theme="@style/activity_styles" />
<!-- Intent received used to install shortcuts from other applications -->
@@ -379,6 +390,16 @@
android:enabled="true"
android:exported="true" />
<!-- <receiver-->
<!-- android:name=".receiver.SmsReceiver"-->
<!-- android:enabled="true"-->
<!-- android:exported="true">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.provider.Telephony.SMS_RECEIVED" />-->
<!-- <action android:name="android.provider.Telephony.SMS_DELIVER" />-->
<!-- </intent-filter>-->
<!-- </receiver>-->
<service
android:name=".alarm.AlarmService"
android:enabled="true"

File diff suppressed because it is too large Load Diff

View File

@@ -13,23 +13,15 @@ import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.RemoteViews;
import android.widget.TextView;
import androidx.databinding.DataBindingUtil;
import com.hjq.toast.Toaster;
import com.uiuios.aios.R;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.databinding.ActivityAddItemBinding;
import com.uiuios.aios.shortcut.ShortcutPkgInfo;
import com.uiuios.aios.shortcut.ShortcutUtils;
import butterknife.BindView;
import butterknife.ButterKnife;
public class AddItemActivity extends BaseMvvmActivity<AddItemViewModel, ActivityAddItemBinding> {
private static final String TAG = AddItemActivity.class.getSimpleName();

View File

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
@@ -18,6 +19,7 @@ import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.alarm.PortAlarmAdapter;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityAlarmPortBinding;
import com.uiuios.aios.dialog.DeleteDialog;
import com.uiuios.aios.network.NetInterfaceManager;
@@ -31,6 +33,8 @@ import io.reactivex.rxjava3.disposables.Disposable;
public class PortAlarmActivity extends BaseMvvmActivity<PortAlarmViewModel, ActivityAlarmPortBinding> {
private static final String TAG = PortAlarmActivity.class.getSimpleName();
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private PortAlarmAdapter mAlarmAdapter;
private int mType = 0;
@@ -65,7 +69,12 @@ public class PortAlarmActivity extends BaseMvvmActivity<PortAlarmViewModel, Acti
mAlarmAdapter.setOnLongClickListener(new PortAlarmAdapter.OnLongClickListener() {
@Override
public void onLongClick(AlarmClockData alarmClockData) {
showDialog(alarmClockData);
boolean clockModify = mMMKV.decodeBool(CommonConfig.DISABLE_CLOCK_MODIFY, false);
if (clockModify) {
Toaster.showLong("已禁用联系人修改");
} else {
showDialog(alarmClockData);
}
}
});
mViewDataBinding.rvData.setLayoutManager(new LinearLayoutManager(PortAlarmActivity.this));
@@ -74,7 +83,7 @@ public class PortAlarmActivity extends BaseMvvmActivity<PortAlarmViewModel, Acti
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
switch (newState){
switch (newState) {
/*正在拖拽*/
case RecyclerView.SCROLL_STATE_DRAGGING:
break;
@@ -201,7 +210,6 @@ public class PortAlarmActivity extends BaseMvvmActivity<PortAlarmViewModel, Acti
}
public class Click {
public void exit(View view) {
finish();

View File

@@ -41,7 +41,6 @@ import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.ThreadLocalRandom;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;

View File

@@ -6,37 +6,25 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.hjq.toast.Toaster;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.alarmclock.add.AlarmClockAddActivity;
import com.uiuios.aios.alarm.AlarmAdapter;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.base.mvp.BaseMvpActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.databinding.ActivityAlarmBinding;
import com.uiuios.aios.dialog.DeleteDialog;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.push.PushManager;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import cn.jzvd.Jzvd;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;

View File

@@ -20,8 +20,6 @@ import net.lucode.hackware.magicindicator.ViewPagerHelper;
import java.util.ArrayList;
import java.util.List;
import butterknife.ButterKnife;
public class FamilySpaceActivity extends BaseMvvmActivity<FamilySpaceViewModel, ActivityFamilySpaceBinding> {
private HealthCodeAdapter mHealthCodeAdapter;

View File

@@ -10,32 +10,22 @@ import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.databinding.DataBindingUtil;
import com.hjq.toast.Toaster;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import com.shehuan.niv.NiceImageView;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.base.GlideEngine;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.databinding.ActivityAddContactBinding;
import com.uiuios.aios.fragment.contact.ContactFragment;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.utils.GlideLoadUtils;
import com.uiuios.aios.view.ToggleButton;
import com.xiasuhuei321.loadingdialog.view.LoadingDialog;
import java.io.File;
import java.io.FileOutputStream;
@@ -43,8 +33,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;

View File

@@ -16,8 +16,6 @@ import com.uiuios.aios.databinding.ActivityDetailsBinding;
import java.math.BigDecimal;
import butterknife.ButterKnife;
public class DetailsActivity extends BaseMvvmActivity<DetailsViewModel, ActivityDetailsBinding> {
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
@@ -46,7 +44,6 @@ public class DetailsActivity extends BaseMvvmActivity<DetailsViewModel, Activity
*/
@Override
public void initView() {
ButterKnife.bind(this);
Intent intent = getIntent();
if (intent == null) return;
GoodsInfo goodsInfo = (GoodsInfo) intent.getSerializableExtra("GoodsInfo");

View File

@@ -15,8 +15,6 @@ import com.uiuios.aios.databinding.ActivityDialerBinding;
import java.util.HashMap;
import butterknife.ButterKnife;
public class DialerActivity extends BaseMvvmActivity<DialerViewModel, ActivityDialerBinding> {

View File

@@ -3,12 +3,9 @@ package com.uiuios.aios.activity.emergency;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
@@ -21,11 +18,8 @@ import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.receiver.BootReceiver;
import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;

View File

@@ -2,29 +2,22 @@ package com.uiuios.aios.activity.infolist;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.ArticleAdapter;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.ArticleInfo;
import com.uiuios.aios.bean.ArticleList;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.databinding.ActivityInfoListBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;

View File

@@ -4,36 +4,23 @@ import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.tabs.TabLayout;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.InformationAdapter;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.ArticleInfo;
import com.uiuios.aios.bean.ArticleList;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.CategoryBean;
import com.uiuios.aios.databinding.ActivityInformationBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.disposables.Disposable;
public class InformationActivity extends BaseMvvmActivity<InformationViewModel, ActivityInformationBinding> {
private static final String TAG = InformationActivity.class.getSimpleName();

View File

@@ -95,6 +95,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
private int defaultCurrent = 2;
private CameraManager cameraManager;
private boolean flashing = false;
@Override
public void onDisconnected() {
@@ -467,6 +468,9 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
Permission.WRITE_CALL_LOG,
Permission.READ_CONTACTS,
Permission.WRITE_CONTACTS,
// Permission.READ_SMS,
// Permission.RECEIVE_SMS,
};
private void getPermission() {
@@ -489,6 +493,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
}
Log.e(TAG, "onGranted: 获取权限成功");
addData();
initAmap();
}
@Override
@@ -813,7 +818,6 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
return Settings.Secure.getInt(getContentResolver(), "flashlight_enabled", 0) == 1;
}
private boolean flashing = false;
public class BtnClick {
public void dialer(View view) {
@@ -831,6 +835,10 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
ApkUtils.openPackage(MainActivity.this, "com.ss.android.ugc.aweme");
}
public void toCamera(View v) {
ApkUtils.openPackage(MainActivity.this, "com.mediatek.camera");
}
public void toCalendar(View v) {
// startActivity(new Intent(MainActivity.this, EmergencyActivity.class));
ApkUtils.openPackage(MainActivity.this, "com.youloft.calendar");

View File

@@ -21,8 +21,6 @@ import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityScreenLockBinding;
import com.uiuios.aios.manager.RemoteManager;
import butterknife.ButterKnife;
public class ScreenLockActivity extends BaseMvvmActivity<ScreenLockViewModel, ActivityScreenLockBinding> {
private static final String TAG = ScreenLockActivity.class.getSimpleName();

View File

@@ -1,4 +1,4 @@
package com.uiuios.aios.activity;
package com.uiuios.aios.activity.selectnumber;
import android.content.Context;
import android.telecom.PhoneAccountHandle;
@@ -9,15 +9,14 @@ import android.telephony.TelephonyManager;
import android.util.Log;
import com.uiuios.aios.R;
import com.uiuios.aios.base.mvp.BaseMvpActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.databinding.ActivitySelectNumberBinding;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.ButterKnife;
public class SelectNumberActivity extends BaseMvpActivity {
public class SelectNumberActivity extends BaseMvvmActivity<SelectNumberViewModel, ActivitySelectNumberBinding> {
private static final String TAG = SelectNumberActivity.class.getSimpleName();
private TelephonyManager mTelephonyManager;
@@ -29,6 +28,14 @@ public class SelectNumberActivity extends BaseMvpActivity {
return R.layout.activity_select_number;
}
@Override
protected void initDataBinding() {
mViewModel.setCtx(this);
mViewModel.setVDBinding(mViewDataBinding);
mViewModel.setLifecycle(getLifecycleSubject());
// mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

View File

@@ -0,0 +1,18 @@
package com.uiuios.aios.activity.selectnumber;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.databinding.ActivitySelectNumberBinding;
public class SelectNumberViewModel extends BaseViewModel<ActivitySelectNumberBinding, ActivityEvent> {
@Override
public ActivitySelectNumberBinding getVDBinding() {
return binding;
}
@Override
public void onDestroy() {
}
}

View File

@@ -9,25 +9,41 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import androidx.core.content.ContextCompat;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.callwechat.CallWechatActivity;
import com.uiuios.aios.activity.tts.TtsActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivitySettingBinding;
import com.uiuios.aios.service.WeAccessibilityService;
import com.uiuios.aios.service.main.MainService;
import com.uiuios.aios.utils.AccessibilityUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class SettingActivity extends BaseMvvmActivity<SettingViewModel, ActivitySettingBinding> {
private static final String TAG = SettingActivity.class.getSimpleName();
private static final int REQUEST_PERMISSION_CODE = 1234;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private String[] PERMISSIONS_SMS = {
Manifest.permission.READ_SMS,
Manifest.permission.RECEIVE_SMS,
};
@Override
protected int getLayoutId() {
return R.layout.activity_setting;
@@ -51,6 +67,30 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
}
@Override
protected void onResume() {
super.onResume();
setStatus();
}
private void setStatus() {
boolean showFloatWindow = mMMKV.decodeBool(CommonConfig.FLOAT_WINDOW, false);
Log.e(TAG, "initView: showFloatWindow = " + showFloatWindow);
mViewDataBinding.setFloatWindowEnable(showFloatWindow);
boolean voiceBroadcast = mMMKV.decodeBool(CommonConfig.VOICE_BROADCAST, false);
Log.e(TAG, "initView: voiceBroadcast = " + voiceBroadcast);
mViewDataBinding.setVoiceBroadcast(voiceBroadcast);
boolean autoAccept = mMMKV.decodeBool(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, false);
Log.e(TAG, "initView: autoAccept = " + autoAccept);
mViewDataBinding.setAutoAccept(autoAccept);
boolean dialTone = mMMKV.decodeBool(CommonConfig.DISABLE_DIAL_TONE_MODIFY, true);
Log.e(TAG, "initView: dialTone = " + dialTone);
mViewDataBinding.setDialTone(dialTone);
}
private static final int REQUEST_CODE_DRAW_OVER_OTHER_APPS_PERMISSION = 200;
@Override
@@ -65,6 +105,15 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
showFloatingWindow();
}
}
setStatus();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_PERMISSION_CODE) {
}
}
private void showFloatingWindow() {
@@ -128,7 +177,6 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
public void openFloat(View view) {
boolean floatWindowEnable = mMMKV.decodeBool(CommonConfig.FLOAT_WINDOW, false);
if (floatWindowEnable) {
hideFloatingWindow();
} else {
boolean permission = checkFloatPermission(SettingActivity.this);
@@ -148,6 +196,57 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
}
}
public void voiceBroadcast(View view) {
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(SettingActivity.this, Manifest.permission.READ_SMS)) {
ActivityCompat.requestPermissions(SettingActivity.this, PERMISSIONS_SMS, REQUEST_PERMISSION_CODE);
Toast.makeText(SettingActivity.this, "请授予读取短信权限", Toast.LENGTH_LONG).show();
return;
}
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(SettingActivity.this, Manifest.permission.RECEIVE_SMS)) {
ActivityCompat.requestPermissions(SettingActivity.this, PERMISSIONS_SMS, REQUEST_PERMISSION_CODE);
Toast.makeText(SettingActivity.this, "请授予接收短信权限", Toast.LENGTH_LONG).show();
return;
}
boolean voiceBroadcast = mMMKV.decodeBool(CommonConfig.VOICE_BROADCAST, false);
Log.e(TAG, "voiceBroadcast: voiceBroadcast = " + voiceBroadcast);
mViewDataBinding.setVoiceBroadcast(!voiceBroadcast);
mMMKV.encode(CommonConfig.VOICE_BROADCAST, !voiceBroadcast);
}
private String testText = "TTS从文本到语音Text To Speech是将文本转化为语音人机对话的一部分让机器能够说话。\n" +
"android自带的TTS目前只支持英文、法文、意大利文、德文、西班牙文。不支持中文如果想要播放出中文语音需要借助中文TTS引擎的帮助。";
public void testTts(View view) {
if (BuildConfig.DEBUG) {
Intent ttsIntent = new Intent(SettingActivity.this, TtsActivity.class);
ttsIntent.putExtra("sender", "test");
ttsIntent.putExtra("body", testText);
startActivity(ttsIntent);
}
}
public void autoAccept(View view) {
if (AccessibilityUtils.isAccessibilitySettingsOn(SettingActivity.this)) {
boolean autoAccept = mMMKV.decodeBool(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, true);
Log.e(TAG, "autoAccept: autoAccept = " + autoAccept);
mViewDataBinding.setAutoAccept(!autoAccept);
mMMKV.encode(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, !autoAccept);
Intent intent = new Intent(WeAccessibilityService.SETTING_AUTOMATIC_ANSWER_ACTION);
intent.putExtra("auto_answer", !autoAccept);
} else {
Toast.makeText(SettingActivity.this, "请在无障碍服务中打开 - 关爱守护快捷服务", Toast.LENGTH_LONG).show();
startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
}
}
public void setDialTone(View view) {
boolean dialTone = mMMKV.decodeBool(CommonConfig.DISABLE_DIAL_TONE_MODIFY, true);
Log.e(TAG, "setDialTone: dialTone = " + dialTone);
mViewDataBinding.setDialTone(!dialTone);
mMMKV.encode(CommonConfig.DISABLE_DIAL_TONE_MODIFY, !dialTone);
}
public void toInternet(View view) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
@@ -163,5 +262,7 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
public void toSettings(View view) {
startActivity(new Intent(Settings.ACTION_SETTINGS));
}
}
}

View File

@@ -1,15 +1,18 @@
package com.uiuios.aios.activity.setting;
import android.content.Intent;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.databinding.ActivitySettingBinding;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityTouchBinding;
public class TouchActivity extends BaseMvvmActivity<TouchViewModel, ActivityTouchBinding> {
private static final String TAG =TouchActivity.class.getSimpleName() ;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
@Override
@@ -27,7 +30,17 @@ public class TouchActivity extends BaseMvvmActivity<TouchViewModel, ActivityTouc
@Override
protected void initView() {
boolean disableKey = mMMKV.decodeBool(CommonConfig.DISABLE_VOLUME_KEY, false);
Log.e(TAG, "initView: disableKey = " + disableKey);
mViewDataBinding.setDisableKey(disableKey);
boolean contactModify = mMMKV.decodeBool(CommonConfig.DISABLE_CONTACT_MODIFY, false);
Log.e(TAG, "initView: contactModify = " + contactModify);
mViewDataBinding.setDisableContact(contactModify);
boolean clockModify = mMMKV.decodeBool(CommonConfig.DISABLE_CLOCK_MODIFY, false);
Log.e(TAG, "disableVolumeKey: clockModify = " + clockModify);
mViewDataBinding.setDisableClock(clockModify);
}
@Override
@@ -36,16 +49,26 @@ public class TouchActivity extends BaseMvvmActivity<TouchViewModel, ActivityTouc
}
public class BtnClick {
public void toInternet(View view) {
startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
public void disableVolumeKey(View view) {
boolean disableKey = mMMKV.decodeBool(CommonConfig.DISABLE_VOLUME_KEY, false);
Log.e(TAG, "disableVolumeKey: disableKey = " + disableKey);
mViewDataBinding.setDisableKey(!disableKey);
mMMKV.encode(CommonConfig.DISABLE_VOLUME_KEY, !disableKey);
}
public void toFont(View view) {
startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS));
public void disableContactModify(View view) {
boolean contactModify = mMMKV.decodeBool(CommonConfig.DISABLE_CONTACT_MODIFY, false);
Log.e(TAG, "disableVolumeKey: contactModify = " + contactModify);
mViewDataBinding.setDisableContact(!contactModify);
mMMKV.encode(CommonConfig.DISABLE_CONTACT_MODIFY, !contactModify);
}
public void toSettings(View view) {
startActivity(new Intent(Settings.ACTION_SETTINGS));
public void disableClockModify(View view) {
boolean clockModify = mMMKV.decodeBool(CommonConfig.DISABLE_CLOCK_MODIFY, false);
Log.e(TAG, "disableVolumeKey: clockModify = " + clockModify);
mViewDataBinding.setDisableClock(!clockModify);
mMMKV.encode(CommonConfig.DISABLE_CLOCK_MODIFY, !clockModify);
}
}
}

View File

@@ -1,59 +1,49 @@
package com.uiuios.aios.activity;
package com.uiuios.aios.activity.spikelist;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.R;
import com.uiuios.aios.adapter.GoodsListAdapter;
import com.uiuios.aios.base.BaseDataBindingActivity;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.GoodsInfo;
import com.uiuios.aios.bean.GoodsList;
import com.uiuios.aios.databinding.ActivitySpikeListBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class SpikeListActivity extends BaseDataBindingActivity {
@BindView(R.id.recyclerView)
RecyclerView recyclerView;
@BindView(R.id.iv1)
ImageView iv1;
@BindView(R.id.iv_back)
ImageView iv_back;
public class SpikeListActivity extends BaseMvvmActivity<SpikeListViewModel, ActivitySpikeListBinding> {
private GoodsListAdapter mGoodsAdapter;
@Override
protected int getLayoutId() {
return R.layout.activity_spike_list;
}
@Override
protected void initDataBinding() {
DataBindingUtil.setContentView(this,R.layout.activity_spike_list);
mViewModel.setCtx(this);
mViewModel.setVDBinding(mViewDataBinding);
mViewModel.setLifecycle(getLifecycleSubject());
mViewDataBinding.setClick(new BtnClick());
}
@Override
public void initView() {
ButterKnife.bind(this);
mGoodsAdapter = new GoodsListAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(mGoodsAdapter);
iv_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
mViewDataBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
mViewDataBinding.recyclerView.setAdapter(mGoodsAdapter);
}
@Override
@@ -77,10 +67,10 @@ public class SpikeListActivity extends BaseDataBindingActivity {
GoodsList goodsList = listBaseResponse.data;
List<GoodsInfo> goodsInfos = goodsList.getData();
if (goodsInfos != null && goodsInfos.size() != 0) {
iv1.setVisibility(android.view.View.GONE);
mViewDataBinding.iv1.setVisibility(android.view.View.GONE);
mGoodsAdapter.setGoodsInfoList(goodsInfos);
} else {
iv1.setVisibility(android.view.View.VISIBLE);
mViewDataBinding.iv1.setVisibility(android.view.View.VISIBLE);
}
}
@@ -95,4 +85,10 @@ public class SpikeListActivity extends BaseDataBindingActivity {
}
});
}
public class BtnClick {
public void exit(View view) {
finish();
}
}
}

View File

@@ -0,0 +1,18 @@
package com.uiuios.aios.activity.spikelist;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.databinding.ActivitySpikeListBinding;
public class SpikeListViewModel extends BaseViewModel<ActivitySpikeListBinding, ActivityEvent> {
@Override
public ActivitySpikeListBinding getVDBinding() {
return binding;
}
@Override
public void onDestroy() {
}
}

View File

@@ -0,0 +1,98 @@
package com.uiuios.aios.activity.tts;
import android.content.Intent;
import android.speech.tts.TextToSpeech;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import com.hjq.toast.Toaster;
import com.uiuios.aios.R;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.databinding.ActivityTtsBinding;
import java.util.Locale;
public class TtsActivity extends BaseMvvmActivity<TtsViewModel, ActivityTtsBinding> implements TextToSpeech.OnInitListener {
private static final String TAG = TtsActivity.class.getSimpleName();
private TextToSpeech mTextToSpeech;
private String mBody;
private String mSender;
@Override
protected int getLayoutId() {
return R.layout.activity_tts;
}
@Override
protected void initDataBinding() {
mViewModel.setCtx(this);
mViewModel.setVDBinding(mViewDataBinding);
mViewModel.setLifecycle(getLifecycleSubject());
mViewDataBinding.setClick(new BtnClick());
}
@Override
protected void initView() {
}
@Override
protected void initData() {
Intent intent = getIntent();
mBody = intent.getStringExtra("body");
mSender = intent.getStringExtra("sender");
if (TextUtils.isEmpty(mBody)) {
finish();
} else {
mTextToSpeech = new TextToSpeech(this, this);
mViewDataBinding.setBody(mBody);
}
}
@Override
public void onInit(int status) {
//初始化成功
if (status == TextToSpeech.SUCCESS) {
Log.e(TAG, "init success");
//设置语言
int result = mTextToSpeech.setLanguage(Locale.CHINA);
if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE
&& result != TextToSpeech.LANG_AVAILABLE) {
Toaster.showLong("TTS暂不支持这种语音的朗读");
finish();
} else {
//设置音调
mTextToSpeech.setPitch(1.0f);
//设置语速1.0为正常语速
mTextToSpeech.setSpeechRate(1.0f);
//播放
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("收到来自").append(mSender).append("的短信").append(mBody);
mTextToSpeech.speak(stringBuilder.toString(), TextToSpeech.QUEUE_ADD, null);
}
} else {
Log.e(TAG, "init fail");
Toaster.showLong("TTS初始化失败");
finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//中断当前话语
mTextToSpeech.stop();
//释放资源
mTextToSpeech.shutdown();
}
public class BtnClick {
public void exit(View view) {
finish();
}
}
}

View File

@@ -0,0 +1,18 @@
package com.uiuios.aios.activity.tts;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.databinding.ActivityTtsBinding;
public class TtsViewModel extends BaseViewModel<ActivityTtsBinding, ActivityEvent> {
@Override
public ActivityTtsBinding getVDBinding() {
return binding;
}
@Override
public void onDestroy() {
}
}

View File

@@ -25,21 +25,20 @@ import com.hjq.toast.Toaster;
import com.qweather.sdk.bean.base.Code;
import com.qweather.sdk.bean.weather.WeatherDailyBean;
import com.qweather.sdk.bean.weather.WeatherNowBean;
import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.location.LocationAcivity;
import com.uiuios.aios.adapter.WeatherDayApdapterPort;
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
import com.uiuios.aios.bean.JsonBean;
import com.uiuios.aios.bean.MapGeoResult;
import com.uiuios.aios.bean.QweatherLocation;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.ActivityWeatherBinding;
import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.utils.DataUtil;
import com.uiuios.aios.utils.TimeUtils;
import com.uiuios.aios.view.FadeInOutAnimator;
import com.uiuios.aios.view.HorizontalItemDecoration;
import java.util.ArrayList;
@@ -119,6 +118,7 @@ public class WeatherActivity extends BaseMvvmActivity<WeatherViewModel, Activity
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
}
mViewDataBinding.rvWeather.setLayoutManager(linearLayoutManager);
mViewDataBinding.rvWeather.setItemAnimator(new FadeInOutAnimator());
// mViewDataBinding.rvWeather.setLayoutManager(new GridLayoutManager(this, 3));
// mViewDataBinding.rvWeather.addItemDecoration(new RecyclerItemDecoration(ScreenUtils.dp2px(resources, 10), ScreenUtils.dp2px(resources, 10), 3));
mWeatherDayApdapter = new WeatherDayApdapterPort();

View File

@@ -22,8 +22,6 @@ import com.uiuios.aios.view.HorizontalItemDecoration;
import java.util.List;
import butterknife.ButterKnife;
public class WiFiManagerActivity extends BaseMvvmActivity<WiFiManagerViewModel, ActivityWifiManagerBinding> {
private SavedWiFiAdapter mSavedWiFiAdapter;

View File

@@ -2,6 +2,7 @@ package com.uiuios.aios.base;
import android.app.Application;
import android.content.Intent;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
@@ -46,7 +47,9 @@ public class BaseApplication extends Application {
// 初始化 Toast 框架
Toaster.init(this);
CrashReport.initCrashReport(getApplicationContext(), "", false);
CrashReport.initCrashReport(getApplicationContext(), "f65d7a4361", false);
CrashReport.setDeviceModel(getApplicationContext(), Build.MODEL);
xcrash.XCrash.init(this);
aliyunPushInit();
PushManager.init(this);

View File

@@ -1,15 +1,24 @@
package com.uiuios.aios.base;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import androidx.annotation.CallSuper;
import androidx.annotation.Nullable;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.base.rx.BaseRxActivity;
import com.uiuios.aios.config.CommonConfig;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
public abstract class BaseTransparentActivity extends BaseRxActivity {
private static final String TAG = BaseTransparentActivity.class.getSimpleName();
private MMKV mmkv = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
public BaseTransparentActivity() {
super();
@@ -54,4 +63,25 @@ public abstract class BaseTransparentActivity extends BaseRxActivity {
public boolean setfitWindow() {
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP://增大系统媒体音量
case KeyEvent.KEYCODE_VOLUME_DOWN://减小系统媒体音量
return getVolumeKeyStatus();
default:
break;
}
return super.onKeyDown(keyCode, event);
}
public boolean getVolumeKeyStatus() {
boolean disableKey = mmkv.decodeBool(CommonConfig.DISABLE_VOLUME_KEY, false);
Log.e(TAG, "getVolumeKeyStatus: disableKey = " + disableKey);
if (disableKey){
Toaster.showLong("音量键已被禁用");
}
return disableKey;
}
}

View File

@@ -51,13 +51,13 @@ public class AddressBean implements Serializable {
@NonNull
@Override
public String toString() {
String s = "";
StringBuilder s = new StringBuilder();
if (!TextUtils.isEmpty(mProvince))
s += mProvince;
s.append(mProvince);
if (!TextUtils.isEmpty(mCity))
s += mCity;
s.append(" ").append(mCity);
if (!TextUtils.isEmpty(mDistrict))
s += mDistrict;
return s;
s.append(" ").append(mDistrict);
return s.toString();
}
}

View File

@@ -74,8 +74,22 @@ public class CommonConfig {
public static final String EMERGENCY_CONTACT_KEY = "emergency_contact_phone";
public static final String FAMILY_ADDRESS_KEY = "Family_Address";
/*拨号提示音*/
public static final String DISABLE_DIAL_TONE_MODIFY = "disable_dial_modify_key";
/*语音朗读*/
public static final String VOICE_BROADCAST = "voice_broadcast_key";
/*微信语音自动接听*/
public static final String WECHAT_CALL_AUTO_ACCEPT = "wechat_call_auto_accept";
/*悬浮窗*/
public static final String FLOAT_WINDOW = "FloatWindowEnable";
/*禁用音量键*/
public static final String DISABLE_VOLUME_KEY = "disable_volume_key";
/*修改联系人禁用*/
public static final String DISABLE_CONTACT_MODIFY = "disable_contact_modify_key";
/*禁用闹钟修改*/
public static final String DISABLE_CLOCK_MODIFY = "disable_clock_modify_key";
public static final String AMAP_LOCATION_MAP_BEAN = "AMapLocation_MapBean_key";
public static final String AMAP_LOCATION_District = "AMapLocationMapBean_key";
public static final String AMAP_LOCATION_DISTRICT = "AMapLocationMapBean_key";
}

View File

@@ -1,15 +0,0 @@
package com.uiuios.aios.fragment.custom;
import com.uiuios.aios.base.mvp.BasePresenter;
import com.uiuios.aios.base.mvp.BaseView;
import com.uiuios.aios.bean.UserAvatarInfo;
public class CustomContact {
public interface Presenter extends BasePresenter<CustomView> {
void getSnInfo();
}
public interface CustomView extends BaseView {
void setSnInfo(UserAvatarInfo userAvatarInfo);
}
}

View File

@@ -22,24 +22,18 @@ import android.provider.Settings;
import android.text.TextUtils;
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.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.NetworkUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hjq.toast.Toaster;
import com.king.view.circleprogressview.CircleProgressView;
import com.qweather.sdk.bean.base.Code;
import com.qweather.sdk.bean.base.Lang;
import com.qweather.sdk.bean.base.Unit;
@@ -50,27 +44,27 @@ import com.qweather.sdk.view.QWeather;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.control.ControlActivity;
import com.uiuios.aios.activity.emergency.EmergencyActivity;
import com.uiuios.aios.activity.quickapp.QuickAppActivity;
import com.uiuios.aios.activity.alarm.port.PortAlarmActivity;
import com.uiuios.aios.activity.code.FamilySpaceActivity;
import com.uiuios.aios.activity.contact.ContactActivity;
import com.uiuios.aios.activity.control.ControlActivity;
import com.uiuios.aios.activity.emergency.EmergencyActivity;
import com.uiuios.aios.activity.quickapp.QuickAppActivity;
import com.uiuios.aios.activity.weather.WeatherActivity;
import com.uiuios.aios.adapter.NotificationAdapter;
import com.uiuios.aios.adapter.SOSNnmberAdapter;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.base.BaseFragment;
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.bean.AlarmItem;
import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.bean.HealthCode;
import com.uiuios.aios.bean.SnInfo;
import com.uiuios.aios.bean.UserAvatarInfo;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.FragmentCustomBinding;
import com.uiuios.aios.dialog.PasswordDialog;
import com.uiuios.aios.dialog.SingleDialog;
import com.uiuios.aios.disklrucache.CacheHelper;
import com.uiuios.aios.manager.AmapManager;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.NetInterfaceManager;
@@ -82,7 +76,6 @@ import com.uiuios.aios.utils.BitmapUtils;
import com.uiuios.aios.utils.DayUtils;
import com.uiuios.aios.utils.NetStateUtils;
import com.uiuios.aios.utils.SchemeUtils;
import com.uiuios.aios.utils.Utils;
import java.lang.reflect.Type;
@@ -92,120 +85,36 @@ import java.util.Calendar;
import java.util.Date;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* A simple {@link Fragment} subclass.
* Use the {@link CustomFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class CustomFragment extends BaseFragment implements CustomContact.CustomView, NetworkUtils.OnNetworkStatusChangedListener {
@BindView(R.id.cl_weather)
ConstraintLayout cl_weather;
@BindView(R.id.cl_clean)
ConstraintLayout cl_shared_space;
@BindView(R.id.cl_sos)
ConstraintLayout cl_soso;
@BindView(R.id.cl_guard)
ConstraintLayout cl_guard;
@BindView(R.id.cl_health)
ConstraintLayout cl_health;
@BindView(R.id.cl_contact)
ConstraintLayout cl_contact;
@BindView(R.id.cl_ai)
ConstraintLayout cl_ai;
@BindView(R.id.cl_app)
ConstraintLayout cl_app;
@BindView(R.id.cl_appstore)
ConstraintLayout cl_appstore;
@BindView(R.id.cl_wifi)
ConstraintLayout cl_wifi;
@BindView(R.id.cl_activation)
ConstraintLayout cl_activation;
@BindView(R.id.cl_control)
ConstraintLayout cl_control;
@BindView(R.id.tv_time)
TextView tv_time;
@BindView(R.id.tv_data)
TextView tv_data;
@BindView(R.id.tv_battery)
TextView tv_battery;
@BindView(R.id.tv_location)
TextView tv_location;
@BindView(R.id.tv_weather)
TextView tv_weather;
@BindView(R.id.iv_pic)
ImageView iv_pic;
@BindView(R.id.tv_temp)
TextView tv_temp;
@BindView(R.id.cpv)
CircleProgressView cpv;
@BindView(R.id.rv_noti)
RecyclerView rv_noti;
@BindView(R.id.iv_wifi)
ImageView iv_wifi;
@BindView(R.id.wifi_ssid)
TextView wifi_ssid;
@BindView(R.id.iv_sos)
ImageView iv_sos;
@BindView(R.id.rv_sos)
RecyclerView rv_sos;
@BindView(R.id.iv_note_nodata)
ImageView iv_note_nodata;
@BindView(R.id.tv_name)
TextView tv_name;
@BindView(R.id.iv_app)
ImageView iv_app;
@BindView(R.id.iv_battery)
ImageView iv_battery;
public class CustomFragment extends BaseMvvmFragment<CustomViewModel, FragmentCustomBinding> implements NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = CustomFragment.class.getSimpleName();
private MMKV mMMKV= MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
// private int[] mShaderColors = new int[]{0xFFfa3db5, 0xFFF8867E, 0xFFF79F6B, 0xFFF79F6B, 0xFFF79F6B, 0xFFF8867E, 0xFFfa3db5};
private int[] mShaderColors = new int[]{0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192};
private int[] mShaderColorsRed = new int[]{0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000};
private View rootView;
private List<AlarmItem> alarmItemList;
private NotificationAdapter notificationAdapter;
// private AlarmClockAdapter alarmClockAdapter;
private SOSNnmberAdapter sosNnmberAdapter;
private Activity mContext;
private ContentResolver mCRv;
private CacheHelper mCacheHelper;
private CustomPresenter mCustomPresenter;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public CustomFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment CustomFragment.
*/
// TODO: Rename and change types and number of parameters
public static CustomFragment newInstance(String param1, String param2) {
public static CustomFragment newInstance() {
CustomFragment fragment = new CustomFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@@ -214,14 +123,48 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
// setAlarm();
}
@Override
protected int getLayoutId() {
return R.layout.fragment_custom;
}
@Override
protected void initDataBinding() {
mContext = getActivity();
mCRv = mContext.getContentResolver();
mViewModel.setCtx(getCtx());
mViewModel.setLifecycle(getLifecycleSubject());
mViewModel.setVDBinding(mViewDataBinding);
mViewDataBinding.setClick(new BtnClick());
}
@Override
protected void initView(Bundle bundle) {
}
@Override
protected void initData(Bundle savedInstanceState) {
mViewModel.getUserAvatarInfoData().observe(this, new Observer<UserAvatarInfo>() {
@Override
public void onChanged(UserAvatarInfo userAvatarInfo) {
if (userAvatarInfo != null) {
if (TextUtils.isEmpty(userAvatarInfo.getSn_name())) {
mViewDataBinding.tvName.setText("未设置");
} else {
mViewDataBinding.tvName.setText(userAvatarInfo.getSn_name());
}
} else {
mViewDataBinding.tvName.setText("未设置");
}
}
});
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NetworkUtils.registerNetworkStatusChangedListener(this);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
@@ -233,22 +176,22 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
@Override
public void onDisconnected() {
wifi_ssid.setText("WiFi未连接");
iv_wifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_disconnect));
mViewDataBinding.wifiSsid.setText("WiFi未连接");
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_disconnect));
}
@Override
public void onConnected(NetworkUtils.NetworkType networkType) {
if (networkType == NetworkUtils.NetworkType.NETWORK_WIFI) {
iv_wifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_connect));
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_connect));
if (isNetworkOnline1()) {
wifi_ssid.setText("已连接");
mViewDataBinding.wifiSsid.setText("已连接");
} else {
wifi_ssid.setText("未连接");
mViewDataBinding.wifiSsid.setText("未连接");
}
} else {
wifi_ssid.setText("WiFi未连接");
iv_wifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_disconnect));
mViewDataBinding.wifiSsid.setText("WiFi未连接");
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_disconnect));
}
}
@@ -361,7 +304,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
int elec = (level * 100) / scale;
Log.i(TAG, "electricity:=" + elec + "%");
tv_battery.setText(elec + "%");
mViewDataBinding.tvBattery.setText(elec + "%");
notifyBattery(level, scale, status, isCharging);
} else if (Intent.ACTION_POWER_CONNECTED.equals(action)
|| Intent.ACTION_POWER_DISCONNECTED.equals(action)
@@ -375,7 +318,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
public void notifyBattery(int level, int scale, int status, boolean isCharging) {
Bitmap bitmap = BitmapUtils.getbatteryIcon(mContext, BitmapFactory.decodeResource(getResources(), R.drawable.battery_icon), level, isCharging);
iv_battery.setImageBitmap(bitmap);
mViewDataBinding.ivBattery.setImageBitmap(bitmap);
}
//监听时间和日期变化
@@ -413,10 +356,10 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
long time = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date date = new Date(time);
tv_time.setText(sdf.format(date));
mViewDataBinding.tvTime.setText(sdf.format(date));
SimpleDateFormat sdf2 = new SimpleDateFormat("MM月-dd日");
Date date2 = new Date(time);
tv_data.setText(sdf2.format(date2) + "\t" + getWeek());
mViewDataBinding.tvData.setText(sdf2.format(date2) + "\t" + getWeek());
}
/**
@@ -434,44 +377,28 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
return weeks[weekIndex];
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.fragment_custom, container, false);
mContext = (Activity) rootView.getContext();
mCustomPresenter = new CustomPresenter(mContext);
mCustomPresenter.attachView(this);
mCustomPresenter.setLifecycle(getLifecycleSubject());
mCacheHelper = new CacheHelper(mContext);
mCRv = mContext.getContentResolver();
ButterKnife.bind(this, rootView);
initView();
return rootView;
}
private void initView() {
Log.e(TAG, "initView: " + Utils.getBatteryLevel(mContext));
registerRefreshReceiver();
registerBatteryReceiver();
registerAlarmClockReceiver();
registerTimeReceiver();
wifi_ssid.requestFocus();
mViewDataBinding.wifiSsid.requestFocus();
setTiem();
if (Settings.Global.getInt(mCRv, "is_aihealth", 0) == 1) {
cl_appstore.setVisibility(View.GONE);
cl_ai.setVisibility(View.VISIBLE);
mViewDataBinding.clAppstore.setVisibility(View.GONE);
mViewDataBinding.clAi.setVisibility(View.VISIBLE);
} else {
cl_appstore.setVisibility(View.VISIBLE);
cl_ai.setVisibility(View.GONE);
mViewDataBinding.clAppstore.setVisibility(View.VISIBLE);
mViewDataBinding.clAi.setVisibility(View.GONE);
}
cpv.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.cpv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
killBackgroundApp();
}
});
cl_guard.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clGuard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getAlarm();
@@ -484,65 +411,65 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
getAlarm();
}
});
rv_noti.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.rvNoti.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getAlarm();
}
});
rv_noti.setLayoutManager(new LinearLayoutManager(mContext));
rv_noti.setAdapter(notificationAdapter);
mViewDataBinding.rvNoti.setLayoutManager(new LinearLayoutManager(mContext));
mViewDataBinding.rvNoti.setAdapter(notificationAdapter);
if (isWifiConnect()) {
iv_wifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_connect));
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_connect));
if (isNetworkOnline1()) {
wifi_ssid.setText("已连接");
mViewDataBinding.wifiSsid.setText("已连接");
} else {
wifi_ssid.setText("未连接");
mViewDataBinding.wifiSsid.setText("未连接");
}
} else {
wifi_ssid.setText("WiFi未连接");
iv_wifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_disconnect));
mViewDataBinding.wifiSsid.setText("WiFi未连接");
mViewDataBinding.ivWifi.setImageDrawable(mContext.getDrawable(R.drawable.wifi_disconnect));
}
sosNnmberAdapter = new SOSNnmberAdapter();
rv_sos.setLayoutManager(new LinearLayoutManager(mContext));
rv_sos.setAdapter(sosNnmberAdapter);
cl_soso.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.rvSos.setLayoutManager(new LinearLayoutManager(mContext));
mViewDataBinding.rvSos.setAdapter(sosNnmberAdapter);
mViewDataBinding.clSos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkSosNumber();
}
});
cl_weather.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clWeather.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(mContext, WeatherActivity.class));
}
});
cl_shared_space.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clClean.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
killBackgroundApp();
}
});
cl_health.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clHealth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getHealthCode();
}
});
cl_contact.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clContact.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkContact();
}
});
cl_ai.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clAi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openScheme(SchemeUtils.SCHEME_HAND);
}
});
cl_app.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clApp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TextUtils.isEmpty(quickAppPackagesName)) {
@@ -555,7 +482,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
}
}
});
cl_app.setOnLongClickListener(new View.OnLongClickListener() {
mViewDataBinding.clApp.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
int is_quick = Settings.Global.getInt(mContext.getContentResolver(), QuickAppActivity.QUICK_APP_ENABLED_KEY, 0);
@@ -567,13 +494,13 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
return false;
}
});
cl_appstore.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clAppstore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ApkUtils.openPackage(mContext, "com.uiui.videoplayer", "com.uiui.videoplayer.activity.main.OldMainActivity");
}
});
cl_wifi.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
@@ -581,13 +508,13 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
startActivity(intent);
}
});
cl_activation.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clActivation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ApkUtils.openPackage(mContext, "com.uiuios.sn");
}
});
cl_control.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clControl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(mContext, ControlActivity.class));
@@ -596,19 +523,6 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
refreshMemory();
}
@Override
public void setSnInfo(UserAvatarInfo userAvatarInfo) {
if (userAvatarInfo != null) {
if (TextUtils.isEmpty(userAvatarInfo.getSn_name())) {
tv_name.setText("未设置");
} else {
tv_name.setText(userAvatarInfo.getSn_name());
}
} else {
tv_name.setText("未设置");
}
}
private void showPassword() {
PasswordDialog passwordDialog = new PasswordDialog(mContext);
passwordDialog.setTitle("请输入密码退出关怀系统");
@@ -670,7 +584,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
}
private void initData() {
mCustomPresenter.getSnInfo();
mViewModel.getSnInfo();
initAmap();
getAlarmCache();
}
@@ -707,10 +621,10 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
e.printStackTrace();
}
if (applicationInfo != null) {
iv_app.setImageDrawable(applicationInfo.loadIcon(pm));
mViewDataBinding.ivApp.setImageDrawable(applicationInfo.loadIcon(pm));
}
} else {
iv_app.setImageDrawable(mContext.getDrawable(R.drawable.home_quick_app));
mViewDataBinding.ivApp.setImageDrawable(mContext.getDrawable(R.drawable.home_quick_app));
}
}
@@ -753,30 +667,30 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
}
public void setSosNumber() {
String jsonString = mCacheHelper.getAsString(UrlAddress.GET_SETTINGS);
//为 "" 是已经请求成功的
if (jsonString == null) {
// rv_sos.setVisibility(View.GONE);
// iv_sos.setVisibility(View.VISIBLE);
} else {
Gson gson = new Gson();
Type type = new TypeToken<List<Contact>>() {
}.getType();
List<Contact> setting_sos = gson.fromJson(jsonString, type);
if (setting_sos == null || setting_sos.size() == 0) {
// rv_sos.setVisibility(View.VISIBLE);
// iv_sos.setVisibility(View.GONE);
sosNnmberAdapter.setPhoneNumberList(setting_sos);
} else {
// rv_sos.setVisibility(View.GONE);
// iv_sos.setVisibility(View.VISIBLE);
}
}
// String jsonString = mCacheHelper.getAsString(UrlAddress.GET_SETTINGS);
// //为 "" 是已经请求成功的
// if (jsonString == null) {
// // rvSos.setVisibility(View.GONE);
//// iv_sos.setVisibility(View.VISIBLE);
// } else {
// Gson gson = new Gson();
// Type type = new TypeToken<List<Contact>>() {
// }.getType();
// List<Contact> setting_sos = gson.fromJson(jsonString, type);
// if (setting_sos == null || setting_sos.size() == 0) {
// // rvSos.setVisibility(View.VISIBLE);
//// iv_sos.setVisibility(View.GONE);
// sosNnmberAdapter.setPhoneNumberList(setting_sos);
// } else {
// // rvSos.setVisibility(View.GONE);
//// iv_sos.setVisibility(View.VISIBLE);
// }
// }
}
private void initAmap() {
String city = AmapManager.getInstance().getCity();
tv_location.setText(city);
mViewDataBinding.tvLocation.setText(city);
getweather(AmapManager.getInstance().getLocationTude());
}
@@ -791,12 +705,12 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
}.getType();
List<AlarmClockData> list = gson.fromJson(jsonString, type);
if (list == null || list.size() == 0) {
rv_noti.setVisibility(View.GONE);
iv_note_nodata.setVisibility(View.VISIBLE);
mViewDataBinding.rvNoti.setVisibility(View.GONE);
mViewDataBinding.ivNoteNodata.setVisibility(View.VISIBLE);
} else {
notificationAdapter.setDataList(list.subList(0, 1));
rv_noti.setVisibility(View.VISIBLE);
iv_note_nodata.setVisibility(View.GONE);
mViewDataBinding.rvNoti.setVisibility(View.VISIBLE);
mViewDataBinding.ivNoteNodata.setVisibility(View.GONE);
}
}
@@ -809,18 +723,18 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
if (alarmClockData != null) {
data.add(alarmClockData);
notificationAdapter.setDataList(data);
rv_noti.setVisibility(View.VISIBLE);
iv_note_nodata.setVisibility(View.GONE);
mViewDataBinding.rvNoti.setVisibility(View.VISIBLE);
mViewDataBinding.ivNoteNodata.setVisibility(View.GONE);
} else {
rv_noti.setVisibility(View.GONE);
iv_note_nodata.setVisibility(View.VISIBLE);
mViewDataBinding.rvNoti.setVisibility(View.GONE);
mViewDataBinding.ivNoteNodata.setVisibility(View.VISIBLE);
}
}
@Override
public void setAlarmClockEmpty() {
rv_noti.setVisibility(View.GONE);
iv_note_nodata.setVisibility(View.VISIBLE);
mViewDataBinding.rvNoti.setVisibility(View.GONE);
mViewDataBinding.ivNoteNodata.setVisibility(View.VISIBLE);
}
@Override
@@ -892,10 +806,10 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
WeatherNowBean.NowBaseBean now = weatherBean.getNow();
// String imageName = "he" + now.getIcon();
// int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
// iv_pic.setImageDrawable(mContext.getDrawable(resId));
// ivPic.setImageDrawable(mContext.getDrawable(resId));
nowString = now.getText();
tv_temp.setText(now.getTemp() + "");
tv_weather.setText(now.getText());
mViewDataBinding.tvTemp.setText(now.getTemp() + "");
mViewDataBinding.tvWeather.setText(now.getText());
String iconDay = weatherBean.getNow().getIcon();
Log.e("getweather", "onSuccess: iconDay = " + iconDay);
switch (iconDay) {
@@ -904,13 +818,13 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
case "102":
case "152":
if (DayUtils.isNight()) {
cl_weather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun));
mViewDataBinding.clWeather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun));
} else {
cl_weather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun_night));
mViewDataBinding.clWeather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_sun_night));
}
break;
default:
cl_weather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_rain));
mViewDataBinding.clWeather.setBackground(ContextCompat.getDrawable(mContext, R.drawable.background_weather_rain));
}
} else {
//在此查看返回数据失败的原因
@@ -939,11 +853,11 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
Log.e(TAG, "onSuccess: " + resId);
if (resId == 0) {
iv_pic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
} else {
iv_pic.setImageDrawable(mContext.getDrawable(resId));
mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(resId));
}
tv_temp.setText(now.getTemp() + "");
mViewDataBinding.tvTemp.setText(now.getTemp() + "");
}
}
} else {
@@ -969,7 +883,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
List<WeatherDailyBean.DailyBean> dailyBeans = weatherDailyBean.getDaily();
if (dailyBeans != null && dailyBeans.size() != 0) {
WeatherDailyBean.DailyBean dailyBean = weatherDailyBean.getDaily().get(0);
tv_weather.setText(nowString + "\t" + dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "");
mViewDataBinding.tvWeather.setText(nowString + "\t" + dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "");
}
}
});
@@ -993,18 +907,17 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
long total = AppUtil.getTotalMemory(mContext);
int x = (int) (((total - avail) / (double) total) * 100);
if (x > 80) {
cpv.setProgressColor(mShaderColorsRed);
mViewDataBinding.cpv.setProgressColor(mShaderColorsRed);
} else {
cpv.setProgressColor(mShaderColors);
mViewDataBinding.cpv.setProgressColor(mShaderColors);
}
cpv.showAnimation(0, x, 1000);
mViewDataBinding.cpv.showAnimation(0, x, 1000);
float x2 = (((total - avail) / (float) total));
}
@Override
public void onDestroy() {
super.onDestroy();
mCustomPresenter.detachView();
NetworkUtils.unregisterNetworkStatusChangedListener(this);
if (batteryReceiver != null) {
mContext.unregisterReceiver(batteryReceiver);
@@ -1016,4 +929,8 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom
mContext.unregisterReceiver(mTimeChangedReceiver);
}
}
public class BtnClick {
}
}

View File

@@ -1,54 +0,0 @@
package com.uiuios.aios.fragment.custom;
import android.content.Context;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiuios.aios.bean.SnInfo;
import com.uiuios.aios.bean.UserAvatarInfo;
import com.uiuios.aios.network.NetInterfaceManager;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public class CustomPresenter implements CustomContact.Presenter {
private static final String TAG = CustomPresenter.class.getSimpleName();
private Context mContext;
private CustomContact.CustomView mView;
public CustomPresenter(Context context) {
this.mContext = context;
}
private BehaviorSubject<FragmentEvent> lifecycle;
void setLifecycle(BehaviorSubject<FragmentEvent> lifecycle) {
this.lifecycle = lifecycle;
}
public BehaviorSubject<FragmentEvent> getLifecycle() {
return lifecycle;
}
@Override
public void attachView(@NonNull CustomContact.CustomView view) {
this.mView = view;
}
@Override
public void detachView() {
this.mView = null;
}
@Override
public void getSnInfo() {
NetInterfaceManager.getInstance().getUserAvatarInfo(lifecycle, new NetInterfaceManager.UserAvatarInfoCallback() {
@Override
public void setUserAvatarInfo(UserAvatarInfo info) {
mView.setSnInfo(info);
}
});
}
}

View File

@@ -0,0 +1,37 @@
package com.uiuios.aios.fragment.custom;
import androidx.lifecycle.MutableLiveData;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.bean.UserAvatarInfo;
import com.uiuios.aios.databinding.FragmentCustomBinding;
import com.uiuios.aios.network.NetInterfaceManager;
public class CustomViewModel extends BaseViewModel<FragmentCustomBinding, FragmentEvent> {
@Override
public FragmentCustomBinding getVDBinding() {
return binding;
}
@Override
public void onDestroy() {
}
private MutableLiveData<UserAvatarInfo> mUserAvatarInfoData =new MutableLiveData<>();
public MutableLiveData<UserAvatarInfo> getUserAvatarInfoData() {
return mUserAvatarInfoData;
}
public void getSnInfo() {
NetInterfaceManager.getInstance().getUserAvatarInfo(getLifecycle(), new NetInterfaceManager.UserAvatarInfoCallback() {
@Override
public void setUserAvatarInfo(UserAvatarInfo info) {
mUserAvatarInfoData.setValue(info);
}
});
}
}

View File

@@ -4,6 +4,8 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
@@ -72,6 +74,10 @@ public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBi
private HomeAppAdapter mHomeAppAdapter;
// private NotificationAdapter notificationAdapter;
private CameraManager cameraManager;
private boolean flashing = false;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private int[] mShaderColors = new int[]{0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192, 0xFF05d192};
@@ -146,6 +152,7 @@ public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBi
mViewModel.setVDBinding(mViewDataBinding);
mViewModel.setLifecycle(getLifecycleSubject());
mViewDataBinding.setClick(new BtnClick());
cameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
}
@Override
@@ -510,6 +517,19 @@ public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBi
startActivity(new Intent(mContext, SettingActivity.class));
}
public void openFlash(View v) {
try {
String cameraId = cameraManager.getCameraIdList()[0];
cameraManager.setTorchMode(cameraId, !flashing);
flashing = !flashing;
mViewDataBinding.setFlashing(flashing);
} catch (CameraAccessException e) {
e.printStackTrace();
Log.e(TAG, "openFlash: " + e.getMessage());
Toaster.show("打开手电筒失败");
}
}
public void killApp(View view) {
killBackgroundApp();
}

View File

@@ -15,6 +15,7 @@ import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.contact.AddWechatContactActivity;
import com.uiuios.aios.activity.contact.EditContactActivity;
@@ -23,6 +24,7 @@ import com.uiuios.aios.adapter.WechatContactAdapter;
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.FragmentContactBinding;
import com.uiuios.aios.dialog.EditContactDialog;
@@ -37,6 +39,8 @@ import java.util.List;
public class ContactFragment extends BaseMvvmFragment<ContactViewModel, FragmentContactBinding> {
private static final String TAG = ContactFragment.class.getSimpleName();
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private Context mContext;
private ContactAdapter mContactAdapter;
@@ -69,7 +73,12 @@ public class ContactFragment extends BaseMvvmFragment<ContactViewModel, Fragment
mContactAdapter.setOnLongClick(new WechatContactAdapter.OnLongClick() {
@Override
public void setOnLongClickListener(Contact contact) {
showDialog(contact);
boolean disableModify = mMMKV.decodeBool(CommonConfig.DISABLE_CONTACT_MODIFY, false);
if (disableModify){
Toaster.showLong("已禁用联系人修改");
}else {
showDialog(contact);
}
}
});
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);

View File

@@ -2,6 +2,8 @@ package com.uiuios.aios.fragment.phone.dialer;
import android.content.Context;
import android.content.Intent;
import android.media.AudioAttributes;
import android.media.SoundPool;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
@@ -9,16 +11,19 @@ import android.util.Log;
import android.view.View;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.SelectNumberActivity;
import com.uiuios.aios.activity.selectnumber.SelectNumberActivity;
import com.uiuios.aios.activity.contact.AddWechatContactActivity;
import com.uiuios.aios.activity.contact.ContactActivity;
import com.uiuios.aios.activity.records.RecordsActivity;
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.databinding.FragmentDialerBinding;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.databinding.FragmentDialerNewBinding;
import com.uiuios.aios.utils.Utils;
import java.util.HashMap;
/**
* A simple {@link BaseMvvmFragment} subclass.
* Use the {@link DialerFragment#newInstance} factory method to
@@ -26,9 +31,12 @@ import com.uiuios.aios.utils.Utils;
*/
public class DialerFragment extends BaseMvvmFragment<DialerViewModel, FragmentDialerNewBinding> {
private static final String TAG = DialerFragment.class.getSimpleName();
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private Context mContext;
private SoundPool soundPool;
private HashMap<Integer, Integer> soundMap = new HashMap<>();
public DialerFragment() {
@@ -55,7 +63,25 @@ public class DialerFragment extends BaseMvvmFragment<DialerViewModel, FragmentDi
@Override
protected void initView(Bundle bundle) {
AudioAttributes attr = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_GAME) // 设置音效使用场景
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build(); // 设置音效的类型
soundPool = new SoundPool.Builder().setAudioAttributes(attr) // 设置音效池的属性
.setMaxStreams(12) // 设置最多可容纳10个音频流
.build(); // ①
// load方法加载指定音频文件并返回所加载的音效ID
// 此处使用HashMap来管理这些音频流
soundMap.put(0, soundPool.load(mContext, R.raw.s_0, 1));
soundMap.put(1, soundPool.load(mContext, R.raw.s_1, 1));
soundMap.put(2, soundPool.load(mContext, R.raw.s_2, 1));
soundMap.put(3, soundPool.load(mContext, R.raw.s_3, 1));
soundMap.put(4, soundPool.load(mContext, R.raw.s_4, 1));
soundMap.put(5, soundPool.load(mContext, R.raw.s_5, 1));
soundMap.put(6, soundPool.load(mContext, R.raw.s_6, 1));
soundMap.put(7, soundPool.load(mContext, R.raw.s_7, 1));
soundMap.put(8, soundPool.load(mContext, R.raw.s_8, 1));
soundMap.put(9, soundPool.load(mContext, R.raw.s_9, 1));
soundMap.put(10, soundPool.load(mContext, R.raw.s_x, 1));
soundMap.put(11, soundPool.load(mContext, R.raw.s_j, 1));
}
@Override
@@ -95,7 +121,10 @@ public class DialerFragment extends BaseMvvmFragment<DialerViewModel, FragmentDi
} else {
mViewDataBinding.etPhone.setText(tmp + number);
}
// soundPool.play(soundMap.get(position), 1, 1, 0, 0, 1);
boolean dialTone = mMMKV.decodeBool(CommonConfig.DISABLE_DIAL_TONE_MODIFY, true);
if (dialTone) {
soundPool.play(soundMap.get(position), 1, 1, 0, 0, 1);
}
}
public class BtnClick {

View File

@@ -1,29 +0,0 @@
package com.uiuios.aios.fragment.second;
import com.uiui.video.bean.VideoInfo;
import com.uiuios.aios.base.mvp.BasePresenter;
import com.uiuios.aios.base.mvp.BaseView;
import com.uiuios.aios.bean.ArticleInfo;
import com.uiuios.aios.bean.GoodsInfo;
import com.uiuios.aios.bean.ServeBean;
import java.util.ArrayList;
import java.util.List;
public class SecondContact {
public interface Presenter extends BasePresenter<View> {
void getGoods();
void getArticle();
void getLivenVideoList();
void getKnowledgeVideoList();
void getServe();
}
public interface View extends BaseView {
void setGoods(List<GoodsInfo> goodsInfos);
void setArticle(List<ArticleInfo> articleInfoList);
void setLivenVideoList(ArrayList<VideoInfo> livenVideoList);
void setKnowledgeVideoList(ArrayList<VideoInfo> knowledgeVideoList);
void setServe(ServeBean serve);
}
}

View File

@@ -1,19 +1,15 @@
package com.uiuios.aios.fragment.second;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
@@ -21,15 +17,15 @@ import androidx.recyclerview.widget.RecyclerView;
import com.blankj.utilcode.util.NetworkUtils;
import com.uiui.video.bean.VideoInfo;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.OrderListActivity;
import com.uiuios.aios.adapter.KnowledgeVideoAdapter;
import com.uiuios.aios.adapter.LivenVideoAdapter;
import com.uiuios.aios.adapter.NewArticleAdapter;
import com.uiuios.aios.adapter.NewGoodsAdapter;
import com.uiuios.aios.base.BaseFragment;
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
import com.uiuios.aios.bean.ArticleInfo;
import com.uiuios.aios.bean.GoodsInfo;
import com.uiuios.aios.bean.ServeBean;
import com.uiuios.aios.databinding.FragmentSecondBinding;
import com.uiuios.aios.utils.GlideLoadUtils;
import com.uiuios.aios.utils.JGYUtils;
@@ -38,37 +34,15 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* A simple {@link androidx.fragment.app.Fragment} subclass.
* Use the {@link SecondFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class SecondFragment extends BaseFragment implements SecondContact.View, NetworkUtils.OnNetworkStatusChangedListener {
public class SecondFragment extends BaseMvvmFragment<SecondViewModel, FragmentSecondBinding> implements NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = SecondFragment.class.getSimpleName();
@BindView(R.id.rv_goods)
RecyclerView rv_goods;
@BindView(R.id.rv_article)
RecyclerView rv_article;
@BindView(R.id.rv_liven)
RecyclerView rv_liven;
@BindView(R.id.rv_knowledge)
RecyclerView rv_knowledge;
@BindView(R.id.cl_service)
ConstraintLayout cl_service;
@BindView(R.id.iv_serve)
ImageView iv_serve;
private View rootView;
private Context mContext;
private ContentResolver mCRv;
private SecondPresenter mPresenter;
private NewGoodsAdapter mNewGoodsAdapter;
private NewArticleAdapter mNewArticleAdapter;
@@ -86,15 +60,6 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
private Runnable mArticleRunnable;
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
@Override
public void onDisconnected() {
@@ -108,37 +73,18 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
}
public SecondFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment SecondFragment.
*/
// TODO: Rename and change types and number of parameters
public static SecondFragment newInstance(String param1, String param2) {
SecondFragment secondFragment = new SecondFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
secondFragment.setArguments(args);
return secondFragment;
SecondFragment fragment = new SecondFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
NetworkUtils.registerNetworkStatusChangedListener(this);
}
@Override
@@ -148,50 +94,39 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
long time = System.currentTimeMillis();
Log.e(TAG, "onCreateView: rootView = " + rootView);
if (null != rootView) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (null != parent) {
parent.removeView(rootView);
}
} else { // 如ongoing果rootView为空 ,就实例化该视图
rootView = inflater.inflate(R.layout.fragment_second, container, false);
mContext = rootView.getContext();
mCRv = mContext.getContentResolver();
ButterKnife.bind(this, rootView);
mPresenter = new SecondPresenter(mContext);
mPresenter.attachView(this);
mPresenter.setLifecycle(getLifecycleSubject());
initView();
initData();
}
Log.e(TAG, "onCreateView: tiem = " + (System.currentTimeMillis() - time));
return rootView;
protected int getLayoutId() {
return R.layout.fragment_second;
}
private void initView() {
@Override
protected void initDataBinding() {
mContext = getActivity();
mViewModel.setCtx(getCtx());
mViewModel.setLifecycle(getLifecycleSubject());
mViewModel.setVDBinding(mViewDataBinding);
mViewDataBinding.setClick(new BtnClick());
}
@Override
protected void initView(Bundle bundle) {
mNewGoodsAdapter = new NewGoodsAdapter();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
rv_goods.setLayoutManager(linearLayoutManager);
rv_goods.setAdapter(mNewGoodsAdapter);
mViewDataBinding.rvGoods.setLayoutManager(linearLayoutManager);
mViewDataBinding.rvGoods.setAdapter(mNewGoodsAdapter);
LinearSnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(rv_goods);
rv_goods.addOnScrollListener(new RecyclerView.OnScrollListener() {
snapHelper.attachToRecyclerView(mViewDataBinding.rvGoods);
mViewDataBinding.rvGoods.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
Log.i("rv_goods", "onScrollStateChanged: newState = " + newState);
Log.i("rvGoods", "onScrollStateChanged: newState = " + newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
mGoodsScrolling = false;
// 获取当前滚动到的条目位置
int firstIndex = linearLayoutManager.findFirstVisibleItemPosition();
Log.i("rv_goods", "onScrollStateChanged: firstIndex = " + firstIndex);
Log.i("rv_goods", "onScrollStateChanged: mCurrentGoodsIndex = " + mCurrentGoodsIndex);
Log.i("rvGoods", "onScrollStateChanged: firstIndex = " + firstIndex);
Log.i("rvGoods", "onScrollStateChanged: mCurrentGoodsIndex = " + mCurrentGoodsIndex);
mCurrentGoodsIndex = firstIndex + 1;
} else {
mGoodsScrolling = true;
@@ -207,21 +142,21 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
mNewArticleAdapter = new NewArticleAdapter();
LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(mContext);
linearLayoutManager2.setOrientation(LinearLayoutManager.HORIZONTAL);
rv_article.setLayoutManager(linearLayoutManager2);
rv_article.setAdapter(mNewArticleAdapter);
mViewDataBinding.rvArticle.setLayoutManager(linearLayoutManager2);
mViewDataBinding.rvArticle.setAdapter(mNewArticleAdapter);
LinearSnapHelper snapHelper2 = new LinearSnapHelper();
snapHelper2.attachToRecyclerView(rv_article);
rv_article.addOnScrollListener(new RecyclerView.OnScrollListener() {
snapHelper2.attachToRecyclerView(mViewDataBinding.rvArticle);
mViewDataBinding.rvArticle.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
Log.i("rv_article", "onScrollStateChanged: newState = " + newState);
Log.i("rvArticle", "onScrollStateChanged: newState = " + newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
mArticleScrolling = false;
// 获取当前滚动到的条目位置
int firstIndex = linearLayoutManager2.findFirstVisibleItemPosition();
Log.i("rv_article", "onScrollStateChanged: firstIndex = " + firstIndex);
Log.i("rv_article", "onScrollStateChanged: mCurrentArticleIndex = " + mCurrentArticleIndex);
Log.i("rvArticle", "onScrollStateChanged: firstIndex = " + firstIndex);
Log.i("rvArticle", "onScrollStateChanged: mCurrentArticleIndex = " + mCurrentArticleIndex);
mCurrentArticleIndex = firstIndex + 1;
} else {
mArticleScrolling = true;
@@ -247,7 +182,7 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
} else {
mCurrentGoodsIndex++;
}
rv_goods.smoothScrollToPosition(mCurrentGoodsIndex);
mViewDataBinding.rvGoods.smoothScrollToPosition(mCurrentGoodsIndex);
mGoodsHandler.postDelayed(this, 3000);
}
};
@@ -264,7 +199,7 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
} else {
mCurrentArticleIndex++;
}
rv_article.smoothScrollToPosition(mCurrentArticleIndex);
mViewDataBinding.rvArticle.smoothScrollToPosition(mCurrentArticleIndex);
mArticleHandler.postDelayed(this, 3000);
}
};
@@ -273,20 +208,20 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
mLivenVideoAdapter = new LivenVideoAdapter();
LinearLayoutManager linearLayoutManager3 = new LinearLayoutManager(mContext);
linearLayoutManager3.setOrientation(LinearLayoutManager.HORIZONTAL);
rv_liven.setLayoutManager(linearLayoutManager3);
rv_liven.setAdapter(mLivenVideoAdapter);
mViewDataBinding.rvLiven.setLayoutManager(linearLayoutManager3);
mViewDataBinding.rvLiven.setAdapter(mLivenVideoAdapter);
LinearSnapHelper snapHelper3 = new LinearSnapHelper();
snapHelper3.attachToRecyclerView(rv_liven);
snapHelper3.attachToRecyclerView(mViewDataBinding.rvLiven);
mKnowledgeVideoAdapter = new KnowledgeVideoAdapter();
LinearLayoutManager linearLayoutManager4 = new LinearLayoutManager(mContext);
linearLayoutManager4.setOrientation(LinearLayoutManager.HORIZONTAL);
rv_knowledge.setLayoutManager(linearLayoutManager4);
rv_knowledge.setAdapter(mKnowledgeVideoAdapter);
mViewDataBinding.rvKnowledge.setLayoutManager(linearLayoutManager4);
mViewDataBinding.rvKnowledge.setAdapter(mKnowledgeVideoAdapter);
LinearSnapHelper snapHelper4 = new LinearSnapHelper();
snapHelper4.attachToRecyclerView(rv_knowledge);
snapHelper4.attachToRecyclerView(mViewDataBinding.rvKnowledge);
cl_service.setOnClickListener(new View.OnClickListener() {
mViewDataBinding.clService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// startActivity(new Intent(mContext, OrderListActivity.class));
@@ -294,12 +229,61 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
});
}
@Override
protected void initData(Bundle savedInstanceState) {
mViewModel.getGoodsListData().observe(this, new Observer<List<GoodsInfo>>() {
@Override
public void onChanged(List<GoodsInfo> goodsInfos) {
if (goodsInfos != null && goodsInfos.size() != 0) {
mNewGoodsAdapter.setGoodsInfoList(goodsInfos);
mGoodsHandler.removeCallbacks(mGoodsRunnable);
mGoodsHandler.postDelayed(mGoodsRunnable, 3000);
} else {
}
}
});
mViewModel.getArticleInfoListData().observe(this, new Observer<List<ArticleInfo>>() {
@Override
public void onChanged(List<ArticleInfo> articleInfos) {
if (articleInfos != null && articleInfos.size() != 0) {
mNewArticleAdapter.setArticleBeanList(articleInfos);
mArticleHandler.removeCallbacks(mArticleRunnable);
mArticleHandler.postDelayed(mArticleRunnable, 3000);
} else {
}
}
});
mViewModel.getVideoInfoListData().observe(this, new Observer<ArrayList<VideoInfo>>() {
@Override
public void onChanged(ArrayList<VideoInfo> videoInfos) {
mLivenVideoAdapter.setLivenVideoList(videoInfos);
}
});
mViewModel.getKnowledgeVideoInfoListData().observe(this, new Observer<ArrayList<VideoInfo>>() {
@Override
public void onChanged(ArrayList<VideoInfo> videoInfos) {
mKnowledgeVideoAdapter.setLivenVideoList(videoInfos);
}
});
mViewModel.getServeBeanData().observe(this, new Observer<ServeBean>() {
@Override
public void onChanged(ServeBean serveBean) {
if (serveBean != null) {
GlideLoadUtils.getInstance().glideLoad(mContext, serveBean.getImage(), mViewDataBinding.ivServe, R.drawable.enterprise_wechat);
}
}
});
}
private void initData() {
mPresenter.getGoods();
mPresenter.getArticle();
mPresenter.getLivenVideoList();
mPresenter.getKnowledgeVideoList();
mPresenter.getServe();
mViewModel.getGoods();
mViewModel.getArticle();
mViewModel.getLivenVideoList();
mViewModel.getKnowledgeVideoList();
mViewModel.getServe();
}
@Override
@@ -331,43 +315,7 @@ public class SecondFragment extends BaseFragment implements SecondContact.View,
}
}
@Override
public void setGoods(List<GoodsInfo> goodsInfos) {
if (goodsInfos != null && goodsInfos.size() != 0) {
mNewGoodsAdapter.setGoodsInfoList(goodsInfos);
mGoodsHandler.removeCallbacks(mGoodsRunnable);
mGoodsHandler.postDelayed(mGoodsRunnable, 3000);
} else {
public class BtnClick {
}
}
@Override
public void setArticle(List<ArticleInfo> articleInfoList) {
if (articleInfoList != null && articleInfoList.size() != 0) {
mNewArticleAdapter.setArticleBeanList(articleInfoList);
mArticleHandler.removeCallbacks(mArticleRunnable);
mArticleHandler.postDelayed(mArticleRunnable, 3000);
} else {
}
}
@Override
public void setLivenVideoList(ArrayList<VideoInfo> livenVideoList) {
mLivenVideoAdapter.setLivenVideoList(livenVideoList);
}
@Override
public void setKnowledgeVideoList(ArrayList<VideoInfo> knowledgeVideoList) {
mKnowledgeVideoAdapter.setLivenVideoList(knowledgeVideoList);
}
@Override
public void setServe(ServeBean serve) {
if (serve != null) {
GlideLoadUtils.getInstance().glideLoad(mContext, serve.getImage(), iv_serve, R.drawable.enterprise_wechat);
}
}
}

View File

@@ -1,17 +1,20 @@
package com.uiuios.aios.fragment.second;
import android.content.Context;
import android.util.Log;
import androidx.lifecycle.MutableLiveData;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiui.video.bean.VideoInfo;
import com.uiuios.aios.base.mvvm.BaseViewModel;
import com.uiuios.aios.bean.ArticleInfo;
import com.uiuios.aios.bean.ArticleList;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.bean.GoodsInfo;
import com.uiuios.aios.bean.GoodsList;
import com.uiuios.aios.bean.ServeBean;
import com.uiuios.aios.databinding.FragmentSecondBinding;
import com.uiuios.aios.network.NetInterfaceManager;
import java.util.ArrayList;
@@ -20,39 +23,25 @@ import java.util.List;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public class SecondPresenter implements SecondContact.Presenter {
public class SecondViewModel extends BaseViewModel<FragmentSecondBinding, FragmentEvent> {
private static final String TAG = SecondPresenter.class.getSimpleName();
private Context mContext;
private SecondContact.View mView;
public SecondPresenter(Context context) {
this.mContext = context;
}
private BehaviorSubject<FragmentEvent> lifecycle;
void setLifecycle(BehaviorSubject<FragmentEvent> lifecycle) {
this.lifecycle = lifecycle;
}
public BehaviorSubject<FragmentEvent> getLifecycle() {
return lifecycle;
@Override
public FragmentSecondBinding getVDBinding() {
return binding;
}
@Override
public void attachView(@NonNull SecondContact.View view) {
this.mView = view;
public void onDestroy() {
}
@Override
public void detachView() {
this.mView = null;
private MutableLiveData< List<GoodsInfo> > mGoodsListData =new MutableLiveData<>();
public MutableLiveData<List<GoodsInfo>> getGoodsListData() {
return mGoodsListData;
}
@Override
public void getGoods() {
NetInterfaceManager.getInstance()
.getGoodsListObservable()
@@ -70,12 +59,12 @@ public class SecondPresenter implements SecondContact.Presenter {
GoodsList goodsList = listBaseResponse.data;
List<GoodsInfo> goodsInfos = goodsList.getData();
if (goodsInfos != null && goodsInfos.size() != 0) {
mView.setGoods(goodsInfos);
mGoodsListData.setValue(goodsInfos);
} else {
mView.setGoods(null);
mGoodsListData.setValue(null);
}
} else {
mView.setGoods(null);
mGoodsListData.setValue(null);
}
}
@@ -91,7 +80,12 @@ public class SecondPresenter implements SecondContact.Presenter {
});
}
@Override
private MutableLiveData<List<ArticleInfo>> mArticleInfoListData =new MutableLiveData<>();
public MutableLiveData<List<ArticleInfo>> getArticleInfoListData() {
return mArticleInfoListData;
}
public void getArticle() {
NetInterfaceManager.getInstance().getArticleListObservable()
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
@@ -109,12 +103,12 @@ public class SecondPresenter implements SecondContact.Presenter {
List<ArticleInfo> articleInfoList = articleList.getData();
if (articleInfoList != null && articleInfoList.size() != 0) {
articleInfoList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight()));
mView.setArticle(articleInfoList);
mArticleInfoListData.setValue(articleInfoList);
} else {
mView.setArticle(null);
mArticleInfoListData.setValue(null);
}
} else {
mView.setArticle(null);
mArticleInfoListData.setValue(null);
}
}
@@ -130,7 +124,12 @@ public class SecondPresenter implements SecondContact.Presenter {
});
}
@Override
private MutableLiveData<ArrayList<VideoInfo> > mVideoInfoListData =new MutableLiveData<>();
public MutableLiveData<ArrayList<VideoInfo>> getVideoInfoListData() {
return mVideoInfoListData;
}
public void getLivenVideoList() {
NetInterfaceManager.getInstance().getLivenVideoListObservable()
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
@@ -146,7 +145,7 @@ public class SecondPresenter implements SecondContact.Presenter {
if (listBaseResponse.code == 200) {
ArrayList<VideoInfo> videoInfoArrayList = listBaseResponse.data;
videoInfoArrayList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight()));
mView.setLivenVideoList(videoInfoArrayList);
mVideoInfoListData.setValue(videoInfoArrayList);
}
}
@@ -162,7 +161,12 @@ public class SecondPresenter implements SecondContact.Presenter {
});
}
@Override
private MutableLiveData<ArrayList<VideoInfo> > mKnowledgeVideoInfoListData =new MutableLiveData<>();
public MutableLiveData<ArrayList<VideoInfo>> getKnowledgeVideoInfoListData() {
return mKnowledgeVideoInfoListData;
}
public void getKnowledgeVideoList() {
NetInterfaceManager.getInstance().getKnowledgeVideoListObservable()
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
@@ -178,7 +182,7 @@ public class SecondPresenter implements SecondContact.Presenter {
if (listBaseResponse.code == 200) {
ArrayList<VideoInfo> videoInfoArrayList = listBaseResponse.data;
videoInfoArrayList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight()));
mView.setKnowledgeVideoList(videoInfoArrayList);
mKnowledgeVideoInfoListData.setValue(videoInfoArrayList);
}
}
@@ -194,7 +198,12 @@ public class SecondPresenter implements SecondContact.Presenter {
});
}
@Override
private MutableLiveData<ServeBean> mServeBeanData =new MutableLiveData<>();
public MutableLiveData<ServeBean> getServeBeanData() {
return mServeBeanData;
}
public void getServe() {
NetInterfaceManager.getInstance().getServeObservable()
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
@@ -210,7 +219,7 @@ public class SecondPresenter implements SecondContact.Presenter {
if (serveBeanBaseResponse.code == 200) {
ServeBean serveBean = serveBeanBaseResponse.data;
if (serveBean != null) {
mView.setServe(serveBean);
mServeBeanData.setValue(serveBean);
}
} else {

View File

@@ -0,0 +1,45 @@
package com.uiuios.aios.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.activity.tts.TtsActivity;
import com.uiuios.aios.config.CommonConfig;
public class SmsReceiver extends BroadcastReceiver {
private static final String TAG = SmsReceiver.class.getSimpleName();
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "onReceive: " + intent.getAction());
Bundle bundle = intent.getExtras();
String format = intent.getStringExtra("format");
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object object : pdus) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) object, format);
String sender = message.getOriginatingAddress();
Log.e(TAG, "onReceive: sender = " + sender);
long millis = message.getTimestampMillis();
int status = message.getStatus();
String body = message.getMessageBody();
Log.e(TAG, "onReceive: body = " + body);
boolean voiceBroadcast = mMMKV.decodeBool(CommonConfig.VOICE_BROADCAST, false);
Log.e(TAG, "onReceive: voiceBroadcast = " + voiceBroadcast);
if (voiceBroadcast) {
Intent ttsIntent = new Intent(context, TtsActivity.class);
ttsIntent.putExtra("sender", sender);
ttsIntent.putExtra("body", body);
ttsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(ttsIntent);
}
}
}
}
}

View File

@@ -21,7 +21,6 @@ import android.widget.Toast;
import com.tencent.mmkv.MMKV;
import com.uiuios.aios.bean.Contact;
import com.uiuios.aios.bean.WechatInfo;
import com.uiuios.aios.config.CommonConfig;
public class WeAccessibilityService extends AccessibilityService {
@@ -71,6 +70,7 @@ public class WeAccessibilityService extends AccessibilityService {
super.onCreate();
Log.e(TAG, "onCreate: ");
registerSettingReceiver();
mAutoAccept = mMMKV.decodeBool(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, false);
handler = new Handler();
}
@@ -131,9 +131,9 @@ public class WeAccessibilityService extends AccessibilityService {
switch (mCurrentStep) {
case WAITING:
if (!mAutoAccept) return;
if (step(Property.DESCRIPTION, RECEIVE_DESCRIPTION, Step.WAITING)) {
if (stepAnswer(Property.DESCRIPTION, RECEIVE_DESCRIPTION)) {
mCurrentStep = Step.WAITING;
Toast.makeText(this, "自动接听视频/语音聊天", Toast.LENGTH_LONG).show();
Toast.makeText(this, "自动接听视频/语音", Toast.LENGTH_LONG).show();
}
break;
case CLICK_HOME://主页能找到直接点击进去更多
@@ -325,6 +325,23 @@ public class WeAccessibilityService extends AccessibilityService {
}
}
private boolean stepAnswer(Property type, String text) {
AccessibilityNodeInfo node = findNode(getRootInActiveWindow(), type, text);
if (node != null) {
Point point = getPointtByNode(node);
Log.e(TAG, "stepAnswer: " + point);
clickByNode(point.x, point.y + 50);
// clickNode(node);
Log.e(TAG, "stepAnswer: mCurrentStep " + mCurrentStep + " done");
mCurrentStep = Step.WAITING;
Log.e(TAG, "stepAnswer: next " + mCurrentStep);
return true;
} else {
Log.e(TAG, "stepAnswer: not found");
return false;
}
}
//根据节点信息可获得对应的xy坐标
static Point getPointtByNode(AccessibilityNodeInfo node) {
if (node == null) {
@@ -336,7 +353,6 @@ public class WeAccessibilityService extends AccessibilityService {
return point;
}
//实现对xy坐标进行点击操作。
private boolean clickByNode(int x, int y) {
Point point = new Point(x, y);

View File

@@ -1,15 +1,16 @@
package com.uiuios.aios.service.main;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.PowerManager;
import android.provider.Settings;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -27,13 +28,14 @@ import com.uiuios.aios.BuildConfig;
import com.uiuios.aios.R;
import com.uiuios.aios.activity.main.MainActivity;
import com.uiuios.aios.activity.noti.NoticeActivity;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.alarm.AlarmUtils;
import com.uiuios.aios.base.rx.BaseRxService;
import com.uiuios.aios.alarm.AlarmClockData;
import com.uiuios.aios.bean.BaseResponse;
import com.uiuios.aios.config.CommonConfig;
import com.uiuios.aios.manager.RemoteManager;
import com.uiuios.aios.network.NetInterfaceManager;
import com.uiuios.aios.receiver.SmsReceiver;
import com.uiuios.aios.utils.ApkUtils;
import com.uiuios.aios.utils.AppUsedTimeUtils;
import com.uiuios.aios.utils.CmdUtil;
@@ -146,6 +148,7 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
registerLockScreenReceiver();
registerRefreshReceiver();
registerScreenLockReceiver();
registerSmsReceiver();
}
@Override
@@ -174,6 +177,9 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
if (mWindowReceiver != null) {
unregisterReceiver(mWindowReceiver);
}
if (mSmsReceiver != null) {
unregisterReceiver(mSmsReceiver);
}
}
@Override
@@ -533,6 +539,18 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
}
}
private void registerSmsReceiver() {
if (mSmsReceiver == null) {
mSmsReceiver = new SmsReceiver();
}
IntentFilter smsFilter = new IntentFilter();
smsFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
smsFilter.addAction("android.provider.Telephony.SMS_DELIVER");
registerReceiver(new SmsReceiver(), smsFilter);
}
private SmsReceiver mSmsReceiver;
/**
* 显示弹出框
*/

View File

@@ -170,6 +170,9 @@ public class ApkUtils {
this.add("com.android.stk");
this.add("com.debug.loggerui");
this.add("com.mediatek.gnss.nonframeworklbs");
this.add("com.tencent.mm");
this.add("com.ss.android.ugc.aweme");
this.add("com.mediatek.camera");
}};
/**

View File

@@ -0,0 +1,114 @@
package com.uiuios.aios.view;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
public class FadeInOutAnimator extends SimpleItemAnimator {
private boolean mPendingRemovals = false;
private boolean mPendingAdditions = false;
@Override
public boolean animateRemove(final RecyclerView.ViewHolder holder) {
mPendingRemovals = true;
holder.itemView.animate()
.alpha(0)
.setDuration(getRemoveDuration())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator anim) {
dispatchRemoveFinished(holder);
mPendingRemovals = false;
if (!mPendingAdditions && !isRunning()) {
dispatchAnimationsFinished();
}
}
})
.start();
return true;
}
@Override
public boolean animateAdd(final RecyclerView.ViewHolder holder) {
mPendingAdditions = true;
holder.itemView.setAlpha(0);
holder.itemView.animate()
.alpha(1)
.setDuration(getAddDuration())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator anim) {
dispatchAddFinished(holder);
mPendingAdditions = false;
if (!mPendingRemovals && !isRunning()) {
dispatchAnimationsFinished();
}
}
})
.start();
return true;
}
@Override
public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) {
// Fade in and out are implemented for add/remove, no need to implement move
return false;
}
@Override
public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromLeft, int fromTop, int toLeft, int toTop) {
// Fade in and out are implemented for add/remove, no need to implement change
mPendingAdditions = true;
oldHolder.itemView.animate()
.alpha(0)
.setDuration(getChangeDuration())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator anim) {
dispatchRemoveFinished(oldHolder);
mPendingRemovals = false;
if (!mPendingAdditions && !isRunning()) {
dispatchAnimationsFinished();
}
}
})
.start();
newHolder.itemView.animate()
.alpha(1)
.setDuration(getChangeDuration())
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator anim) {
dispatchRemoveFinished(newHolder);
mPendingRemovals = false;
if (!mPendingAdditions && !isRunning()) {
dispatchAnimationsFinished();
}
}
})
.start();
return true;
}
@Override
public void runPendingAnimations() {
}
@Override
public void endAnimation(RecyclerView.ViewHolder item) {
item.itemView.animate().cancel();
}
@Override
public void endAnimations() {
// No animations running, nothing to cancel
}
@Override
public boolean isRunning() {
return mPendingAdditions || mPendingRemovals;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@@ -10,7 +10,7 @@
<!-- android:endColor="#4C4C4D"-->
<!-- android:startColor="#636364" />-->
<solid android:color="#A088FF"/>
<solid android:color="#EB6877"/>
<!-- <padding-->
<!-- android:bottom="0dp"-->

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 内部颜色 -->
<!-- <solid android:color="@color/default_blue" />-->
<!-- 圆角的幅度 -->
<corners android:radius="@dimen/dp_12" />
<!-- <gradient-->
<!-- android:angle="270"-->
<!-- android:endColor="#4C4C4D"-->
<!-- android:startColor="#636364" />-->
<solid android:color="#ae5da1"/>
<!-- <padding-->
<!-- android:bottom="0dp"-->
<!-- android:left="8dp"-->
<!-- android:right="8dp"-->
<!-- android:top="0dp" />-->
</shape>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 内部颜色 -->
<solid android:color="#EDEDED" />
<!-- 圆角的幅度 -->
<corners android:radius="@dimen/dp_8" />
<padding
android:bottom="@dimen/dp_4"
android:left="@dimen/dp_4"
android:right="@dimen/dp_4"
android:top="@dimen/dp_4" />
</shape>

View File

@@ -5,14 +5,14 @@
<solid android:color="@color/tv_add_color" />
<!-- 圆角的幅度 -->
<corners
android:bottomLeftRadius="@dimen/dp_16"
android:bottomRightRadius="@dimen/dp_16"
android:topLeftRadius="@dimen/dp_16"
android:topRightRadius="@dimen/dp_16" />
android:bottomLeftRadius="@dimen/dp_32"
android:bottomRightRadius="@dimen/dp_32"
android:topLeftRadius="@dimen/dp_32"
android:topRightRadius="@dimen/dp_32" />
<padding
android:bottom="@dimen/dp_6"
android:left="@dimen/dp_16"
android:right="@dimen/dp_16"
android:left="@dimen/dp_20"
android:right="@dimen/dp_20"
android:top="@dimen/dp_6" />
</shape>

View File

@@ -10,7 +10,7 @@
<!-- android:endColor="#4C4C4D"-->
<!-- android:startColor="#636364" />-->
<solid android:color="#5F52A0"/>
<solid android:color="#e84446"/>
<!-- <padding-->
<!-- android:bottom="0dp"-->

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 内部颜色 -->
<solid android:color="@color/default_blue" />
<!-- 圆角的幅度 -->
<corners android:radius="@dimen/dp_32" />
<padding
android:bottom="@dimen/dp_4"
android:left="@dimen/dp_24"
android:right="@dimen/dp_24"
android:top="@dimen/dp_4" />
</shape>

View File

@@ -6,6 +6,9 @@
<data>
<variable
name="click"
type="com.uiuios.aios.fragment.custom.CustomFragment.BtnClick" />
</data>
<com.uiuios.aios.view.CustomContent

View File

@@ -1,205 +1,215 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="fragment.second.SecondFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp_527"
android:layout_height="@dimen/dp_309"
android:layout_gravity="center">
<data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<variable
name="click"
type="com.uiuios.aios.fragment.second.SecondFragment.BtnClick" />
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp_527"
android:layout_height="@dimen/dp_309"
android:layout_gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="horizontal">
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
android:layout_weight="2"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="商品抢购"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView14">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_goods"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView22"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="资讯信息"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView22">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_article"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="商品抢购"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView14">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_goods"
android:id="@+id/rv_liven"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView22"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="资讯信息"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView22">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_article"
<TextView
android:id="@+id/textView25"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="学习大课堂"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView25">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_knowledge"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_service"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView29"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="企业客服"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView29">
<ImageView
android:id="@+id/iv_serve"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/dp_4"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:src="@drawable/enterprise_wechat" />
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_liven"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView25"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="学习大课堂"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView25">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_knowledge"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_service"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView29"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="企业客服"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView29">
<ImageView
android:id="@+id/iv_serve"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:layout_margin="@dimen/dp_4"
android:src="@drawable/enterprise_wechat"/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</layout>

View File

@@ -6,6 +6,9 @@
<data>
<variable
name="click"
type="com.uiuios.aios.fragment.custom.CustomFragment.BtnClick" />
</data>
<com.uiuios.aios.view.CustomContent

View File

@@ -9,6 +9,10 @@
<variable
name="click"
type="com.uiuios.aios.fragment.home.HomeFragment.BtnClick" />
<variable
name="flashing"
type="Boolean" />
</data>
<FrameLayout
@@ -128,8 +132,8 @@
android:id="@+id/tv_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="--"
android:layout_marginStart="@dimen/dp_4"
android:text="--"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
app:layout_constraintBottom_toBottomOf="@+id/imageView11"
@@ -157,6 +161,7 @@
android:layout_marginBottom="@dimen/dp_6"
android:layout_weight="1"
android:background="@drawable/home_card_accessibility_bg"
android:onClick="@{click::openSettings}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -205,26 +210,36 @@
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/home_family_space"
android:background="@drawable/home_card_family_bg"
app:corner_radius="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="@dimen/dp_80"
android:layout_height="@dimen/dp_80"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/home_icon_family_space"
app:layout_constraintBottom_toTopOf="@+id/textView10"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_8"
android:text="家庭空间"
android:textColor="#b48a5a"
android:textSize="@dimen/sp_16"
android:textColor="@color/white"
android:textSize="@dimen/sp_17"
android:textStyle="bold"
android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:layout_width="@dimen/dp_48"
@@ -362,7 +377,7 @@
android:layout_marginBottom="@dimen/dp_6"
android:layout_weight="1"
android:background="@drawable/home_card_setting_bg"
android:onClick="@{click::openSettings}"
android:onClick="@{click::openFlash}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -371,7 +386,7 @@
android:layout_height="@dimen/dp_80"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/home_icon_setting"
android:src="@{flashing?@drawable/home_icon_light_on:@drawable/home_icon_light_off}"
app:layout_constraintBottom_toTopOf="@+id/textView18"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -382,7 +397,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_8"
android:text="设置"
android:text="手电筒"
android:textColor="@color/white"
android:textSize="@dimen/sp_17"
android:textStyle="bold"

View File

@@ -1,201 +1,211 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="fragment.second.SecondFragment">
<androidx.constraintlayout.widget.ConstraintLayout
<data>
<variable
name="click"
type="com.uiuios.aios.fragment.second.SecondFragment.BtnClick" />
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="horizontal">
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
android:layout_weight="2"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="商品抢购"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView14">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_goods"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView22"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="资讯信息"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView22">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_article"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="商品抢购"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView14">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_goods"
android:id="@+id/rv_liven"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_4"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView22"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="资讯信息"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView22">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_article"
<TextView
android:id="@+id/textView25"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="学习大课堂"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView25">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_knowledge"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_service"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView29"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="企业客服"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView29">
<ImageView
android:id="@+id/iv_serve"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/dp_4"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:src="@drawable/enterprise_wechat" />
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:orientation="horizontal">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_liven"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView25"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="学习大课堂"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView25">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_knowledge"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_service"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/background_second_card">
<TextView
android:id="@+id/textView29"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_second_title"
android:text="企业客服"
android:textColor="#8c550e"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView29">
<ImageView
android:id="@+id/iv_serve"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:layout_margin="@dimen/dp_4"
android:src="@drawable/enterprise_wechat"/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</layout>

View File

@@ -18,8 +18,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/root"
android:layout_width="@dimen/dp_350"
android:layout_height="@dimen/dp_400"
android:layout_width="@dimen/dp_340"
android:layout_height="@dimen/dp_450"
android:onClick="@{click::hideArea}"
android:background="@drawable/location_background"
app:layout_constraintBottom_toBottomOf="parent"
@@ -82,7 +82,7 @@
android:hint="搜索城市"
android:maxLines="1"
android:paddingStart="@dimen/dp_8"
android:textSize="@dimen/sp_16"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView10"
@@ -114,7 +114,9 @@
android:id="@+id/rv_area"
android:layout_width="0dp"
android:layout_height="@dimen/dp_160"
android:layout_marginTop="@dimen/dp_4"
android:visibility="gone"
android:background="@drawable/location_city_background"
app:layout_constraintEnd_toEndOf="@+id/constraintLayout6"
app:layout_constraintStart_toStartOf="@+id/constraintLayout6"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout6" />

View File

@@ -14,8 +14,8 @@
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp_260"
android:layout_height="@dimen/dp_200"
android:layout_width="@dimen/dp_280"
android:layout_height="@dimen/dp_240"
android:layout_centerInParent="true"
android:background="@drawable/bg_dialog"
android:minWidth="@dimen/dp_240"
@@ -90,9 +90,9 @@
<TextView
android:id="@+id/positive"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/default_button_bg"
android:background="@drawable/view_clock_button_bg"
android:gravity="center"
android:singleLine="true"
android:text="查看"

View File

@@ -2,7 +2,7 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.SelectNumberActivity">
tools:context=".activity.selectnumber.SelectNumberActivity">
<data>

View File

@@ -11,7 +11,19 @@
type="com.uiuios.aios.activity.setting.SettingActivity.BtnClick" />
<variable
name="floatWindowEnable"
name="float_window_enable"
type="Boolean" />
<variable
name="voice_broadcast"
type="Boolean" />
<variable
name="auto_accept"
type="Boolean" />
<variable
name="dial_tone"
type="Boolean" />
</data>
@@ -92,8 +104,8 @@
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text='@{floatWindowEnable?"已开启":"未开启"}'
android:textColor="@{floatWindowEnable?@color/setting_enable_color:@color/setting_disable_color}"
android:text='@{float_window_enable?"已开启":"未开启"}'
android:textColor="@{float_window_enable?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -111,7 +123,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
android:layout_height="@dimen/dp_80"
android:onClick="@{click::voiceBroadcast}">
<TextView
android:layout_width="wrap_content"
@@ -125,19 +138,20 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:onClick="@{click::testTts}"
android:maxLines="1"
android:text="未开启"
android:textColor="@color/setting_disable_color"
android:text='@{voice_broadcast?"已开启":"未开启"}'
android:textColor="@{voice_broadcast?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:text="未开启" />
<View
android:layout_width="match_parent"
@@ -149,7 +163,48 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
android:layout_height="@dimen/dp_80"
android:onClick="@{click::autoAccept}">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:maxLines="1"
android:text="自动接听"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text='@{auto_accept?"已开启":"未开启"}'
android:textColor="@{auto_accept?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="未开启" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/lightGray"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80"
android:onClick="@{click::setDialTone}">
<TextView
android:layout_width="wrap_content"
@@ -170,12 +225,13 @@
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text="未开启"
android:textColor="@color/setting_disable_color"
android:text='@{dial_tone?"已开启":"未开启"}'
android:textColor="@{dial_tone?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:text="未开启" />
<View
android:layout_width="match_parent"
@@ -185,43 +241,6 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:maxLines="1"
android:text="来电读名字"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text="未开启"
android:textColor="@color/setting_disable_color"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/lightGray"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@@ -283,7 +302,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:maxLines="1"
android:text="亮度音量字体设置"
android:text="亮度字体设置"
android:textColor="@color/black"
android:textSize="@dimen/sp_20"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -1,102 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray">
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.spikelist.SpikeListActivity">
<data>
<variable
name="click"
type="com.uiuios.aios.activity.spikelist.SpikeListActivity.BtnClick" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_36"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_back"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_marginStart="8dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_height="match_parent"
android:background="@color/gray">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="@dimen/dp_24"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_16"
android:background="@drawable/search_bg"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_36"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageView9"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_16"
android:id="@+id/iv_back"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_marginStart="8dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/search_icon"
android:onClick="@{click::exit}"
android:src="@drawable/back_black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="@dimen/dp_24"
android:layout_marginStart="@dimen/dp_8"
android:text="搜索"
android:textColor="@color/title_gray"
android:layout_marginEnd="@dimen/dp_16"
android:background="@drawable/search_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView9"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_back"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageView9"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_16"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/search_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:text="搜索"
android:textColor="@color/title_gray"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView9"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv1"
android:layout_width="@dimen/dp_64"
android:layout_height="@dimen/dp_64"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/nodata"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="品牌" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自营" />
</com.google.android.material.tabs.TabLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tabLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv1"
android:layout_width="@dimen/dp_64"
android:layout_height="@dimen/dp_64"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/nodata"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="品牌" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自营" />
</com.google.android.material.tabs.TabLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tabLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -9,6 +9,18 @@
<variable
name="click"
type="com.uiuios.aios.activity.setting.TouchActivity.BtnClick" />
<variable
name="disable_key"
type="Boolean" />
<variable
name="disable_contact"
type="Boolean" />
<variable
name="disable_clock"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
@@ -66,7 +78,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
android:layout_height="@dimen/dp_80"
android:onClick="@{click::disableVolumeKey}">
<TextView
android:layout_width="wrap_content"
@@ -87,12 +100,13 @@
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text="未开启"
android:textColor="@color/setting_disable_color"
android:text='@{disable_key?"已开启":"未开启"}'
android:textColor="@{disable_key?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:text="未开启" />
<View
android:layout_width="match_parent"
@@ -104,7 +118,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
android:layout_height="@dimen/dp_80"
android:onClick="@{click::disableContactModify}">
<TextView
android:layout_width="wrap_content"
@@ -125,12 +140,13 @@
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text="未开启"
android:textColor="@color/setting_disable_color"
android:text='@{disable_contact?"已开启":"未开启"}'
android:textColor="@{disable_contact?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:text="未开启" />
<View
android:layout_width="match_parent"
@@ -142,7 +158,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
android:layout_height="@dimen/dp_80"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
@@ -180,7 +197,8 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_80">
android:layout_height="@dimen/dp_80"
android:onClick="@{click::disableClockModify}">
<TextView
android:layout_width="wrap_content"
@@ -201,12 +219,13 @@
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:maxLines="1"
android:text="未开启"
android:textColor="@color/setting_disable_color"
android:text='@{disable_clock?"已开启":"未开启"}'
android:textColor="@{disable_clock?@color/setting_enable_color:@color/setting_disable_color}"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:text="未开启" />
<View
android:layout_width="match_parent"

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.tts.TtsActivity">
<data>
<variable
name="click"
type="com.uiuios.aios.activity.tts.TtsActivity.BtnClick" />
<variable
name="body"
type="String" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/root"
android:layout_width="@dimen/dp_340"
android:layout_height="@dimen/dp_300"
android:background="@drawable/location_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ScrollView
android:layout_width="match_parent"
android:layout_margin="@dimen/dp_8"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{body}"
android:textColor="@color/black"
android:textSize="@dimen/sp_18"
tools:text="@string/app_name" />
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv_finish"
android:layout_width="@dimen/dp_56"
android:layout_height="@dimen/dp_56"
android:layout_marginTop="@dimen/dp_16"
android:adjustViewBounds="true"
android:onClick="@{click::exit}"
android:scaleType="centerCrop"
android:src="@drawable/close"
app:layout_constraintEnd_toEndOf="@+id/root"
app:layout_constraintStart_toStartOf="@+id/root"
app:layout_constraintTop_toBottomOf="@+id/root" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
android:id="@+id/root"
android:background="@color/white">
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32">
<TextView
android:id="@+id/tv_district"
@@ -12,6 +11,8 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_4"
android:maxLines="1"
android:text="北京"
android:textColor="@color/black"

View File

@@ -67,8 +67,8 @@
<ImageView
android:id="@+id/iv_icon0"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_4"
android:adjustViewBounds="true"
@@ -99,8 +99,8 @@
<ImageView
android:id="@+id/iv_icon1"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_4"
android:adjustViewBounds="true"
@@ -131,8 +131,8 @@
<ImageView
android:id="@+id/iv_icon2"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_4"
android:adjustViewBounds="true"
@@ -158,18 +158,18 @@
android:id="@+id/cl_3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:onClick="@{click::toCalendar}"
android:onClick="@{click::toCamera}"
android:visibility="visible">
<ImageView
android:id="@+id/iv_icon3"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_4"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/home_icon_calendar"
android:src="@drawable/com_android_camera"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -178,7 +178,7 @@
android:id="@+id/tv_appname3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="万年历"
android:text="相机"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/iv_icon3"
@@ -186,38 +186,6 @@
app:layout_constraintTop_toBottomOf="@+id/iv_icon3" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_4"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:onClick="@{click::openFlash}"
android:visibility="visible">
<ImageView
android:id="@+id/iv_icon4"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginEnd="@dimen/dp_4"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/home_icon_flash"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_appname4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手电筒"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="@+id/iv_icon4"
app:layout_constraintStart_toStartOf="@+id/iv_icon4"
app:layout_constraintTop_toBottomOf="@+id/iv_icon4" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>