From 61fb4663a6cd92603bf34b75870598709365a9c7 Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Wed, 31 Aug 2022 14:52:14 +0800 Subject: [PATCH] =?UTF-8?q?version:2.7=20fix:=20update:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=88=B1=E5=BF=83=E6=8F=90=E9=86=92,=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=AB=98=E5=BA=A6=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../uiui/aios/activity/NoticeActivity.java | 1 + .../com/uiui/aios/adapter/AlarmAdapter.java | 102 ++++++++++--- .../aios/adapter/NotificationAdapter.java | 4 +- .../com/uiui/aios/bean/AlarmClockData.java | 21 +++ .../uiui/aios/fragment/CustomFragment.java | 8 +- .../java/com/uiui/aios/utils/AlarmUtils.java | 43 +++++- .../{AudioUtils.java => FFmpegUtils.java} | 22 ++- .../java/com/uiui/aios/utils/IconUtils.java | 12 +- .../aios/view/MyJzvdStdNoTitleNoClarity.java | 25 +++ app/src/main/res/drawable-hdpi/play.png | Bin 0 -> 3758 bytes .../main/res/layout-land/fragment_custom.xml | 37 +++-- .../main/res/layout-land/fragment_second.xml | 32 ++-- .../main/res/layout-port/fragment_custom.xml | 37 +++-- .../main/res/layout-port/fragment_second.xml | 32 ++-- app/src/main/res/layout/activity_notice.xml | 5 +- app/src/main/res/layout/item_alarm_clock.xml | 40 ++++- .../main/res/layout/layout_jzstd_notitle.xml | 142 ++++++++++++++++++ 18 files changed, 468 insertions(+), 99 deletions(-) rename app/src/main/java/com/uiui/aios/utils/{AudioUtils.java => FFmpegUtils.java} (58%) create mode 100644 app/src/main/java/com/uiui/aios/view/MyJzvdStdNoTitleNoClarity.java create mode 100644 app/src/main/res/drawable-hdpi/play.png create mode 100644 app/src/main/res/layout/layout_jzstd_notitle.xml diff --git a/app/build.gradle b/app/build.gradle index 5199dfa..657ef9e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiui.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 17 - versionName "2.6" + versionCode 18 + versionName "2.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 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 eb2d24f..5771f4c 100644 --- a/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/NoticeActivity.java @@ -73,6 +73,7 @@ public class NoticeActivity extends AppCompatActivity { if (alarmClockData == null) { finish(); } + Log.e(TAG, "onCreate: " + alarmClockData); showData(alarmClockData); } 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 7ac63fb..b95b792 100644 --- a/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/AlarmAdapter.java @@ -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 { + private FragmentActivity mContext; private List mAlarmClockData; public void setAlarmClockData(List alarmClockData) { @@ -40,6 +45,7 @@ public class AlarmAdapter extends RecyclerView.Adapter { @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 { 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 { } //让MediaPlayer对象准备,用这个方法防止加载时耗时导致anr mMediaPlayer.prepareAsync(); - AudioUtils.getDurationInMilliseconds(voice, new Observer() { + FFmpegUtils.getDurationInMilliseconds(voice, new Observer() { @Override public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) { @@ -129,7 +136,60 @@ public class AlarmAdapter extends RecyclerView.Adapter { } }); } + 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() { + @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 { } 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 { 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); } } } 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 abdf885..ca3a96f 100644 --- a/app/src/main/java/com/uiui/aios/adapter/NotificationAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/NotificationAdapter.java @@ -15,7 +15,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.uiui.aios.R; import com.uiui.aios.bean.AlarmClockData; -import com.uiui.aios.utils.AudioUtils; +import com.uiui.aios.utils.FFmpegUtils; import java.io.IOException; import java.util.List; @@ -59,7 +59,7 @@ public class NotificationAdapter extends RecyclerView.Adapter() { + FFmpegUtils.getDurationInMilliseconds(voice, new Observer() { @Override public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) { diff --git a/app/src/main/java/com/uiui/aios/bean/AlarmClockData.java b/app/src/main/java/com/uiui/aios/bean/AlarmClockData.java index a9f34eb..4b88b3c 100644 --- a/app/src/main/java/com/uiui/aios/bean/AlarmClockData.java +++ b/app/src/main/java/com/uiui/aios/bean/AlarmClockData.java @@ -18,6 +18,8 @@ public class AlarmClockData implements Serializable { String voice;//语音文件地址 String voice_md5; String file;//图片或视频文件地址 + int remind_type; + int is_onoff;//0关闭 1开启 boolean finished = false; @@ -85,6 +87,22 @@ public class AlarmClockData implements Serializable { this.finished = finished; } + public int getRemind_type() { + return remind_type; + } + + public void setRemind_type(int remind_type) { + this.remind_type = remind_type; + } + + public int getIs_onoff() { + return is_onoff; + } + + public void setIs_onoff(int is_onoff) { + this.is_onoff = is_onoff; + } + @NonNull @Override public String toString() { @@ -102,6 +120,9 @@ public class AlarmClockData implements Serializable { if (!voice.equals(((AlarmClockData) obj).voice)) return false; if (!voice_md5.equals(((AlarmClockData) obj).voice_md5)) return false; if (!file.equals(((AlarmClockData) obj).file)) return false; + if (remind_type != ((AlarmClockData) obj).remind_type) return false; + if (is_onoff != ((AlarmClockData) obj).is_onoff) return false; + return true; } } diff --git a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java index e7f80e2..2a0f059 100644 --- a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java @@ -50,6 +50,7 @@ import com.uiui.aios.adapter.SOSNnmberAdapter; import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmItem; import com.uiui.aios.manager.AmapManager; +import com.uiui.aios.utils.AlarmUtils; import com.uiui.aios.utils.ApkUtils; import com.uiui.aios.utils.AppUtil; import com.uiui.aios.utils.SchemeUtils; @@ -442,11 +443,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private void getAlarmClock() { String jsonString = mmkv.decodeString("AlarmClock", ""); if (!TextUtils.isEmpty(jsonString)) { - Type type = new TypeToken>() { - }.getType(); - Gson gson = new Gson(); - List data = gson.fromJson(jsonString, type); - List showData = data.subList(0, 1); + List data = new ArrayList<>(); + data.add(AlarmUtils.getInstance().getRecentAlarmClock()); notificationAdapter.setDataList(data); rv_noti.setVisibility(View.VISIBLE); iv_note_nodata.setVisibility(View.GONE); 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 0511a30..69c78bb 100644 --- a/app/src/main/java/com/uiui/aios/utils/AlarmUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/AlarmUtils.java @@ -18,9 +18,14 @@ import com.uiui.aios.service.main.MainService; import java.io.File; 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; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -107,7 +112,7 @@ public class AlarmUtils { }.getType(); Gson gson = new Gson(); List data = gson.fromJson(jsonString, type); - HashMap hashMap = new HashMap(); + HashMap hashMap = new HashMap<>(); for (AlarmClockData clockData : data) { hashMap.put(clockData.getId(), clockData); } @@ -115,6 +120,41 @@ public class AlarmUtils { } } + public List getOldDataList() { + String jsonString = mmkv.decodeString("AlarmClock", ""); + Log.e(TAG, "getOldPendingIntents: " + jsonString); + if (TextUtils.isEmpty(jsonString)) { + return new ArrayList<>(); + } else { + Type type = new TypeToken>() { + }.getType(); + Gson gson = new Gson(); + List data = gson.fromJson(jsonString, type); + return data; + } + } + + public AlarmClockData getRecentAlarmClock() { + List alarmClockData = getOldDataList(); + if (alarmClockData == null || alarmClockData.size() == 0) { + return null; + } else { + Collections.sort(alarmClockData, new Comparator() { + DateFormat df = new SimpleDateFormat("HH:mm"); + + @Override + public int compare(AlarmClockData o1, AlarmClockData o2) { + try { + return df.parse(o1.getTime()).compareTo(df.parse(o2.getTime())); + } catch (ParseException e) { + throw new IllegalArgumentException(e); + } + } + }); + return alarmClockData.get(0); + } + } + private HashSet getOldPendingIntents() { HashSet pendingIntents = new HashSet<>(); HashMap data = getOldData(); @@ -246,7 +286,6 @@ public class AlarmUtils { } - public void ariaDownload(String url, String md5) { String fileName = Utils.getFileNamefromURL(url); File file = new File(Utils.getDownLoadPath(mContext) + fileName); diff --git a/app/src/main/java/com/uiui/aios/utils/AudioUtils.java b/app/src/main/java/com/uiui/aios/utils/FFmpegUtils.java similarity index 58% rename from app/src/main/java/com/uiui/aios/utils/AudioUtils.java rename to app/src/main/java/com/uiui/aios/utils/FFmpegUtils.java index 0511578..39e8acd 100644 --- a/app/src/main/java/com/uiui/aios/utils/AudioUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/FFmpegUtils.java @@ -1,5 +1,7 @@ package com.uiui.aios.utils; +import android.content.Context; +import android.graphics.Bitmap; import android.util.Log; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -11,7 +13,7 @@ import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.schedulers.Schedulers; import wseemann.media.FFmpegMediaMetadataRetriever; -public class AudioUtils { +public class FFmpegUtils { /** * 获取在线音频时间长度 * @@ -34,4 +36,22 @@ public class AudioUtils { .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } + + public static void loadVideoScreenshot(String url, Observer observer) { + Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { + FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); + mmr.setDataSource(url); + mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM); + mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST); + Bitmap b = mmr.getFrameAtTime(2000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST); // frame at 2 seconds + byte[] artwork = mmr.getEmbeddedPicture(); + mmr.release(); + emitter.onNext(b); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(observer); + } } diff --git a/app/src/main/java/com/uiui/aios/utils/IconUtils.java b/app/src/main/java/com/uiui/aios/utils/IconUtils.java index 22a1e6d..01cb120 100644 --- a/app/src/main/java/com/uiui/aios/utils/IconUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/IconUtils.java @@ -39,9 +39,9 @@ public class IconUtils { this.add("com.mediatek.fmradio");//收音机 this.add("com.android.fmradio");//收音机 this.add("com.android.email");//电子邮件 - this.add("com.ss.android.ugc.aweme");//抖音 - this.add("com.ss.android.article.news");//头条 - this.add("com.tencent.mm");//微信 +// this.add("com.ss.android.ugc.aweme");//抖音 +// this.add("com.ss.android.article.news");//头条 +// this.add("com.tencent.mm");//微信 }}; public static List appIconList = new ArrayList() {{ @@ -77,9 +77,9 @@ public class IconUtils { this.add("com_mediatek_fmradio"); this.add("com_mediatek_fmradio");//收音机 this.add("com_android_email"); - this.add("com_android_aweme2"); - this.add("com_android_news2"); - this.add("com_tencent_mm2"); +// this.add("com_android_aweme2"); +// this.add("com_android_news2"); +// this.add("com_tencent_mm2"); }}; public static List appIconList2 = new ArrayList() {{ diff --git a/app/src/main/java/com/uiui/aios/view/MyJzvdStdNoTitleNoClarity.java b/app/src/main/java/com/uiui/aios/view/MyJzvdStdNoTitleNoClarity.java new file mode 100644 index 0000000..381dd75 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/view/MyJzvdStdNoTitleNoClarity.java @@ -0,0 +1,25 @@ +package com.uiui.aios.view; + +import android.content.Context; +import android.util.AttributeSet; + +import com.uiui.aios.R; + +import cn.jzvd.JzvdStd; + +public class MyJzvdStdNoTitleNoClarity extends JzvdStd { + + public MyJzvdStdNoTitleNoClarity(Context context) { + super(context); + } + + public MyJzvdStdNoTitleNoClarity(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public int getLayoutId() { + return R.layout.layout_jzstd_notitle; + } + +} diff --git a/app/src/main/res/drawable-hdpi/play.png b/app/src/main/res/drawable-hdpi/play.png new file mode 100644 index 0000000000000000000000000000000000000000..eeeed5ae585bf2cdf7e3c7282e3a35da36da72ad GIT binary patch literal 3758 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 SRMp)Zq?NfXs?^Lq{C@xe1f#P6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-land/fragment_custom.xml b/app/src/main/res/layout-land/fragment_custom.xml index d01bc32..3d988dd 100644 --- a/app/src/main/res/layout-land/fragment_custom.xml +++ b/app/src/main/res/layout-land/fragment_custom.xml @@ -8,8 +8,6 @@ @@ -81,7 +82,10 @@ android:id="@+id/cl_note" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="4dp" android:layout_weight="3" android:background="@drawable/custom_background"> @@ -133,7 +137,10 @@ android:id="@+id/cl_sos" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="4dp" android:layout_weight="2" android:background="@drawable/custom_background"> @@ -232,7 +239,10 @@ android:id="@+id/cl_health" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="8dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background" tools:ignore="NestedWeights"> @@ -267,7 +277,10 @@ android:id="@+id/cl_tongue" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> @@ -301,7 +314,10 @@ android:id="@+id/cl_face" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> @@ -334,7 +350,10 @@ android:id="@+id/cl_hand" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> diff --git a/app/src/main/res/layout-land/fragment_second.xml b/app/src/main/res/layout-land/fragment_second.xml index 05f940d..d585838 100644 --- a/app/src/main/res/layout-land/fragment_second.xml +++ b/app/src/main/res/layout-land/fragment_second.xml @@ -19,10 +19,10 @@ @@ -174,10 +174,10 @@ @@ -269,10 +269,10 @@ android:id="@+id/cl_activity" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_marginStart="16dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="8dp" - android:layout_marginBottom="16dp" + android:layout_marginStart="8dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> @@ -390,10 +390,10 @@ android:id="@+id/cl_demand" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_marginStart="8dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="16dp" - android:layout_marginBottom="16dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> diff --git a/app/src/main/res/layout-port/fragment_custom.xml b/app/src/main/res/layout-port/fragment_custom.xml index d01bc32..3d988dd 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -8,8 +8,6 @@ @@ -81,7 +82,10 @@ android:id="@+id/cl_note" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="4dp" android:layout_weight="3" android:background="@drawable/custom_background"> @@ -133,7 +137,10 @@ android:id="@+id/cl_sos" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="8dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="4dp" android:layout_weight="2" android:background="@drawable/custom_background"> @@ -232,7 +239,10 @@ android:id="@+id/cl_health" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="8dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background" tools:ignore="NestedWeights"> @@ -267,7 +277,10 @@ android:id="@+id/cl_tongue" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> @@ -301,7 +314,10 @@ android:id="@+id/cl_face" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> @@ -334,7 +350,10 @@ android:id="@+id/cl_hand" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_margin="8dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> diff --git a/app/src/main/res/layout-port/fragment_second.xml b/app/src/main/res/layout-port/fragment_second.xml index 05f940d..d585838 100644 --- a/app/src/main/res/layout-port/fragment_second.xml +++ b/app/src/main/res/layout-port/fragment_second.xml @@ -19,10 +19,10 @@ @@ -174,10 +174,10 @@ @@ -269,10 +269,10 @@ android:id="@+id/cl_activity" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_marginStart="16dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="8dp" - android:layout_marginBottom="16dp" + android:layout_marginStart="8dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="4dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> @@ -390,10 +390,10 @@ android:id="@+id/cl_demand" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_marginStart="8dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="16dp" - android:layout_marginBottom="16dp" + android:layout_marginStart="4dp" + android:layout_marginTop="4dp" + android:layout_marginEnd="8dp" + android:layout_marginBottom="8dp" android:layout_weight="1" android:background="@drawable/custom_background"> diff --git a/app/src/main/res/layout/activity_notice.xml b/app/src/main/res/layout/activity_notice.xml index a095955..0162943 100644 --- a/app/src/main/res/layout/activity_notice.xml +++ b/app/src/main/res/layout/activity_notice.xml @@ -51,8 +51,8 @@ -