diff --git a/app/build.gradle b/app/build.gradle index 657ef9e..5dcbd17 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiui.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 18 - versionName "2.7" + versionCode 19 + versionName "2.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -158,6 +158,9 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation "androidx.room:room-runtime:2.4.3" + annotationProcessor "androidx.room:room-compiler:2.4.3" + //磁盘缓存 implementation 'com.jakewharton:disklrucache:2.0.2' //glide diff --git a/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java b/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java index 5771f4c..559adf8 100644 --- a/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java @@ -15,12 +15,15 @@ import android.widget.TextView; import com.blankj.utilcode.util.FileUtils; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.request.RequestOptions; import com.uiui.aios.R; 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 com.uiui.aios.utils.FileUtil; +import com.uiui.aios.utils.ScreenUtils; import com.uiui.aios.utils.Utils; import com.uiui.aios.view.JzvdStdAssert; @@ -160,7 +163,8 @@ public class NoticeActivity extends AppCompatActivity { if (FileUtil.isPictureFile(fileType)) { jz_video.setVisibility(View.GONE); imageView.setVisibility(View.VISIBLE); - Glide.with(NoticeActivity.this).load(filePath).into(imageView); + RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F))); + Glide.with(NoticeActivity.this).load(filePath).apply(options).into(imageView); } else if (FileUtil.isVideoFile(fileType)) { jz_video.setVisibility(View.VISIBLE); imageView.setVisibility(View.GONE); diff --git a/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java b/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java index b95b792..17bada6 100644 --- a/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java @@ -20,9 +20,13 @@ import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; +import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.bumptech.glide.request.RequestOptions; import com.uiui.aios.R; import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.utils.FFmpegUtils; +import com.uiui.aios.utils.ScreenUtils; +import com.uiui.aios.view.JzvdStdRound; import com.uiui.aios.view.MyJzvdStdNoTitleNoClarity; import java.io.IOException; @@ -145,7 +149,8 @@ public class AlarmAdapter extends RecyclerView.Adapter { holder.imageView.setVisibility(View.VISIBLE); holder.jz_video.setVisibility(View.GONE); if (!mContext.isDestroyed()) { - Glide.with(mContext).load(url).into(holder.imageView); + RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F))); + Glide.with(mContext).load(url).apply(options).into(holder.imageView); } } else { holder.imageView.setVisibility(View.GONE); @@ -161,7 +166,8 @@ public class AlarmAdapter extends RecyclerView.Adapter { @Override public void onNext(@io.reactivex.rxjava3.annotations.NonNull Bitmap bitmap) { if (!mContext.isDestroyed()) { - Glide.with(mContext).load(bitmap).into(holder.jz_video.posterImageView); + RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F))); + Glide.with(mContext).load(bitmap).apply(options).into(holder.jz_video.posterImageView); } holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play)); } @@ -200,7 +206,7 @@ public class AlarmAdapter extends RecyclerView.Adapter { class holder extends RecyclerView.ViewHolder { TextView tv_time, tv_remind_type, tv_title, tv_voice; ConstraintLayout cl_voice, cl_vp; - MyJzvdStdNoTitleNoClarity jz_video; + JzvdStdRound jz_video; ImageView imageView; Switch switch1; diff --git a/app/src/main/java/com/uiui/aios/utils/AlarmUtils.java b/app/src/main/java/com/uiui/aios/utils/AlarmUtils.java index 69c78bb..c656772 100644 --- a/app/src/main/java/com/uiui/aios/utils/AlarmUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/AlarmUtils.java @@ -21,8 +21,6 @@ import java.lang.reflect.Type; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/app/src/main/java/com/uiui/aios/view/JzvdStdRound.java b/app/src/main/java/com/uiui/aios/view/JzvdStdRound.java new file mode 100644 index 0000000..b16208b --- /dev/null +++ b/app/src/main/java/com/uiui/aios/view/JzvdStdRound.java @@ -0,0 +1,92 @@ +package com.uiui.aios.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PaintFlagsDrawFilter; +import android.graphics.Path; +import android.graphics.RectF; +import android.util.AttributeSet; + +import com.uiui.aios.R; + +import cn.jzvd.JzvdStd; + +public class JzvdStdRound extends JzvdStd { + + private int radius; + private int leftTopRadius; + private int rightTopRadius; + private int rightBottomRadius; + private int leftBottomRadius; + + public JzvdStdRound(Context context) { + super(context); + } + public JzvdStdRound(Context context, AttributeSet attrs) { + super(context, attrs); + initAttrs(context, attrs); + } + + @Override + public int getLayoutId() { + return R.layout.layout_jzstd_notitle; + } + + void initAttrs(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.JzvdStdRound); + radius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_radius, 0); + leftTopRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_left_top_radius, 0); + rightTopRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_right_top_radius, 0); + rightBottomRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_right_bottom_radius, 0); + leftBottomRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_left_bottom_radius, 0); + } + + + public void setRadius(int radius){ + this.radius = radius; + invalidate(); + } + + public void setLeftTopRadius(int leftTopRadius) { + this.leftTopRadius = leftTopRadius; + invalidate(); + } + + + public void setRightTopRadius(int rightTopRadius) { + this.rightTopRadius = rightTopRadius; + invalidate(); + } + + + public void setRightBottomRadius(int rightBottomRadius) { + this.rightBottomRadius = rightBottomRadius; + invalidate(); + } + + public void setLeftBottomRadius(int leftBottomRadius) { + this.leftBottomRadius = leftBottomRadius; + invalidate(); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + Path path = new Path(); + if (radius > 0) { + path.addRoundRect(new RectF(0, 0, getMeasuredWidth(), getMeasuredHeight()), + radius, radius, Path.Direction.CW); + } else { + path.addRoundRect(new RectF(0, 0, getMeasuredWidth(), getMeasuredHeight()), + new float[]{leftTopRadius, leftTopRadius, rightTopRadius, rightTopRadius, + rightBottomRadius, rightBottomRadius, leftBottomRadius, leftBottomRadius}, + Path.Direction.CW); + canvas.setDrawFilter(new PaintFlagsDrawFilter(0, + Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG)); + } + canvas.clipPath(path); + super.dispatchDraw(canvas); + } +} + diff --git a/app/src/main/res/layout/item_alarm_clock.xml b/app/src/main/res/layout/item_alarm_clock.xml index b163b49..a48fd14 100644 --- a/app/src/main/res/layout/item_alarm_clock.xml +++ b/app/src/main/res/layout/item_alarm_clock.xml @@ -120,8 +120,9 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"> - diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 0070722..1a49501 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -7,4 +7,13 @@ + + + + + + + + + \ No newline at end of file