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" />
+
+