From 7388d2bbf428f094b84c48dc9645b63ab805365c Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Tue, 30 Aug 2022 10:03:48 +0800 Subject: [PATCH] =?UTF-8?q?version:2.6=20fix:=20update:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=88=B1=E5=BF=83=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 12 +- app/src/main/AndroidManifest.xml | 137 +++---- .../activity/alarm/AlarmClockActivity.java | 77 ++++ .../com/uiui/aios/adapter/AlarmAdapter.java | 160 +++++++++ .../aios/adapter/NotificationAdapter.java | 64 ++++ .../java/com/uiui/aios/bean/ActivityBean.java | 75 +++- .../com/uiui/aios/bean/AlarmClockData.java | 10 +- .../java/com/uiui/aios/bean/DemandBean.java | 65 +++- .../uiui/aios/fragment/CustomFragment.java | 17 +- .../uiui/aios/fragment/SecondFragment.java | 34 +- .../com/uiui/aios/network/URLAddress.java | 2 +- .../aios/service/main/MainSPresenter.java | 2 +- .../uiui/aios/service/main/MainService.java | 2 +- .../java/com/uiui/aios/utils/ApkUtils.java | 3 + .../java/com/uiui/aios/utils/AudioUtils.java | 37 ++ .../com/uiui/aios/view/JzvdStdAssert.java | 4 +- .../main/res/drawable-hdpi/default_head.png | Bin 0 -> 2739 bytes app/src/main/res/drawable-hdpi/delete.png | Bin 0 -> 3320 bytes .../main/res/drawable/alarm_background.xml | 13 + .../res/drawable/alarm_notifi_background.xml | 13 + app/src/main/res/drawable/gray_thumb.xml | 19 + app/src/main/res/drawable/gray_track.xml | 12 + app/src/main/res/drawable/green_thumb.xml | 19 + app/src/main/res/drawable/green_track.xml | 12 + app/src/main/res/drawable/join_background.xml | 13 + app/src/main/res/drawable/thumb.xml | 6 + app/src/main/res/drawable/track.xml | 6 + .../main/res/drawable/voice_background.xml | 2 +- .../main/res/layout-land/fragment_custom.xml | 9 + .../main/res/layout-land/fragment_second.xml | 130 +++++-- .../main/res/layout-port/fragment_custom.xml | 214 ++++------- .../main/res/layout-port/fragment_second.xml | 130 +++++-- .../main/res/layout/activity_alarm_clock.xml | 20 ++ app/src/main/res/layout/activity_notice.xml | 2 +- app/src/main/res/layout/item_alarm_clock.xml | 112 ++++++ app/src/main/res/layout/item_notification.xml | 16 +- app/src/main/res/values/colors.xml | 5 +- app/src/main/res/values/styles.xml | 9 + niceimageview/.gitignore | 1 + niceimageview/build.gradle | 35 ++ niceimageview/proguard-rules.pro | 21 ++ niceimageview/src/main/AndroidManifest.xml | 2 + .../java/com/shehuan/niv/NiceImageView.java | 338 ++++++++++++++++++ .../src/main/java/com/shehuan/niv/Utils.java | 11 + niceimageview/src/main/res/values/attrs.xml | 17 + niceimageview/src/main/res/values/strings.xml | 3 + settings.gradle | 4 +- 47 files changed, 1574 insertions(+), 321 deletions(-) create mode 100644 app/src/main/java/com/uiui/aios/activity/alarm/AlarmClockActivity.java create mode 100644 app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java create mode 100644 app/src/main/java/com/uiui/aios/utils/AudioUtils.java create mode 100644 app/src/main/res/drawable-hdpi/default_head.png create mode 100644 app/src/main/res/drawable-hdpi/delete.png create mode 100644 app/src/main/res/drawable/alarm_background.xml create mode 100644 app/src/main/res/drawable/alarm_notifi_background.xml create mode 100644 app/src/main/res/drawable/gray_thumb.xml create mode 100644 app/src/main/res/drawable/gray_track.xml create mode 100644 app/src/main/res/drawable/green_thumb.xml create mode 100644 app/src/main/res/drawable/green_track.xml create mode 100644 app/src/main/res/drawable/join_background.xml create mode 100644 app/src/main/res/drawable/thumb.xml create mode 100644 app/src/main/res/drawable/track.xml create mode 100644 app/src/main/res/layout/activity_alarm_clock.xml create mode 100644 app/src/main/res/layout/item_alarm_clock.xml create mode 100644 niceimageview/.gitignore create mode 100644 niceimageview/build.gradle create mode 100644 niceimageview/proguard-rules.pro create mode 100644 niceimageview/src/main/AndroidManifest.xml create mode 100644 niceimageview/src/main/java/com/shehuan/niv/NiceImageView.java create mode 100644 niceimageview/src/main/java/com/shehuan/niv/Utils.java create mode 100644 niceimageview/src/main/res/values/attrs.xml create mode 100644 niceimageview/src/main/res/values/strings.xml 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 0000000000000000000000000000000000000000..fd9bca215abbc3ed7fe7924ce5f56cbd5f213be1 GIT binary patch literal 2739 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..521bf24e8e8eab520a856443c9dd508455484c23 GIT binary patch literal 3320 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 q@%G`FbdGjEVp} + + + + + + + + + + + + \ 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 + +