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 + +