From 7fd2da133ce81e9760e07326dea74e6a1b1f1096 Mon Sep 17 00:00:00 2001 From: lihongwei Date: Fri, 11 Oct 2024 18:28:00 +0800 Subject: [PATCH] =?UTF-8?q?A=E9=9D=A2=E5=8A=9F=E8=83=BD=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/A_ImportFragmentAdapter.java | 5 +- .../player/helper/CircularProgressBar.java | 2 +- .../service/MusicPlayerForegroundService.java | 75 +++++++++++++++++ .../player/ui/activity/A_HomeActivity.java | 20 ++++- .../player/ui/activity/A_PlayActivity.java | 63 ++++++++++++--- .../ui/activity/viewmodel/A_VMHome.java | 4 - .../player/ui/fragmnt/A_ImportFragment.java | 80 ++++++++----------- app/src/main/res/drawable/light.xml | 12 +++ app/src/main/res/drawable/timing.xml | 12 +++ app/src/main/res/drawable/timing_drak.xml | 12 +++ app/src/main/res/layout/activity_ahome.xml | 13 +-- app/src/main/res/layout/activity_aplay.xml | 45 +++++------ app/src/main/res/layout/item_a_home_3.xml | 2 +- app/src/main/res/layout/item_a_import.xml | 2 +- ...ns_dialog.xml => options_popup_window.xml} | 4 +- app/src/main/res/layout/rename_dialog.xml | 5 +- 16 files changed, 244 insertions(+), 112 deletions(-) create mode 100644 app/src/main/res/drawable/light.xml create mode 100644 app/src/main/res/drawable/timing.xml create mode 100644 app/src/main/res/drawable/timing_drak.xml rename app/src/main/res/layout/{options_dialog.xml => options_popup_window.xml} (93%) diff --git a/app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java b/app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java index eb03e7d..6ea4218 100644 --- a/app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java +++ b/app/src/main/java/com/hi/music/player/adapter/A_ImportFragmentAdapter.java @@ -102,12 +102,9 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter isPlaying = new MutableLiveData<>(false); // 播放状态 private final MutableLiveData fileName = new MutableLiveData<>(); // 当前播放的文件名 + private MutableLiveData remainingTimeLiveData = new MutableLiveData<>(); // 创建LiveData private AudioItem audioItem; // 当前播放的音频项 private String currentAudioPath = null; // 当前播放的音频路径 private PowerManager.WakeLock wakeLock; // 用于防止设备休眠 private boolean isLooping = true; // 循环播放标志 + private Handler timerHandler; // 用于管理倒计时 + private Runnable timerRunnable; // 倒计时Runnable + private int remainingTime; // 剩余时间(毫秒) + private boolean isTimerRunning = false; // 计时器状态 + private boolean isTimerPaused = false; // 计时器是否暂停 + // 自定义Binder类 public class MusicBinder extends Binder { @@ -216,6 +227,58 @@ public class MusicPlayerForegroundService extends Service { } } + // 开始或重新开始计时器 + public void startTimer(int duration) { + if (isTimerRunning && !isTimerPaused) { + stopTimer(); // 如果计时器已经运行并且没有暂停,则重新开始计时器前先停止 + } + remainingTime = duration; // 重置计时器时间 + isTimerPaused = false; // 清除暂停状态 + isTimerRunning = true; // 标记计时器正在运行 + timerHandler = new Handler(Looper.getMainLooper()); + + timerRunnable = new Runnable() { + @Override + public void run() { + if (remainingTime > 0) { + remainingTime -= 1000; // 每秒减少1秒 + remainingTimeLiveData.postValue(remainingTime); // 更新LiveData,通知UI + timerHandler.postDelayed(this, 1000); // 每秒更新一次 + } else { + pauseAudio(); // 时间到,暂停音乐 + isPlaying.postValue(false); // 更新播放状态 + Toast.makeText(getApplicationContext(), "定时器结束", Toast.LENGTH_SHORT).show(); + stopTimer(); // 时间到,结束计时器 + } + } + }; + timerHandler.postDelayed(timerRunnable, 1000); // 启动计时器 + } + + // 暂停计时器 + public void pauseTimer() { + if (isTimerRunning && !isTimerPaused) { + isTimerPaused = true; // 标记为暂停状态 + timerHandler.removeCallbacks(timerRunnable); // 暂停计时器 + } + } + + // 恢复计时器 + public void resumeTimer() { + if (isTimerRunning && isTimerPaused) { + isTimerPaused = false; // 清除暂停状态 + timerHandler.postDelayed(timerRunnable, 1000); // 恢复计时器 + } + } + + // 结束计时器 + public void stopTimer() { + isTimerRunning = false; // 更新状态 + isTimerPaused = false; // 清除暂停状态 + if (timerHandler != null && timerRunnable != null) { + timerHandler.removeCallbacks(timerRunnable); // 移除所有回调,停止计时器 + } + } // 暂停播放 public void pauseAudio() { @@ -243,10 +306,21 @@ public class MusicPlayerForegroundService extends Service { return fileName; } + //获取audioItem的名字 public String getName() { return mediaPlayer != null ? audioItem.getName() : null; } + //获取audioItem + public AudioItem getAudioItem() { + return audioItem; + } + + //获取计时器时间 + public LiveData getRemainingTimeLiveData() { + return remainingTimeLiveData; // 提供LiveData访问 + } + // 获取当前播放位置(毫秒) public int getCurrentPosition() { return mediaPlayer != null ? mediaPlayer.getCurrentPosition() : 0; @@ -287,5 +361,6 @@ public class MusicPlayerForegroundService extends Service { mediaPlayer.release(); // 释放MediaPlayer资源 mediaPlayer = null; // 设置为null } + stopTimer(); } } diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java index 179ce6a..b070bc0 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/A_HomeActivity.java @@ -7,6 +7,7 @@ import android.content.ServiceConnection; import android.os.Handler; import android.os.IBinder; import android.os.Looper; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -16,6 +17,7 @@ import com.hi.music.player.R; import com.hi.music.player.adapter.A_HomeViewPagerAdapter; import com.hi.music.player.databinding.ActivityAhomeBinding; import com.hi.music.player.databinding.HomeTabCustomBinding; +import com.hi.music.player.javabean.A_data.AudioItem; import com.hi.music.player.service.MusicPlayerForegroundService; import java.util.Locale; @@ -39,6 +41,7 @@ public class A_HomeActivity extends BaseActivity { public void onServiceConnected(ComponentName name, IBinder service) { musicService = ((MusicPlayerForegroundService.MusicBinder) service).getService(); // 获取服务实例 isBound = true; // 服务已绑定 + Log.d("A_HomeActivity", "isBound"); updatePlayButtonState(); // 更新播放按钮状态 startUpdatingProgress(); // 启动进度更新 observeIsPlaying(); // 观察播放状态变化 @@ -57,7 +60,17 @@ public class A_HomeActivity extends BaseActivity { bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); // 绑定服务 // 初始化界面 + vb.homeContainer.setVisibility(View.GONE); vb.pause.setOnClickListener(v -> togglePlayPause()); // 设置暂停/播放按钮点击事件 + vb.homeContainer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AudioItem audioItem = musicService.getAudioItem(); + Intent intent = new Intent(A_HomeActivity.this, A_PlayActivity.class); + intent.putExtra("Path", audioItem); + startActivity(intent); + } + }); setupProgressBar(); // 设置进度条 setupViewPager(); // 设置ViewPager setupTabLayout(); // 设置TabLayout @@ -70,12 +83,12 @@ public class A_HomeActivity extends BaseActivity { @Override public boolean isFullScreen() { - return false; // 不是全屏模式 + return true; } @Override public boolean statusBarLight() { - return false; // 状态栏不为浅色 + return false; } // 设置进度条 @@ -142,6 +155,9 @@ public class A_HomeActivity extends BaseActivity { musicService.getIsPlaying().observe(this, isPlaying -> { if (isPlaying != null) { vb.pause.setImageResource(isPlaying ? R.drawable.pause : R.drawable.play); // 更新播放按钮图标 + if (isPlaying) { + vb.homeContainer.setVisibility(View.VISIBLE); + } } }); } diff --git a/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java index ad62eca..ed3554e 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/A_PlayActivity.java @@ -17,6 +17,7 @@ import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; +import com.bumptech.glide.Glide; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.hi.music.player.R; import com.hi.music.player.databinding.ActivityAplayBinding; @@ -34,6 +35,7 @@ public class A_PlayActivity extends BaseActivity { private boolean isBackground; // 背景状态 private Handler progressHandler; // 用于更新进度的Handler private List textViews = new ArrayList<>(); // 存储变换颜色的文字 + private boolean isTimerOff = false; // 标志位 // 服务连接对象 private final ServiceConnection serviceConnection = new ServiceConnection() { @@ -47,6 +49,9 @@ public class A_PlayActivity extends BaseActivity { // musicService.getFileName().observe(A_PlayActivity.this, vb.songTitle::setText); vb.songTitle.setText(musicService.getName()); + // 更新进度条和时间 + updateSeekBarAndTime(); // 添加这一行以确保服务连接时更新UI + startUpdatingProgress(); // 启动进度更新 } @@ -59,6 +64,11 @@ public class A_PlayActivity extends BaseActivity { private void updatePlayButton(Boolean isPlaying) { if (isPlaying != null) { vb.playButton.setBackgroundResource(isPlaying ? R.drawable.pause : R.drawable.play); + if (isPlaying) { + musicService.resumeTimer(); + } else { + musicService.pauseTimer(); + } } } }; @@ -78,6 +88,7 @@ public class A_PlayActivity extends BaseActivity { loadBackgroundPreference(); // 加载之前保存的背景状态 + // 从Intent获取音频项 AudioItem audioItem = (AudioItem) getIntent().getSerializableExtra("Path"); if (audioItem == null) { @@ -85,8 +96,15 @@ public class A_PlayActivity extends BaseActivity { return; } + Glide.with(this) + .load("file:///android_asset/" + audioItem.getImage()) + .placeholder(R.mipmap.default_image) // 默认图片 + .into(vb.recordImage); // 加载专辑图片 + + startMusicService(audioItem); // 启动音乐服务 setupPlayButtonClickListener(); // 设置播放按钮的点击事件 + } @Override @@ -156,10 +174,14 @@ public class A_PlayActivity extends BaseActivity { vb.rootLayout.setBackgroundResource(R.color.dark_music); // 切换为暗色背景 vb.backButton.setImageResource(R.drawable.arrow_left); setTextColor(Color.WHITE); // 设置文字颜色为白色 + vb.prevButton.setImageResource(R.drawable.sleep); + vb.repeatButton.setImageResource(R.drawable.timing); } else { vb.rootLayout.setBackgroundResource(R.color.white); // 切换为亮色背景 vb.backButton.setImageResource(R.drawable.arrow_left_black); setTextColor(Color.BLACK); // 设置文字颜色为黑色 + vb.prevButton.setImageResource(R.drawable.light); + vb.repeatButton.setImageResource(R.drawable.timing_drak); } saveBackgroundPreference(); // 保存当前背景状态 } @@ -180,6 +202,8 @@ public class A_PlayActivity extends BaseActivity { // 根据保存的状态设置背景 vb.rootLayout.setBackgroundResource(isBackground ? R.color.dark_music : R.color.white); vb.backButton.setImageResource(isBackground ? R.drawable.arrow_left : R.drawable.arrow_left_black); + vb.prevButton.setImageResource(isBackground ? R.drawable.sleep : R.drawable.light); + vb.repeatButton.setImageResource(isBackground ? R.drawable.timing : R.drawable.timing_drak); setTextColor(isBackground ? Color.WHITE : Color.BLACK); } @@ -197,40 +221,58 @@ public class A_PlayActivity extends BaseActivity { bottomSheetDialog.setContentView(dialogView); RadioGroup timerOptions = dialogView.findViewById(R.id.timerOptions); + TextView time = dialogView.findViewById(R.id.timerLabel); + + // 读取上次选中的 radioButton ID + SharedPreferences sharedPreferences = getSharedPreferences("TimerPreferences", MODE_PRIVATE); + int selectedId = sharedPreferences.getInt("selectedTimerOption", R.id.radioOff); // 默认选项为 radioOff + timerOptions.check(selectedId); // 设置默认选中的 RadioButton + timerOptions.setOnCheckedChangeListener((group, checkedId) -> { int duration = 0; // 用于保存定时时长 if (checkedId == R.id.radioOff) { + musicService.stopTimer(); + time.setText("Timing off"); + isTimerOff = true; // 设置标志位为 true Toast.makeText(getApplicationContext(), "定时关闭已取消", Toast.LENGTH_SHORT).show(); - return; // 取消定时 } else if (checkedId == R.id.radio10) { duration = 10 * 60 * 1000; // 10分钟 + isTimerOff = false; } else if (checkedId == R.id.radio20) { duration = 20 * 60 * 1000; // 20分钟 + isTimerOff = false; } else if (checkedId == R.id.radio30) { duration = 30 * 60 * 1000; // 30分钟 + isTimerOff = false; } else if (checkedId == R.id.radio60) { duration = 60 * 60 * 1000; // 60分钟 + isTimerOff = false; } else if (checkedId == R.id.radio90) { duration = 90 * 60 * 1000; // 90分钟 + isTimerOff = false; } if (duration > 0) { Toast.makeText(getApplicationContext(), "定时设置为 " + (duration / 60000) + " 分钟", Toast.LENGTH_SHORT).show(); - startTimer(duration); // 启动定时器 + musicService.startTimer(duration); + } + + // 保存选中的 radioButton ID 到 SharedPreferences + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putInt("selectedTimerOption", checkedId); + editor.apply(); + }); + + // 观察remainingTimeLiveData,实时更新UI + musicService.getRemainingTimeLiveData().observe(A_PlayActivity.this, remainingTime -> { + if (!isTimerOff) { + time.setText("Count down " + formatTime(remainingTime)); } }); bottomSheetDialog.show(); // 显示 BottomSheetDialog } - // 启动定时器 - private void startTimer(int duration) { - // 使用 Handler 来设置定时器 - new Handler().postDelayed(() -> { - musicService.pauseAudio(); - Toast.makeText(getApplicationContext(), "定时器结束", Toast.LENGTH_SHORT).show(); - }, duration); - } // 格式化时间显示 private String formatTime(int milliseconds) { @@ -239,6 +281,7 @@ public class A_PlayActivity extends BaseActivity { return String.format(Locale.getDefault(), "%d:%02d", minutes, seconds); } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java b/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java index f51e8eb..2b53f0e 100644 --- a/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java +++ b/app/src/main/java/com/hi/music/player/ui/activity/viewmodel/A_VMHome.java @@ -4,10 +4,6 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; - -import com.hi.music.player.service.MusicPlayerForegroundService; public class A_VMHome extends AndroidViewModel { diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java b/app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java index a8ffc37..fc4e73a 100644 --- a/app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java +++ b/app/src/main/java/com/hi/music/player/ui/fragmnt/A_ImportFragment.java @@ -4,7 +4,6 @@ import static android.app.Activity.RESULT_OK; import android.Manifest; import android.app.AlertDialog; -import android.app.Dialog; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Color; @@ -14,10 +13,10 @@ import android.os.Build; import android.os.Environment; import android.view.LayoutInflater; import android.view.View; -import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.EditText; +import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; @@ -77,55 +76,42 @@ public class A_ImportFragment extends BaseFragment { private void initEvent() { Vb.setting.setOnClickListener(v -> startActivity(new Intent(getContext(), A_SettingActivity.class))); Vb.add.setOnClickListener(v -> checkAndOpenAudioPicker()); - adapter.setOnOptionClickListener(this::showDialog); + adapter.setOnOptionClickListener(this::showPopupWindow); } - private void showDialog(int position, String filePath, View anchorView) { - Dialog dialog = createOptionsDialog(anchorView); - Button buttonOne = dialog.findViewById(R.id.rename); - Button buttonTwo = dialog.findViewById(R.id.delete); + private void showPopupWindow(int position, String filePath, View anchorView) { + // 膨胀 PopupWindow 的布局 + View popupView = LayoutInflater.from(requireContext()).inflate(R.layout.options_popup_window, null); - buttonOne.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - dialog.dismiss(); - showRenameDialog(position); - } + // 创建 PopupWindow + PopupWindow popupWindow = new PopupWindow(popupView, + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT, + true); + + // 设置背景为透明 +// popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + popupWindow.setOutsideTouchable(true); // 允许点击外部关闭 + + // 获取 PopupWindow 中的控件 + Button renameButton = popupView.findViewById(R.id.rename); + Button deleteButton = popupView.findViewById(R.id.delete); + + // 设置重命名按钮的点击事件 + renameButton.setOnClickListener(v -> { + popupWindow.dismiss(); + showRenameDialog(position); }); - buttonTwo.setOnClickListener(v -> deleteAudioFile(position, filePath, dialog)); - dialog.show(); - } + // 设置删除按钮的点击事件 + deleteButton.setOnClickListener(v -> { + deleteAudioFile(position, filePath, popupWindow); + }); - - private Dialog createOptionsDialog(View anchorView) { - Dialog dialog = new Dialog(requireContext()); - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(R.layout.options_dialog); - dialog.setCancelable(true); - Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - setDialogPosition(dialog, anchorView); // 设置对话框的位置 - return dialog; - } - - - private void setDialogPosition(Dialog dialog, View anchorView) { - Window window = dialog.getWindow(); - if (window != null) { - WindowManager.LayoutParams layoutParams = window.getAttributes(); - layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT; - layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; - window.setAttributes(layoutParams); - - // 获取按钮在屏幕上的位置 - int[] location = new int[2]; - anchorView.getLocationOnScreen(location); - - // 设置对话框在按钮旁边显示 - layoutParams.x = location[0] + anchorView.getWidth(); // 在按钮右侧显示 - layoutParams.y = location[1]; // 与按钮的 Y 坐标对齐 - window.setAttributes(layoutParams); - } + // 显示 PopupWindow,设置其位置 + int[] location = new int[2]; + anchorView.getLocationOnScreen(location); + popupWindow.showAsDropDown(anchorView, 0, 10); // 在 anchorView 下方显示 } @@ -156,10 +142,10 @@ public class A_ImportFragment extends BaseFragment { subDialog.show(); } - private void deleteAudioFile(int position, String filePath, Dialog dialog) { + private void deleteAudioFile(int position, String filePath, PopupWindow popupWindow) { viewModel.markAudioAsDeleted(filePath); Toast.makeText(requireContext(), "删除按钮被点击, 项目: " + position, Toast.LENGTH_SHORT).show(); - dialog.dismiss(); + popupWindow.dismiss(); } private void checkAndOpenAudioPicker() { diff --git a/app/src/main/res/drawable/light.xml b/app/src/main/res/drawable/light.xml new file mode 100644 index 0000000..186b778 --- /dev/null +++ b/app/src/main/res/drawable/light.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/timing.xml b/app/src/main/res/drawable/timing.xml new file mode 100644 index 0000000..626f5a7 --- /dev/null +++ b/app/src/main/res/drawable/timing.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/timing_drak.xml b/app/src/main/res/drawable/timing_drak.xml new file mode 100644 index 0000000..95a0a67 --- /dev/null +++ b/app/src/main/res/drawable/timing_drak.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/activity_ahome.xml b/app/src/main/res/layout/activity_ahome.xml index b7afc1b..b48ba79 100644 --- a/app/src/main/res/layout/activity_ahome.xml +++ b/app/src/main/res/layout/activity_ahome.xml @@ -91,8 +91,8 @@ android:id="@+id/separator" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="/" android:layout_marginStart="6dp" + android:text="/" android:textSize="12sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/bottom_text1" @@ -109,17 +109,6 @@ app:layout_constraintStart_toEndOf="@+id/separator" app:layout_constraintTop_toBottomOf="@+id/top_text" /> - - - @@ -35,7 +35,6 @@ android:layout_width="300dp" android:layout_height="300dp" android:layout_marginTop="66dp" - android:contentDescription="Record" android:src="@mipmap/default_image" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -71,76 +70,70 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="16dp" android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" android:max="100" - android:progress="0" - app:layout_constraintBottom_toBottomOf="@+id/play_button" + android:progress="50" + app:layout_constraintBottom_toTopOf="@+id/current" app:layout_constraintEnd_toStartOf="@+id/play_button" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/artist_album_text" /> + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintTop_toTopOf="@+id/song_seekbar" /> + app:layout_constraintBottom_toTopOf="@+id/linear" + app:layout_constraintStart_toStartOf="@id/song_seekbar" /> + app:layout_constraintBottom_toTopOf="@+id/linear" + app:layout_constraintEnd_toEndOf="@id/song_seekbar" /> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent"> + android:src="@drawable/sleep" /> + android:src="@drawable/timing" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/item_a_home_3.xml b/app/src/main/res/layout/item_a_home_3.xml index a378e6e..9c5b3c2 100644 --- a/app/src/main/res/layout/item_a_home_3.xml +++ b/app/src/main/res/layout/item_a_home_3.xml @@ -32,7 +32,7 @@ android:layout_height="wrap_content" android:layout_marginStart="11dp" android:text="Top Text" - android:textColor="@android:color/black" + android:textColor="#FFFFFF" android:textSize="16sp" app:layout_constraintStart_toEndOf="@+id/card_view" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/item_a_import.xml b/app/src/main/res/layout/item_a_import.xml index 7e363ec..394417d 100644 --- a/app/src/main/res/layout/item_a_import.xml +++ b/app/src/main/res/layout/item_a_import.xml @@ -33,7 +33,7 @@ android:layout_height="wrap_content" android:layout_marginStart="11dp" android:text="Top Text" - android:textColor="@android:color/black" + android:textColor="@android:color/white" android:textSize="16sp" app:layout_constraintStart_toEndOf="@+id/card_view" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/options_dialog.xml b/app/src/main/res/layout/options_popup_window.xml similarity index 93% rename from app/src/main/res/layout/options_dialog.xml rename to app/src/main/res/layout/options_popup_window.xml index 7d7fe6b..3bfac43 100644 --- a/app/src/main/res/layout/options_dialog.xml +++ b/app/src/main/res/layout/options_popup_window.xml @@ -14,7 +14,7 @@ android:text="Rename" android:backgroundTint="@android:color/transparent" android:textSize="16sp" - android:textColor="@color/black"/> + android:textColor="#FFFFFF"/> diff --git a/app/src/main/res/layout/rename_dialog.xml b/app/src/main/res/layout/rename_dialog.xml index d175b42..72bf8a2 100644 --- a/app/src/main/res/layout/rename_dialog.xml +++ b/app/src/main/res/layout/rename_dialog.xml @@ -25,7 +25,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:text="The value contains a maximum - of 60 characters" + of 30 characters" android:textColor="@color/white" android:textSize="13sp" /> @@ -37,8 +37,9 @@ android:layout_marginBottom="16dp" android:background="@drawable/rounded_edittext_background" android:hint="Placeholder" - android:textColor="@color/white" + android:maxLength="30" android:padding="12dp" + android:textColor="@color/white" android:textSize="13sp" />