From 8844116ebfa5dcab29ffacc66ffab4d20447a104 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 4 Jul 2017 17:04:05 -0700 Subject: Set up base --- .../kau/imagepicker/ImagePickerActivityBase.kt | 72 +++++++++++++++++----- .../main/res/layout/kau_activity_image_picker.xml | 29 ++++++--- .../src/main/res/layout/kau_iitem_image.xml | 16 +++-- imagepicker/src/main/res/values/styles.xml | 8 +++ 4 files changed, 93 insertions(+), 32 deletions(-) create mode 100644 imagepicker/src/main/res/values/styles.xml (limited to 'imagepicker/src') diff --git a/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImagePickerActivityBase.kt b/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImagePickerActivityBase.kt index 216939f..d5562aa 100644 --- a/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImagePickerActivityBase.kt +++ b/imagepicker/src/main/kotlin/ca/allanwang/kau/imagepicker/ImagePickerActivityBase.kt @@ -1,39 +1,77 @@ package ca.allanwang.kau.imagepicker -import android.graphics.drawable.Drawable +import android.database.Cursor import android.os.Bundle +import android.provider.MediaStore +import android.support.v4.app.LoaderManager +import android.support.v4.content.CursorLoader +import android.support.v4.content.Loader import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.GridLayoutManager import android.support.v7.widget.RecyclerView import android.support.v7.widget.Toolbar import android.transition.TransitionInflater -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import ca.allanwang.kau.R -import ca.allanwang.kau.adapters.FastItemThemedAdapter -import ca.allanwang.kau.adapters.ThemableIItemColors -import ca.allanwang.kau.adapters.ThemableIItemColorsDelegate -import ca.allanwang.kau.iitems.LibraryIItem +import ca.allanwang.kau.logging.KL import ca.allanwang.kau.utils.bindView -import ca.allanwang.kau.utils.string import ca.allanwang.kau.widgets.ElasticDragDismissFrameLayout -import com.mikepenz.aboutlibraries.Libs -import com.mikepenz.aboutlibraries.entity.Library import com.mikepenz.fastadapter.commons.adapters.FastItemAdapter -import java.security.InvalidParameterException + /** * Created by Allan Wang on 2017-07-04. * */ -abstract class ImagePickerActivityBase : AppCompatActivity() { +abstract class ImagePickerActivityBase : AppCompatActivity(), LoaderManager.LoaderCallbacks { - val toolbar:Toolbar by bindView(R.id.kau_toolbar) - val recycler:RecyclerView by bindView(R.id.kau_recycler) - val adapter = FastItemAdapter() + val toolbar: Toolbar by bindView(R.id.kau_toolbar) + val draggableFrame: ElasticDragDismissFrameLayout by bindView(R.id.kau_draggable) + val recycler: RecyclerView by bindView(R.id.kau_recycler) + val imageAdapter = FastItemAdapter() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.kau_activity_image_picker) + with(recycler) { + layoutManager = GridLayoutManager(this@ImagePickerActivityBase, 3) + adapter = this@ImagePickerActivityBase.imageAdapter + } + imageAdapter.add(arrayOf("a", "b", "c").map { ImageItem(it) }) + draggableFrame.addListener(object : ElasticDragDismissFrameLayout.SystemChromeFader(this) { + override fun onDragDismissed() { + if (draggableFrame.translationY < 0) { + window.returnTransition = TransitionInflater.from(this@ImagePickerActivityBase) + .inflateTransition(R.transition.kau_about_return_upwards) + } + finishAfterTransition() + } + }) + } + + override fun onCreateLoader(id: Int, args: Bundle?): Loader { + val columns = arrayOf( + MediaStore.Images.Media._ID, + MediaStore.Images.Media.DATA, + MediaStore.Images.Media.DISPLAY_NAME, + MediaStore.Images.Media.DATE_MODIFIED) + + return CursorLoader(this, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, null) + } + + override fun onLoadFinished(loader: Loader, data: Cursor) { + val dataIndex = data.getColumnIndex(MediaStore.Images.Media.DATA) + val alstPhotos = mutableListOf() + + data.moveToLast() + while (!data.isBeforeFirst) { + val photoPath = data.getString(dataIndex) + KL.d(photoPath) + alstPhotos.add(photoPath) + data.moveToPrevious() + } + imageAdapter.add(alstPhotos.map { ImageItem(it) }) + } + + override fun onLoaderReset(loader: Loader) { + imageAdapter.clear() } } \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/kau_activity_image_picker.xml b/imagepicker/src/main/res/layout/kau_activity_image_picker.xml index d3739dd..3c12a84 100644 --- a/imagepicker/src/main/res/layout/kau_activity_image_picker.xml +++ b/imagepicker/src/main/res/layout/kau_activity_image_picker.xml @@ -1,18 +1,29 @@ + android:id="@+id/kau_draggable" + app:dragDismissDistance="@dimen/kau_drag_dismiss_distance" + app:dragDismissScale="0.95"> - - - + android:layout_marginTop="@dimen/kau_drag_dismiss_distance" + android:orientation="vertical"> + + + + + + \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/kau_iitem_image.xml b/imagepicker/src/main/res/layout/kau_iitem_image.xml index 824ae7b..22cc998 100644 --- a/imagepicker/src/main/res/layout/kau_iitem_image.xml +++ b/imagepicker/src/main/res/layout/kau_iitem_image.xml @@ -1,11 +1,15 @@ - + + android:layout_width="0dp" + android:layout_height="0dp" + android:scaleType="centerCrop" + android:background="#f0f" + app:layout_constraintDimensionRatio="1:1" /> - \ No newline at end of file + \ No newline at end of file diff --git a/imagepicker/src/main/res/values/styles.xml b/imagepicker/src/main/res/values/styles.xml new file mode 100644 index 0000000..1dc5149 --- /dev/null +++ b/imagepicker/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + -- cgit v1.2.3