diff --git a/app/build.gradle b/app/build.gradle
index 252af92..5199dfa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -16,8 +16,8 @@ android {
applicationId "com.uiui.aios"
minSdkVersion 24
targetSdkVersion 29
- versionCode 14
- versionName "2.3"
+ versionCode 17
+ versionName "2.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -29,7 +29,7 @@ android {
manifestPlaceholders = [
XG_ACCESS_ID : "1500030457",
- XG_ACCESS_KEY : "AZZXANJF4HBD",
+ XG_ACCESS_KEY: "AZZXANJF4HBD",
]
manifestPlaceholders = [
@@ -141,6 +141,8 @@ dependencies {
// implementation fileTree(dir: 'libs', include: ['*.jar'])
compileOnly files('libs/framework.jar')
implementation files('libs/QWeather_Public_Android_V4.9.jar')
+ implementation project(path: ':niceimageview')
+
//保持1.3.1 更新会报错
implementation 'androidx.appcompat:appcompat:1.3.1'
//2.0.4以上无法预览
@@ -186,7 +188,7 @@ dependencies {
implementation 'com.amap.api:location:5.1.0'
//MMKV
implementation 'com.tencent:mmkv-static:1.2.12'
- implementation 'com.tencent.tpns:tpns:1.3.4.4-release'
+ implementation 'com.tencent.tpns:tpns:1.3.6.0-release'
//状态栏透明
implementation 'com.gitee.zackratos:UltimateBarX:0.8.0'
//指示器
@@ -199,6 +201,8 @@ dependencies {
annotationProcessor 'com.arialyy.aria:compiler:3.8.15'
//videoplayer
implementation 'cn.jzvd:jiaozivideoplayer:7.7.0'
+ implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-core:1.0.16'
+ implementation 'com.github.wseemann:FFmpegMediaMetadataRetriever-native:1.0.16'
}
preBuild {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 306f043..b4bff93 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,53 +3,35 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.uiui.aios"
android:sharedUserId="android.uid.system">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
+
-
-
-
+
@@ -57,7 +39,7 @@
-
-
+
+
@@ -126,16 +112,16 @@
@@ -146,27 +132,21 @@
-
-
-
-
-
+
-
+ android:value="${AMAP_KEY}" />
-
+
+
@@ -189,7 +171,6 @@
-
-
-
-
+
-
-
-
-
-
-
+
-
-
+ android:process=":xg_vip_service" />
+
-
-
-
+
-
-
+ android:authorities="${applicationId}.XGVIP_PUSH_AUTH" />
-
-
+ android:authorities="${applicationId}.TPUSH_PROVIDER" />
-
-
+ tools:replace="android:exported" />
+
-
-
-
+
+
-
-
-
+ android:exported="false" />
-
+ android:value="1500030457" />
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java b/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java
new file mode 100644
index 0000000..f2b2c10
--- /dev/null
+++ b/app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java
@@ -0,0 +1,77 @@
+package com.uiui.aios.activity.alarm;
+
+import android.util.Log;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.uiui.aios.R;
+import com.uiui.aios.adapter.AlarmAdapter;
+import com.uiui.aios.base.BaseActivity;
+import com.uiui.aios.bean.AlarmClockData;
+import com.uiui.aios.bean.BaseResponse;
+import com.uiui.aios.network.NetInterfaceManager;
+import com.uiui.aios.utils.AlarmUtils;
+
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+
+public class AlarmClockActivity extends BaseActivity {
+
+ @BindView(R.id.recyclerView)
+ RecyclerView recyclerView;
+
+ private AlarmAdapter mAlarmAdapter;
+
+ @Override
+ public int getLayoutId() {
+ return R.layout.activity_alarm_clock;
+ }
+
+ @Override
+ public void initView() {
+ ButterKnife.bind(this);
+ mAlarmAdapter = new AlarmAdapter();
+ recyclerView.setLayoutManager(new LinearLayoutManager(AlarmClockActivity.this));
+ recyclerView.setAdapter(mAlarmAdapter);
+
+ }
+
+ @Override
+ public void initData() {
+ NetInterfaceManager.getInstance().getAlarmClockApiObservable()
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("getAlarmClock", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(BaseResponse> listBaseResponse) {
+ Log.e("getAlarmClock", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List data = listBaseResponse.data;
+ AlarmUtils.getInstance().setAlarmClockData(data);
+ mAlarmAdapter.setAlarmClockData(data);
+ } else {
+ mAlarmAdapter.setAlarmClockData(null);
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("getAlarmClock", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAlarmClock", "onComplete: ");
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java b/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java
new file mode 100644
index 0000000..7ac63fb
--- /dev/null
+++ b/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java
@@ -0,0 +1,160 @@
+package com.uiui.aios.adapter;
+
+import android.media.AudioAttributes;
+import android.media.MediaPlayer;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.uiui.aios.R;
+import com.uiui.aios.bean.AlarmClockData;
+import com.uiui.aios.utils.AudioUtils;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+
+public class AlarmAdapter extends RecyclerView.Adapter {
+
+ private List mAlarmClockData;
+
+ public void setAlarmClockData(List alarmClockData) {
+ this.mAlarmClockData = alarmClockData;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ return new AlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_clock, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull holder holder, int position) {
+ AlarmClockData alarmClockData = mAlarmClockData.get(position);
+ switch (alarmClockData.getType()) {
+ case 1:
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date date = sdf.parse(alarmClockData.getTime());
+ SimpleDateFormat hours = new SimpleDateFormat("HH:mm");
+ String time = hours.format(date);
+ holder.tv_time.setText(time);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ holder.tv_remind_type.setText("单次");
+ break;
+ case 2:
+ holder.tv_time.setText(alarmClockData.getTime());
+ holder.tv_remind_type.setText("循环");
+ break;
+ case 3:
+ holder.tv_time.setText(alarmClockData.getTime());
+ holder.tv_remind_type.setText("周一至周五");
+ break;
+ case 4:
+ holder.tv_time.setText(alarmClockData.getTime());
+ holder.tv_remind_type.setText("周六至周日");
+ break;
+ default:
+ }
+ String title = alarmClockData.getTitle();
+ if (TextUtils.isEmpty(title)) {
+ holder.tv_title.setText("无标题");
+ } else {
+ holder.tv_title.setText(title);
+ }
+ String voice = alarmClockData.getVoice();
+ if (TextUtils.isEmpty(voice)) {
+ holder.cl_voice.setVisibility(View.GONE);
+ } else {
+ holder.cl_voice.setVisibility(View.VISIBLE);
+ MediaPlayer mMediaPlayer = new MediaPlayer();
+ mMediaPlayer.setAudioAttributes(
+ new AudioAttributes.Builder()
+ .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
+ .build()
+ );
+ mMediaPlayer.setOnCompletionListener(mp -> Log.e("setOnCompletionListener", "onCompletion: "));
+ mMediaPlayer.setOnPreparedListener(mp -> Log.e("setOnPreparedListener", "onPrepared: "));
+ mMediaPlayer.setOnErrorListener((mp, what, extra) -> false);
+ //设置音频文件到MediaPlayer对象中
+ try {
+ mMediaPlayer.setDataSource(voice);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ //让MediaPlayer对象准备,用这个方法防止加载时耗时导致anr
+ mMediaPlayer.prepareAsync();
+ AudioUtils.getDurationInMilliseconds(voice, new Observer() {
+ @Override
+ public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(@io.reactivex.rxjava3.annotations.NonNull Integer integer) {
+ holder.tv_voice.setText(integer + "秒");
+ }
+
+ @Override
+ public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) {
+
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ holder.cl_voice.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mMediaPlayer.start();
+ }
+ });
+ }
+
+ }
+
+ @Override
+ public int getItemCount() {
+ return mAlarmClockData == null ? 0 : mAlarmClockData.size();
+ }
+
+ class holder extends RecyclerView.ViewHolder {
+ TextView tv_time;
+ TextView tv_remind_type;
+ TextView tv_title;
+ TextView tv_voice;
+ ConstraintLayout cl_voice;
+ Switch switch1;
+ ImageView iv_delete;
+
+ public holder(@NonNull View itemView) {
+ super(itemView);
+ tv_time = itemView.findViewById(R.id.tv_time);
+ tv_remind_type = itemView.findViewById(R.id.tv_remind_type);
+ tv_title = itemView.findViewById(R.id.tv_title);
+ tv_voice = itemView.findViewById(R.id.tv_voice);
+ cl_voice = itemView.findViewById(R.id.cl_voice);
+ switch1 = itemView.findViewById(R.id.switch1);
+ iv_delete = itemView.findViewById(R.id.iv_delete);
+ }
+ }
+}
diff --git a/app/src/main/java/com/uiui/aios/adapter/NotificationAdapter.java b/app/src/main/java/com/uiui/aios/adapter/NotificationAdapter.java
index 6c8b630..abdf885 100644
--- a/app/src/main/java/com/uiui/aios/adapter/NotificationAdapter.java
+++ b/app/src/main/java/com/uiui/aios/adapter/NotificationAdapter.java
@@ -1,18 +1,28 @@
package com.uiui.aios.adapter;
+import android.media.AudioAttributes;
+import android.media.MediaPlayer;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.uiui.aios.R;
import com.uiui.aios.bean.AlarmClockData;
+import com.uiui.aios.utils.AudioUtils;
+import java.io.IOException;
import java.util.List;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+
public class NotificationAdapter extends RecyclerView.Adapter {
private List dataList;
@@ -27,6 +37,56 @@ public class NotificationAdapter extends RecyclerView.Adapter Log.e("setOnCompletionListener", "onCompletion: "));
+ mMediaPlayer.setOnPreparedListener(mp -> Log.e("setOnPreparedListener", "onPrepared: "));
+ mMediaPlayer.setOnErrorListener((mp, what, extra) -> false);
+ //设置音频文件到MediaPlayer对象中
+ try {
+ mMediaPlayer.setDataSource(voice);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ //让MediaPlayer对象准备,用这个方法防止加载时耗时导致anr
+ mMediaPlayer.prepareAsync();
+ AudioUtils.getDurationInMilliseconds(voice, new Observer() {
+ @Override
+ public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(@io.reactivex.rxjava3.annotations.NonNull Integer integer) {
+ holder.tv_voice.setText(integer + "秒");
+ }
+
+ @Override
+ public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) {
+
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ holder.cl_voice.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mMediaPlayer.start();
+ }
+ });
+ }
}
@@ -43,11 +103,15 @@ public class NotificationAdapter extends RecyclerView.Adapter lifecycle;
@@ -56,7 +57,6 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getAlarmClock() {
- MMKV mmkv = MMKV.defaultMMKV();
NetInterfaceManager.getInstance().getAlarmClockApiObservable()
.subscribe(new Observer>>() {
@Override
diff --git a/app/src/main/java/com/uiui/aios/service/main/MainService.java b/app/src/main/java/com/uiui/aios/service/main/MainService.java
index 91755ad..f40f5d0 100644
--- a/app/src/main/java/com/uiui/aios/service/main/MainService.java
+++ b/app/src/main/java/com/uiui/aios/service/main/MainService.java
@@ -77,7 +77,7 @@ public class MainService extends BaseService implements MainSContact.MainSView,
super.onCreate();
Log.e(TAG, "onCreate: ");
ApkUtils.UninstallAPP(this, "com.joytv.live");
- ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader");
+// ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader");
Aria.init(this);
Aria.download(this).register();
diff --git a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java
index 52cca54..147f7fb 100644
--- a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java
+++ b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java
@@ -49,6 +49,8 @@ public class ApkUtils {
this.add("com.alldocube.store");
this.add("com.android.email");
this.add("com.android.calendar");
+ this.add("com.android.uiuios");
+ this.add("com.uiui.os");
}};
private static HashSet showPackageName = new HashSet() {{
this.add("com.android.dialer");
@@ -58,6 +60,7 @@ public class ApkUtils {
this.add("com.android.camera2");
this.add("com.mediatek.camera");
this.add("com.android.mms");
+ this.add("com.uiui.city");
}};
private static HashSet allHintPackage = new HashSet() {{
this.add("com.android.uiuios");
diff --git a/app/src/main/java/com/uiui/aios/utils/AudioUtils.java b/app/src/main/java/com/uiui/aios/utils/AudioUtils.java
new file mode 100644
index 0000000..0511578
--- /dev/null
+++ b/app/src/main/java/com/uiui/aios/utils/AudioUtils.java
@@ -0,0 +1,37 @@
+package com.uiui.aios.utils;
+
+import android.util.Log;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.ObservableEmitter;
+import io.reactivex.rxjava3.core.ObservableOnSubscribe;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+import wseemann.media.FFmpegMediaMetadataRetriever;
+
+public class AudioUtils {
+ /**
+ * 获取在线音频时间长度
+ *
+ * @param url
+ * @return
+ */
+ public static void getDurationInMilliseconds(String url, Observer observer) {
+ Observable.create(new ObservableOnSubscribe() {
+ @Override
+ public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable {
+ long time = System.currentTimeMillis();
+ FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
+ mmr.setDataSource(url);
+ int duration = Integer.parseInt(mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION));
+ Log.e("AudioUtils", "getDurationInMilliseconds: " + (System.currentTimeMillis() - time));
+ mmr.release();//释放资源
+ emitter.onNext(duration / 1000);
+ }
+ }).subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(observer);
+ }
+}
diff --git a/app/src/main/java/com/uiui/aios/view/JzvdStdAssert.java b/app/src/main/java/com/uiui/aios/view/JzvdStdAssert.java
index ecc960d..fdf4462 100644
--- a/app/src/main/java/com/uiui/aios/view/JzvdStdAssert.java
+++ b/app/src/main/java/com/uiui/aios/view/JzvdStdAssert.java
@@ -36,7 +36,9 @@ public class JzvdStdAssert extends JzvdStd {
@Override
public void onCompletion() {
super.onCompletion();
- onVideoCompletionListener.onVideoComplet();
+ if (onVideoCompletionListener != null) {
+ onVideoCompletionListener.onVideoComplet();
+ }
Log.e("onStateChanged", "onCompletion");
}
diff --git a/app/src/main/res/drawable-hdpi/default_head.png b/app/src/main/res/drawable-hdpi/default_head.png
new file mode 100644
index 0000000..fd9bca2
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/default_head.png differ
diff --git a/app/src/main/res/drawable-hdpi/delete.png b/app/src/main/res/drawable-hdpi/delete.png
new file mode 100644
index 0000000..521bf24
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/delete.png differ
diff --git a/app/src/main/res/drawable/alarm_background.xml b/app/src/main/res/drawable/alarm_background.xml
new file mode 100644
index 0000000..b383bc1
--- /dev/null
+++ b/app/src/main/res/drawable/alarm_background.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/alarm_notifi_background.xml b/app/src/main/res/drawable/alarm_notifi_background.xml
new file mode 100644
index 0000000..9d93aac
--- /dev/null
+++ b/app/src/main/res/drawable/alarm_notifi_background.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gray_thumb.xml b/app/src/main/res/drawable/gray_thumb.xml
new file mode 100644
index 0000000..1448a1c
--- /dev/null
+++ b/app/src/main/res/drawable/gray_thumb.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gray_track.xml b/app/src/main/res/drawable/gray_track.xml
new file mode 100644
index 0000000..95b087e
--- /dev/null
+++ b/app/src/main/res/drawable/gray_track.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/green_thumb.xml b/app/src/main/res/drawable/green_thumb.xml
new file mode 100644
index 0000000..6b5c785
--- /dev/null
+++ b/app/src/main/res/drawable/green_thumb.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/green_track.xml b/app/src/main/res/drawable/green_track.xml
new file mode 100644
index 0000000..b00fc92
--- /dev/null
+++ b/app/src/main/res/drawable/green_track.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/join_background.xml b/app/src/main/res/drawable/join_background.xml
new file mode 100644
index 0000000..11cf392
--- /dev/null
+++ b/app/src/main/res/drawable/join_background.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/thumb.xml b/app/src/main/res/drawable/thumb.xml
new file mode 100644
index 0000000..b2facb4
--- /dev/null
+++ b/app/src/main/res/drawable/thumb.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/track.xml b/app/src/main/res/drawable/track.xml
new file mode 100644
index 0000000..8de6995
--- /dev/null
+++ b/app/src/main/res/drawable/track.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/voice_background.xml b/app/src/main/res/drawable/voice_background.xml
index 0383881..c414380 100644
--- a/app/src/main/res/drawable/voice_background.xml
+++ b/app/src/main/res/drawable/voice_background.xml
@@ -1,7 +1,7 @@
-
+
+
+
@@ -209,9 +209,9 @@
@@ -276,6 +276,14 @@
android:layout_weight="1"
android:background="@drawable/custom_background">
+
-
@@ -325,15 +337,52 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:text=""
+ android:maxLines="1"
+ android:text="活动名称"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
- app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_avatar_a"
app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+
+
@@ -355,12 +404,23 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/nodata"
+ android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
-
@@ -396,36 +458,52 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:text=""
+ android:maxLines="1"
+ android:text="活动名称"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
- app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_avatar_d"
app:layout_constraintTop_toTopOf="parent" />
+
+
+ android:textSize="20sp"
+ app:layout_constraintStart_toStartOf="@+id/tv_time_d"
+ app:layout_constraintTop_toBottomOf="@+id/tv_time_d" />
diff --git a/app/src/main/res/layout-port/fragment_custom.xml b/app/src/main/res/layout-port/fragment_custom.xml
index e21a36a..d01bc32 100644
--- a/app/src/main/res/layout-port/fragment_custom.xml
+++ b/app/src/main/res/layout-port/fragment_custom.xml
@@ -5,7 +5,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ app:layout_constraintTop_toBottomOf="@+id/textView3" />
+ android:textSize="40sp"
+ android:textStyle="bold"
+ app:layout_constraintBottom_toBottomOf="@+id/iv_pic"
+ app:layout_constraintStart_toEndOf="@+id/iv_pic"
+ app:layout_constraintTop_toTopOf="@+id/iv_pic"
+ app:layout_constraintVertical_bias="0.296" />
+
+
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/textView7" />
+
+
+
-
+
-
+
+
@@ -216,9 +227,10 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
-
-
-
-
-
+
+
+
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/fragment_second.xml b/app/src/main/res/layout-port/fragment_second.xml
index bc66ae5..05f940d 100644
--- a/app/src/main/res/layout-port/fragment_second.xml
+++ b/app/src/main/res/layout-port/fragment_second.xml
@@ -54,9 +54,9 @@
@@ -209,9 +209,9 @@
@@ -276,6 +276,14 @@
android:layout_weight="1"
android:background="@drawable/custom_background">
+
-
@@ -325,15 +337,52 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:text=""
+ android:maxLines="1"
+ android:text="活动名称"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
- app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_avatar_a"
app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+
+
@@ -355,12 +404,23 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/nodata"
+ android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+
+
-
@@ -396,36 +458,52 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
- android:layout_marginEnd="16dp"
- android:text=""
+ android:maxLines="1"
+ android:text="活动名称"
android:textColor="@color/black"
android:textSize="22sp"
android:textStyle="bold"
- app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_avatar_d"
app:layout_constraintTop_toTopOf="parent" />
+
+
+ android:textSize="20sp"
+ app:layout_constraintStart_toStartOf="@+id/tv_time_d"
+ app:layout_constraintTop_toBottomOf="@+id/tv_time_d" />
diff --git a/app/src/main/res/layout/activity_alarm_clock.xml b/app/src/main/res/layout/activity_alarm_clock.xml
new file mode 100644
index 0000000..ecd47fb
--- /dev/null
+++ b/app/src/main/res/layout/activity_alarm_clock.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_notice.xml b/app/src/main/res/layout/activity_notice.xml
index 5ef94e6..a095955 100644
--- a/app/src/main/res/layout/activity_notice.xml
+++ b/app/src/main/res/layout/activity_notice.xml
@@ -30,7 +30,7 @@
app:layout_constraintTop_toBottomOf="@+id/tv_title">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout/item_notification.xml
index 4d20e30..c30236e 100644
--- a/app/src/main/res/layout/item_notification.xml
+++ b/app/src/main/res/layout/item_notification.xml
@@ -3,12 +3,17 @@
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">
+ android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:background="@drawable/alarm_notifi_background"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
#FFFFFF
#00FFFFFF
#000000
-
+ #f0f0f0
+ #FFD3D3D3
#4880ff
#F8B551
#0480FF
#4D4B50
#FF0000
#424144
+ #8e6afb
+ #00D56B
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 4baca5e..7d98ae6 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -10,6 +10,15 @@
- true
+
+