diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 155b661..fdd0ead 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,11 @@ xmlns:tools="http://schemas.android.com/tools"> - + + + () { + MyRoom.getInstance().getDataDao().queryAudioIsLove(resource.getId()).observe(this, new Observer() { @Override - public boolean onLoadFailed(@Nullable GlideException e, @Nullable Object model, @NonNull Target target, boolean isFirstResource) { - return false; + public void onChanged(MyData myData) { + Log.d("----", "---myData.isAddLove()=" + myData.isAddLove()); + imAddLove.setSelected(myData.isAddLove()); } + }); + if(!resource.isSyStem()){ + imageView.setImageResource(R.mipmap.default_covert); + }else { + Glide.with(this).load(resource.getPreUrl()).addListener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, @Nullable Object model, @NonNull Target target, boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(@NonNull Drawable resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { + return false; + } + }).into(imageView); + } - @Override - public boolean onResourceReady(@NonNull Drawable resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { - return false; - } - }).into(imageView); } private void initMediaPlayer() { mediaPlayer = new MediaPlayer(); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mediaPlayer.reset(); - mediaPlayer.setDataSource(resource.getMp3Url()); + String mp3Url = resource.getMp3Url(); + //content://com.android.providers.media.documents/document/audio%3A1000000468 + if(resource.isSyStem()){ + mediaPlayer.setDataSource(mp3Url); + }else { + Uri parse = Uri.parse(mp3Url); + Log.d(Sounds.TAG,"--------Uri--="+parse); + mediaPlayer.setDataSource(this,parse); + + } mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { -// setLoading(false); + setLoading(false); } }); @@ -144,8 +169,17 @@ public class DetailActivity extends AppCompatActivity { } }); } catch (IOException ioException) { -// setLoading(false); - Toast.makeText(this, "Prepare Fail", Toast.LENGTH_SHORT).show(); + setLoading(false); + Log.d(Sounds.TAG,"-----------ioException="+ioException.getCause()); + Toast.makeText(this, getString(R.string.load_fail), Toast.LENGTH_SHORT).show(); + } + } + + private void setLoading(boolean isLoading){ + if(isLoading){ + pbLoading.setVisibility(View.VISIBLE); + }else { + pbLoading.setVisibility(View.GONE); } } diff --git a/app/src/main/java/com/example/funnysounds/activity/MainActivity.java b/app/src/main/java/com/example/funnysounds/activity/MainActivity.java index 18eada4..ec81367 100644 --- a/app/src/main/java/com/example/funnysounds/activity/MainActivity.java +++ b/app/src/main/java/com/example/funnysounds/activity/MainActivity.java @@ -23,6 +23,7 @@ import com.example.funnysounds.R; import com.example.funnysounds.databinding.ActivityMainBinding; import com.example.funnysounds.fragement.CategoryFragment; import com.example.funnysounds.fragement.LoveFragment; +import com.example.funnysounds.fragement.RecordFragment; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; @@ -110,7 +111,7 @@ public class MainActivity extends AppCompatActivity { List fragmentList = new ArrayList<>(); fragmentList.add(CategoryFragment.newInstance()); - fragmentList.add(LoveFragment.newInstance()); + fragmentList.add(RecordFragment.newInstance()); fragmentList.add(LoveFragment.newInstance()); vb.viewPager.setAdapter(new FragmentStateAdapter(MainActivity.this) { diff --git a/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java b/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java index 9e3dcf6..85a2d23 100644 --- a/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java +++ b/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java @@ -82,7 +82,7 @@ public class SpecifisoundsActivity extends AppCompatActivity implements MyDataSo DataAdapter dataAdapter = new DataAdapter( this); dataAdapter.setMyDataSounderListener(this); recyclerview_specific.setAdapter(dataAdapter); - MyRoom.getInstance().getDataDao().queryList(name.getCateId()).observe(this, new Observer>() { + MyRoom.getInstance().getDataDao().queryList(name.getCateId(),true).observe(this, new Observer>() { @Override public void onChanged(List myData) { Log.d(Sounds.TAG,"------------myData"+myData.size()); diff --git a/app/src/main/java/com/example/funnysounds/data/MyData.java b/app/src/main/java/com/example/funnysounds/data/MyData.java index 4ce848a..b2fcf32 100644 --- a/app/src/main/java/com/example/funnysounds/data/MyData.java +++ b/app/src/main/java/com/example/funnysounds/data/MyData.java @@ -12,13 +12,13 @@ import com.example.funnysounds.resolve.Sounds; import java.io.Serializable; @Entity(tableName = Sounds.TABLE_2, foreignKeys = @ForeignKey(entity = CategoryList.class, parentColumns = "cateId", childColumns = "categoryId", onDelete = ForeignKey.CASCADE), - indices = @Index(value = {"id"}, unique = true)) + indices = {@Index(value = {"id"}, unique = true),@Index(value = {"mp3Url"}, unique = true)} ) public class MyData implements Serializable { @PrimaryKey(autoGenerate = true) private long id; private long categoryId; - + private boolean isSyStem; private String title; private String mp3Url; private String preUrl; @@ -45,6 +45,14 @@ public class MyData implements Serializable { this.preUrl = preUrl; } + public boolean isSyStem() { + return isSyStem; + } + + public void setSyStem(boolean syStem) { + isSyStem = syStem; + } + public long getId() { return id; } diff --git a/app/src/main/java/com/example/funnysounds/dialog/RecordDialog.java b/app/src/main/java/com/example/funnysounds/dialog/RecordDialog.java new file mode 100644 index 0000000..f33d73d --- /dev/null +++ b/app/src/main/java/com/example/funnysounds/dialog/RecordDialog.java @@ -0,0 +1,94 @@ +package com.example.funnysounds.dialog; + + +import android.app.Dialog; +import android.os.Bundle; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; + +import com.example.funnysounds.R; +import com.example.funnysounds.action.RecordDialogClickListener; +import com.example.funnysounds.databinding.DialogRecordBinding; + + +public class RecordDialog extends DialogFragment { + + + private DialogRecordBinding vb; + private RecordDialogClickListener mListener; + + + public RecordDialog(RecordDialogClickListener listener) { + mListener = listener; + } + + @Override + public void onDestroy() { + super.onDestroy(); + + } + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + vb = DialogRecordBinding.inflate(inflater, container, false); + init(); + return vb.getRoot(); + } + + + private void init() { + + Dialog dialog = getDialog(); + setCancelable(true); + if (dialog != null) { + Window window = dialog.getWindow(); + if (window != null) { + window.setBackgroundDrawableResource(R.color.transparent); + window.getDecorView().setPadding(0, 0, 0, 0); + + WindowManager.LayoutParams attributes = window.getAttributes(); + attributes.gravity = Gravity.BOTTOM; + attributes.width = WindowManager.LayoutParams.MATCH_PARENT; + attributes.height = WindowManager.LayoutParams.WRAP_CONTENT; + window.setAttributes(attributes); + } + } + + vb.btnRecord.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mListener.onRecord(); + dismiss(); + } + }); + vb.btnImport.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mListener.onImport(); + dismiss(); + } + }); + + } + + public void closeDialog() { + dismiss(); + } + + + public static RecordDialog newInstance(RecordDialogClickListener listener) { + + RecordDialog okDialogFragment = new RecordDialog(listener); + return okDialogFragment; + } +} diff --git a/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java b/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java index a44a7ed..3105ad8 100644 --- a/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java +++ b/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java @@ -1,69 +1,197 @@ package com.example.funnysounds.fragement; +import android.Manifest; +import android.app.Activity; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; + +import com.example.funnysounds.action.IOListener; +import com.example.funnysounds.action.RecordDialogClickListener; import com.example.funnysounds.data.MyData; -import com.example.funnysounds.databinding.FragmentLoveBinding; import com.example.funnysounds.databinding.FragmentRecordBinding; +import com.example.funnysounds.dialog.RecordDialog; import com.example.funnysounds.resolve.MySpace; +import com.example.funnysounds.resolve.Readfile; +import com.example.funnysounds.resolve.Sounds; import com.example.funnysounds.room.MyRoom; import com.example.funnysounds.soundsadapter.LoveAdapter; +import com.example.funnysounds.soundsadapter.RecordAdapter; import java.util.List; +import java.util.Map; public class RecordFragment extends Fragment { private RankViewModel mViewModel; private FragmentRecordBinding vb; + private RecordDialog dialog; + private String[] permission1 = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; + private String[] permission2 = {Manifest.permission.READ_MEDIA_AUDIO}; + private ActivityResultLauncher audioSelectLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { + @Override + public void onActivityResult(ActivityResult o) { + if (o.getResultCode() == Activity.RESULT_OK) { + Intent intent = o.getData(); + if (intent != null) { + Uri audioUri = intent.getData(); + String name = Readfile.getAudioPathFromUri(audioUri); + String decode = Uri.decode(String.valueOf(audioUri)); + + MyData myData = new MyData(); + myData.setCategoryId(1); + myData.setSyStem(false); + myData.setTitle(name); + myData.setMp3Url(String.valueOf(audioUri)); + + Readfile.onSwitchIO(new IOListener() { + @Override + public void onRunIOAction() { + MyRoom.getInstance().getDataDao().insertPrank(myData); + } + }); + // 处理选中的音频URI + Log.d(Sounds.TAG, "--------audioUri=" + audioUri+"---audioPathFromUri="+name +"--------decode-----"+decode); + } + + } + } + }); + + private ActivityResultLauncher permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback>() { + @Override + public void onActivityResult(Map o) { + boolean isOK = true; + for (String key : o.keySet()) { + Boolean aBoolean = o.get(key); + Log.d(Sounds.TAG, "-----key="+key+"---aBoolean=" + aBoolean); + if (aBoolean != null) + isOK = aBoolean; + } + if(isOK){ + selectAudio(); + } + + } + }); + public static RecordFragment newInstance() { return new RecordFragment(); } + @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { vb = FragmentRecordBinding.inflate(inflater, container, false); + Log.d(Sounds.TAG, "-------onCreateView"); return vb.getRoot(); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + Log.d(Sounds.TAG, "-------onActivityCreated"); mViewModel = new ViewModelProvider(this).get(RankViewModel.class); init(); + + vb.addBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (dialog == null) { + dialog = RecordDialog.newInstance(new RecordDialogClickListener() { + @Override + public void onImport() { + checkPermissionAudio(); + } + + @Override + public void onRecord() { + + } + }); + } + dialog.show(requireActivity().getSupportFragmentManager(), ""); + } + }); + } + private void checkPermissionAudio() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + int i = ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_MEDIA_AUDIO); + if (i != PackageManager.PERMISSION_GRANTED) { + permissionLauncher.launch(permission2); + } else { + selectAudio(); + } + } else { + int i = ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE); + if (i != PackageManager.PERMISSION_GRANTED) { + permissionLauncher.launch(permission1); + } else { + selectAudio(); + } + } + + + } + + private void selectAudio() { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + intent.setType("audio/*"); + audioSelectLauncher.launch(Intent.createChooser(intent, "Select Audio")); } private void init() { MySpace mySpace = new MySpace(20, 20, 25); LinearLayoutManager layoutManager = new LinearLayoutManager(requireActivity()); - vb.loveRecycler.setLayoutManager(layoutManager); - vb.loveRecycler.addItemDecoration(mySpace); - LoveAdapter loveAdapter = new LoveAdapter(requireActivity()); + vb.recordRecycler.setLayoutManager(layoutManager); + vb.recordRecycler.addItemDecoration(mySpace); + RecordAdapter recordAdapter = new RecordAdapter(requireActivity()); - vb.loveRecycler.setAdapter(loveAdapter); - MyRoom.getInstance().getDataDao().queryLoveList(true).observe(requireActivity(), new Observer>() { + vb.recordRecycler.setAdapter(recordAdapter); + MyRoom.getInstance().getDataDao().queryMyAudioList(false).observe(requireActivity(), new Observer>() { @Override public void onChanged(List list) { if (list.size() > 0) { - vb.tvNoFavorites.setVisibility(View.GONE); - }else { - vb.tvNoFavorites.setVisibility(View.VISIBLE); + setVisibility(true); + } else { + setVisibility(false); } - loveAdapter.setMyDataList(list); + recordAdapter.setMyDataList(list); } }); } + + private void setVisibility(boolean hasData) { + if (hasData) { + vb.recordRecycler.setVisibility(View.VISIBLE); + vb.textNoFile.setVisibility(View.GONE); + } else { + vb.recordRecycler.setVisibility(View.GONE); + vb.textNoFile.setVisibility(View.VISIBLE); + } + + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/funnysounds/resolve/Readfile.java b/app/src/main/java/com/example/funnysounds/resolve/Readfile.java index 6ff8920..ebb5081 100644 --- a/app/src/main/java/com/example/funnysounds/resolve/Readfile.java +++ b/app/src/main/java/com/example/funnysounds/resolve/Readfile.java @@ -1,5 +1,8 @@ package com.example.funnysounds.resolve; +import android.database.Cursor; +import android.net.Uri; +import android.provider.MediaStore; import android.util.DisplayMetrics; import android.util.Log; @@ -21,6 +24,7 @@ import java.io.StringWriter; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class Readfile { public static String getCovertStr(InputStream stream) { @@ -75,6 +79,7 @@ public class Readfile { prank.setMp3Url(mp3Url); prank.setTitle(title); prank.setPreUrl(preUrl); + prank.setSyStem(true); prank.setCategoryId(id); MyRoom.getInstance().getDataDao().insertPrank(prank); Log.d(Sounds.TAG,"title" + title + "---id=" + id); @@ -100,4 +105,27 @@ public class Readfile { thread.start(); return thread; } + + + public static String getAudioPathFromUri(Uri uri) { + String name = null; + Cursor cursor = Sounds.mAppContext.getContentResolver().query(uri, null, MediaStore.Audio.Media.DATA, null, null); + if (cursor != null) { + while (cursor.moveToNext()) { + for (String columnName : cursor.getColumnNames()) { + int columnIndex = cursor.getColumnIndex(columnName); + if(columnIndex>=0){ + String string = cursor.getString(columnIndex); + if(Objects.equals(columnName, "_display_name")){ + name = string; + } + Log.d(Sounds.TAG,"-----columnName="+columnName+"----string="+string); + } + + } + } + cursor.close(); + } + return name; + } } diff --git a/app/src/main/java/com/example/funnysounds/room/DataDao.java b/app/src/main/java/com/example/funnysounds/room/DataDao.java index 603ad04..f06c518 100644 --- a/app/src/main/java/com/example/funnysounds/room/DataDao.java +++ b/app/src/main/java/com/example/funnysounds/room/DataDao.java @@ -17,17 +17,21 @@ public interface DataDao { @Insert(onConflict = OnConflictStrategy.IGNORE) void insertPrank(MyData data); - @Query("select * from table_data") - List queryAll(); - @Query("select * from table_data where categoryId ==:mId") - LiveData> queryList(long mId); + + @Query("select * from table_data where categoryId ==:mId And isSyStem = :isSystem") + LiveData> queryList(long mId,boolean isSystem); @Query("select * from table_data where addLove ==:love") LiveData> queryLoveList(boolean love); + @Query("select * from table_data where isSyStem ==:isSystem") + LiveData> queryMyAudioList(boolean isSystem); + + @Query("select * from table_data where id=:mid Limit 1") + LiveData queryAudioIsLove(long mid); @Update void updatePrank(MyData myData); } diff --git a/app/src/main/java/com/example/funnysounds/soundsadapter/LoveAdapter.java b/app/src/main/java/com/example/funnysounds/soundsadapter/LoveAdapter.java index a4830be..b3424e1 100644 --- a/app/src/main/java/com/example/funnysounds/soundsadapter/LoveAdapter.java +++ b/app/src/main/java/com/example/funnysounds/soundsadapter/LoveAdapter.java @@ -59,12 +59,17 @@ public class LoveAdapter extends RecyclerView.Adapter { MyData myData = myDataList.get(position); holder.getVb().name.setText(myData.getTitle()); + String preUrl = myData.getPreUrl(); + if(preUrl!= null&&!preUrl.isEmpty()){ + Glide.with(myContext) + .asDrawable() + .load(myData.getPreUrl()) + .placeholder(R.mipmap.logo) + .into(holder.getVb().imSounds); + }else { + holder.getVb().imSounds.setImageResource(R.mipmap.default_covert); + } - Glide.with(myContext) - .asDrawable() - .load(myData.getPreUrl()) - .placeholder(R.mipmap.logo) - .into(holder.getVb().imSounds); holder.getVb().getRoot().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java b/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java new file mode 100644 index 0000000..71aac4c --- /dev/null +++ b/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java @@ -0,0 +1,103 @@ +package com.example.funnysounds.soundsadapter; + +import android.content.Context; +import android.content.Intent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.example.funnysounds.R; +import com.example.funnysounds.action.IOListener; +import com.example.funnysounds.action.MyDataSounderListener; +import com.example.funnysounds.activity.DetailActivity; +import com.example.funnysounds.data.MyData; +import com.example.funnysounds.databinding.ItemLoveBinding; +import com.example.funnysounds.databinding.ItemRecordBinding; +import com.example.funnysounds.resolve.Readfile; +import com.example.funnysounds.resolve.Sounds; +import com.example.funnysounds.room.MyRoom; +import com.example.funnysounds.value.StaticValue; + +import java.util.ArrayList; +import java.util.List; + +public class RecordAdapter extends RecyclerView.Adapter { + private List myDataList = new ArrayList<>(); + private Context myContext; + private MyDataSounderListener myDataSounderListener; + + public RecordAdapter(Context mycontext) { + myContext = mycontext; + } + + public void setMyDataList(List myDataList) { + this.myDataList = myDataList; + notifyDataSetChanged(); + } + + public void setMyDataSounderListener(MyDataSounderListener dataSounderListener) { + this.myDataSounderListener = dataSounderListener; + } + + + @NonNull + @Override + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + + ItemRecordBinding inflate = ItemRecordBinding.inflate(LayoutInflater.from(myContext), parent, false); + + return new VH(inflate); + } + + @Override + public void onBindViewHolder(@NonNull VH holder, int position) { + MyData myData = myDataList.get(position); + holder.getVb().name.setText(myData.getTitle()); + + String preUrl = myData.getPreUrl(); + if(preUrl!= null&&!preUrl.isEmpty()){ + Glide.with(myContext) + .asDrawable() + .load(myData.getPreUrl()) + .placeholder(R.mipmap.logo) + .into(holder.getVb().imSounds); + }else { + holder.getVb().imSounds.setImageResource(R.mipmap.default_covert); + } + + holder.getVb().getRoot().setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(myContext, DetailActivity.class); + intent.putExtra(StaticValue.key_resourse, myData); + myContext.startActivity(intent); + } + }); + + } + + @Override + public int getItemCount() { + return myDataList.size(); + } + + + public static class VH extends RecyclerView.ViewHolder { + + private ItemRecordBinding vb; + + public VH(@NonNull ItemRecordBinding itemView) { + super(itemView.getRoot()); + vb = itemView; + } + + public ItemRecordBinding getVb() { + return vb; + } + } +} diff --git a/app/src/main/res/drawable/add_record_bg_button.xml b/app/src/main/res/drawable/add_record_bg_button.xml new file mode 100644 index 0000000..790805f --- /dev/null +++ b/app/src/main/res/drawable/add_record_bg_button.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_button.xml b/app/src/main/res/drawable/bg_button.xml new file mode 100644 index 0000000..f294265 --- /dev/null +++ b/app/src/main/res/drawable/bg_button.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_bg.xml b/app/src/main/res/drawable/dialog_bg.xml new file mode 100644 index 0000000..983a075 --- /dev/null +++ b/app/src/main/res/drawable/dialog_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/im_add_record.xml b/app/src/main/res/drawable/im_add_record.xml new file mode 100644 index 0000000..32cf096 --- /dev/null +++ b/app/src/main/res/drawable/im_add_record.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/im_export.xml b/app/src/main/res/drawable/im_export.xml new file mode 100644 index 0000000..049b457 --- /dev/null +++ b/app/src/main/res/drawable/im_export.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/app/src/main/res/drawable/im_love_red.xml b/app/src/main/res/drawable/im_love_red.xml index da162d0..b8ae067 100644 --- a/app/src/main/res/drawable/im_love_red.xml +++ b/app/src/main/res/drawable/im_love_red.xml @@ -1,6 +1,6 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml index 0599d72..a7c7f7e 100644 --- a/app/src/main/res/layout/activity_detail.xml +++ b/app/src/main/res/layout/activity_detail.xml @@ -130,4 +130,11 @@ android:layout_alignParentEnd="true" android:src="@drawable/im_volumehigh" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6cf91d1..d8568c6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,8 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".activity.MainActivity" - tools:openDrawer="right"> + tools:context=".activity.MainActivity"> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_record.xml b/app/src/main/res/layout/fragment_record.xml index 0a1845c..a107a24 100644 --- a/app/src/main/res/layout/fragment_record.xml +++ b/app/src/main/res/layout/fragment_record.xml @@ -1,21 +1,55 @@ - + + android:layout_centerInParent="true" + android:layout_centerHorizontal="true" + android:layout_marginStart="36dp" + android:layout_marginTop="20dp" + android:layout_marginEnd="36dp" + android:gravity="center" + android:lineSpacingExtra="4dp" + android:text="@string/no_file" + android:textColor="@color/text_color_gray" + android:textSize="17sp" /> - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_love.xml b/app/src/main/res/layout/item_love.xml index 7fb1bf4..d8baaa8 100644 --- a/app/src/main/res/layout/item_love.xml +++ b/app/src/main/res/layout/item_love.xml @@ -13,9 +13,7 @@ android:layout_marginStart="12dp" android:layout_marginTop="12dp" android:layout_marginBottom="12dp" - android:background="@drawable/bg_love" - android:padding="8dp" - android:src="@mipmap/ic_launcher" /> + android:src="@mipmap/default_covert" /> + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/default_covert.png b/app/src/main/res/mipmap-xxxhdpi/default_covert.png new file mode 100644 index 0000000..72992dd Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/default_covert.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 36e8ef3..58a1581 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -16,4 +16,9 @@ #DF3737 #80A1A2A3 + #A7A7A7 + #00000000 + #8072C8D5 + + #FB310D \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4bb6b84..00fe310 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,4 +8,10 @@ Removed from favorite My Favorites No favorites found + Add sound + No files are present at the moment. Let\'s create one now. + Adding sound + import audio + Record sound + Loading failed, please try again \ No newline at end of file