version:2.7

fix:
update:优化爱心提醒,修改高度一致
This commit is contained in:
2022-08-31 14:52:14 +08:00
parent 7388d2bbf4
commit 61fb4663a6
18 changed files with 468 additions and 99 deletions

View File

@@ -1,7 +1,10 @@
package com.uiui.aios.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.AudioAttributes;
import android.media.MediaPlayer;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -13,23 +16,25 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.uiui.aios.R;
import com.uiui.aios.bean.AlarmClockData;
import com.uiui.aios.utils.AudioUtils;
import com.uiui.aios.utils.FFmpegUtils;
import com.uiui.aios.view.MyJzvdStdNoTitleNoClarity;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
private FragmentActivity mContext;
private List<AlarmClockData> mAlarmClockData;
public void setAlarmClockData(List<AlarmClockData> alarmClockData) {
@@ -40,6 +45,7 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
@NonNull
@Override
public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = (FragmentActivity) parent.getContext();
return new AlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_clock, parent, false));
}
@@ -48,15 +54,16 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
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();
}
// try {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 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_time.setText(alarmClockData.getTime());
holder.tv_remind_type.setText("单次");
break;
case 2:
@@ -101,7 +108,7 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
}
//让MediaPlayer对象准备用这个方法防止加载时耗时导致anr
mMediaPlayer.prepareAsync();
AudioUtils.getDurationInMilliseconds(voice, new Observer<Integer>() {
FFmpegUtils.getDurationInMilliseconds(voice, new Observer<Integer>() {
@Override
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
@@ -129,7 +136,60 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
}
});
}
String url = alarmClockData.getFile();
if (TextUtils.isEmpty(url)) {
holder.cl_vp.setVisibility(View.GONE);
} else {
holder.cl_vp.setVisibility(View.VISIBLE);
if (isImgUrl(url)) {
holder.imageView.setVisibility(View.VISIBLE);
holder.jz_video.setVisibility(View.GONE);
if (!mContext.isDestroyed()) {
Glide.with(mContext).load(url).into(holder.imageView);
}
} else {
holder.imageView.setVisibility(View.GONE);
holder.jz_video.setVisibility(View.VISIBLE);
holder.jz_video.setUp(url, "");
holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
FFmpegUtils.loadVideoScreenshot(url, new Observer<Bitmap>() {
@Override
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
}
@Override
public void onNext(@io.reactivex.rxjava3.annotations.NonNull Bitmap bitmap) {
if (!mContext.isDestroyed()) {
Glide.with(mContext).load(bitmap).into(holder.jz_video.posterImageView);
}
holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
}
@Override
public void onError(@io.reactivex.rxjava3.annotations.NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}
}
private Pattern mCompile = Pattern.compile(".*?(gif|jpeg|png|jpg|bmp|webp)");
private boolean isImgUrl(String url) {
if (TextUtils.isEmpty(url) || url.trim().length() == 0) {
return false;
}
return mCompile.matcher(url).matches();
}
@Override
@@ -138,13 +198,11 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
}
class holder extends RecyclerView.ViewHolder {
TextView tv_time;
TextView tv_remind_type;
TextView tv_title;
TextView tv_voice;
ConstraintLayout cl_voice;
TextView tv_time, tv_remind_type, tv_title, tv_voice;
ConstraintLayout cl_voice, cl_vp;
MyJzvdStdNoTitleNoClarity jz_video;
ImageView imageView;
Switch switch1;
ImageView iv_delete;
public holder(@NonNull View itemView) {
super(itemView);
@@ -154,7 +212,9 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
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);
cl_vp = itemView.findViewById(R.id.cl_vp);
jz_video = itemView.findViewById(R.id.jz_video);
imageView = itemView.findViewById(R.id.imageView);
}
}
}