diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5edf26e..bed30f9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ + +) : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GalleryViewHolder { + val inflater = LayoutInflater.from(parent.context) + val binding = ModelGalleryImageBinding.inflate(inflater, parent, false) + return GalleryViewHolder(binding) + } + + override fun onBindViewHolder(holder: GalleryViewHolder, position: Int) { + Log.d("log0",list.size.toString()) + holder.thumbnail.setImageURI(list[2]) + } + + override fun getItemCount(): Int = list.size +} diff --git a/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryFragment.kt b/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryFragment.kt new file mode 100644 index 0000000..16dee63 --- /dev/null +++ b/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryFragment.kt @@ -0,0 +1,38 @@ +package com.example.androidtechsample.ui.camera + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.androidtechsample.databinding.FragmentGalleryBinding +import dagger.hilt.android.AndroidEntryPoint + +@AndroidEntryPoint +class GalleryFragment : Fragment() { + + private lateinit var binding: FragmentGalleryBinding + private val viewModel: GalleryViewModel by viewModels() + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentGalleryBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val imageList = viewModel.hoge(requireContext()) + val adapter = GalleryAdapter(imageList) + with(binding.galleryRecycler) { + this.adapter = adapter + layoutManager = GridLayoutManager(requireContext(), 3, RecyclerView.VERTICAL, false) + } + } +} diff --git a/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryViewHolder.kt b/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryViewHolder.kt new file mode 100644 index 0000000..ee0ce18 --- /dev/null +++ b/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryViewHolder.kt @@ -0,0 +1,8 @@ +package com.example.androidtechsample.ui.camera + +import androidx.recyclerview.widget.RecyclerView +import com.example.androidtechsample.databinding.ModelGalleryImageBinding + +class GalleryViewHolder(binding: ModelGalleryImageBinding) : RecyclerView.ViewHolder(binding.root) { + val thumbnail = binding.imageThumbnail +} diff --git a/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryViewModel.kt b/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryViewModel.kt new file mode 100644 index 0000000..c2bad69 --- /dev/null +++ b/app/src/main/java/com/example/androidtechsample/ui/camera/GalleryViewModel.kt @@ -0,0 +1,40 @@ +package com.example.androidtechsample.ui.camera + +import android.content.ContentUris +import android.content.Context +import android.net.Uri +import android.provider.MediaStore +import androidx.lifecycle.ViewModel + +class GalleryViewModel : ViewModel() { + + fun hoge(context: Context): List { + val imageList = mutableListOf() + val contentResolver = context.contentResolver + val imageProjection = arrayOf( + MediaStore.Images.Media.DISPLAY_NAME, + MediaStore.Images.Media.TITLE, + MediaStore.Images.Media.DATE_TAKEN, + MediaStore.Images.Media._ID, + ) + val cursor = contentResolver.query( + MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + imageProjection, + null, + null, + null + ) + cursor?.use { + val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID) + val titleColumn = it.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE) + while (it.moveToNext()) { + val id = it.getLong(idColumn) + val title = it.getString(titleColumn) + val imageUri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id) + imageList.add(imageUri) + } + } + imageList.sortByDescending { it } + return imageList + } +} diff --git a/app/src/main/java/com/example/androidtechsample/util/IntExt.kt b/app/src/main/java/com/example/androidtechsample/util/IntExt.kt new file mode 100644 index 0000000..0fb1e77 --- /dev/null +++ b/app/src/main/java/com/example/androidtechsample/util/IntExt.kt @@ -0,0 +1,6 @@ +package com.example.androidtechsample.util + +import android.content.res.Resources + +val Int.dp: Int + get() = (this * Resources.getSystem().displayMetrics.density).toInt() diff --git a/app/src/main/java/com/example/androidtechsample/util/RoundedCornerAdapter.kt b/app/src/main/java/com/example/androidtechsample/util/RoundedCornerAdapter.kt new file mode 100644 index 0000000..90bede2 --- /dev/null +++ b/app/src/main/java/com/example/androidtechsample/util/RoundedCornerAdapter.kt @@ -0,0 +1,29 @@ +package com.example.androidtechsample.util + +import android.graphics.Outline +import android.view.View +import android.view.ViewOutlineProvider +import androidx.databinding.BindingAdapter + +object RoundedCornerAdapter { + @JvmStatic + @BindingAdapter("rect_radius_dp") + fun setRect(view: View, radius: Int) { + view.outlineProvider = RoundedCornerOutlineProvider(radius.dp) + view.clipToOutline = true + } +} + +class RoundedCornerOutlineProvider( + private val radius: Int +) : ViewOutlineProvider() { + + override fun getOutline(view: View, outline: Outline) { + outline.setRoundRect( + 0, 0, + view.width, + view.height, + radius.toFloat() + ) + } +} diff --git a/app/src/main/res/drawable/ic_image_black_24dp.xml b/app/src/main/res/drawable/ic_image_black_24dp.xml new file mode 100644 index 0000000..981c8f0 --- /dev/null +++ b/app/src/main/res/drawable/ic_image_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/fragment_camera.xml b/app/src/main/res/layout/fragment_camera.xml index 5569f55..62e9534 100644 --- a/app/src/main/res/layout/fragment_camera.xml +++ b/app/src/main/res/layout/fragment_camera.xml @@ -66,6 +66,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/view_preview_frame" /> + +