diff --git a/README.md b/README.md index 15b2a90b5..c4c28f5ad 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![License][license_image]][license_link] [![Logs][logs_image]][logs_link] [![Sketch Version][sketch_version_image]][sketch_version_link] -[![API][api_10_image]][api_10_link] +[![API][min_api_image]][min_api_link] ![QQ Group][qq_group_image] [English version of the README.md](README_EN.md) @@ -54,13 +54,11 @@ Sketch 是 Android 上一款强大且全面的图片加载器,除了图片加 ### 支持的图片类型 -|Image Format|Supported Version| -|:---|:---| -|jpeg|[![api_10_image]][api_10_link]| -|png|[![api_10_image]][api_10_link]| -|gif|[![api_10_image]][api_10_link]| -|bmp|[![api_10_image]][api_10_link]| -|webp|[![api_14_image]][api_14_link]| +* jpeg +* png +* gif +* bmp +* webp ### 开始使用 @@ -204,10 +202,8 @@ sketchImageView.displayImage("http://t.cn/RShdS1f"); [sketch_version_link]: https://bintray.com/panpf/maven/sketch/_latestVersion#files [sketch_gif_version_image]: https://img.shields.io/github/release/panpf/sketch.svg?label=JCenter&colorB=4AC41C [sketch_gif_version_link]: https://bintray.com/panpf/maven/sketch-gif/_latestVersion#files -[api_10_image]: https://img.shields.io/badge/API-10%2B-orange.svg -[api_10_link]: https://android-arsenal.com/api?level=10 -[api_14_image]: https://img.shields.io/badge/API-14%2B-blue.svg -[api_14_link]: https://android-arsenal.com/api?level=14 +[min_api_image]: https://img.shields.io/badge/API-14%2B-orange.svg +[min_api_link]: https://android-arsenal.com/api?level=14 [email_image]: https://img.shields.io/badge/Email-sky@panpf.me-red.svg [sample_app_download_qrcode]: docs/sketch-sample.png diff --git a/README_EN.md b/README_EN.md index ae6225040..dcbaf524d 100644 --- a/README_EN.md +++ b/README_EN.md @@ -5,7 +5,7 @@ [![License][license_image]][license_link] [![Logs][logs_image]][logs_link] [![Version][sketch_version_image]][sketch_version_link] -[![API][api_10_image]][api_10_link] +[![API][min_api_image]][min_api_link] ![QQ Group][qq_group_image] [中文版本 README.md](README.md) @@ -54,13 +54,11 @@ Please refer to the details [URI type and usage guide][uri] ### Supported Image Format -|Image Format|Supported Version| -|:---|:---| -|jpeg|[![api_10_image]][api_10_link]| -|png|[![api_10_image]][api_10_link]| -|gif|[![api_10_image]][api_10_link]| -|bmp|[![api_10_image]][api_10_link]| -|webp|[![api_14_image]][api_14_link]| +* jpeg +* png +* gif +* bmp +* webp ### Getting Started @@ -204,10 +202,8 @@ More: [sketch_version_link]: https://bintray.com/panpf/maven/sketch/_latestVersion#files [sketch_gif_version_image]: https://img.shields.io/github/release/panpf/sketch.svg?label=JCenter&colorB=4AC41C [sketch_gif_version_link]: https://bintray.com/panpf/maven/sketch-gif/_latestVersion#files -[api_10_image]: https://img.shields.io/badge/API-10%2B-orange.svg -[api_10_link]: https://android-arsenal.com/api?level=10 -[api_14_image]: https://img.shields.io/badge/API-14%2B-blue.svg -[api_14_link]: https://android-arsenal.com/api?level=14 +[min_api_image]: https://img.shields.io/badge/API-14%2B-orange.svg +[min_api_link]: https://android-arsenal.com/api?level=14 [email_image]: https://img.shields.io/badge/Email-sky@panpf.me-red.svg [sample_app_download_qrcode]: docs/sketch-sample.png diff --git a/docs/logs/log_2.6.1.md b/docs/logs/log_2.6.1.md index 3e927167e..e52eb745a 100644 --- a/docs/logs/log_2.6.1.md +++ b/docs/logs/log_2.6.1.md @@ -1,2 +1,6 @@ bug: -* Fix StatFs Invalid path exception \ No newline at end of file +* Fix StatFs Invalid path exception +* 修复当一个已经乘坐上了顺风车的请求取消后,依然还会运行的 bug + + +最低支持 API 升至 14 \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 7211152c6..3a3fd1296 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ # org.gradle.parallel=true COMPILE_SDK_VERSION=25 -MIN_SDK_VERSION=10 +MIN_SDK_VERSION=14 TARGET_SDK_VERSION=22 VERSION_CODE=2610 @@ -31,4 +31,5 @@ PAGER_SLIDING_TAB_STRIP_VERSION=1.7.1 FFMPEG_MEDIA_METADATA_RETRIEVER_VERSION=1.0.14 EVENT_BUS_VERSION=3.0.0 RETROFIT_VERSION=2.3.0 -LEAK_CANARY_ANDROID_VERSION=1.5 \ No newline at end of file +LEAK_CANARY_ANDROID_VERSION=1.5 +FLEXBOX=0.3.2 \ No newline at end of file diff --git a/sample/build.gradle b/sample/build.gradle index 9fba998df..d6aee52aa 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -91,6 +91,8 @@ dependencies { implementation "com.squareup.retrofit2:retrofit:${RETROFIT_VERSION}" implementation "com.squareup.retrofit2:converter-gson:${RETROFIT_VERSION}" + + implementation "com.google.android:flexbox:${FLEXBOX}" } repositories { diff --git a/sample/src/main/java/me/panpf/sketch/sample/activity/ImageDetailActivity.kt b/sample/src/main/java/me/panpf/sketch/sample/activity/ImageDetailActivity.kt index eceb5eafb..d977f0c05 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/activity/ImageDetailActivity.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/activity/ImageDetailActivity.kt @@ -24,6 +24,7 @@ import android.view.MotionEvent import android.view.View import me.panpf.sketch.sample.* import me.panpf.sketch.sample.fragment.ImageDetailFragment +import me.panpf.sketch.sample.kotlinextends.isPortraitOrientation import me.panpf.sketch.sample.util.DeviceUtils import me.panpf.sketch.sample.widget.SampleImageView @@ -45,7 +46,12 @@ class ImageDetailActivity : BaseActivity(), PageBackgApplyCallback { // + DeviceUtils.getNavigationBarHeightByUiVisibility(this) 是为了兼容 MIX 2 backgroundImageView.layoutParams?.let { it.width = resources.displayMetrics.widthPixels - it.height = resources.displayMetrics.heightPixels + DeviceUtils.getWindowHeightSupplement(this) + it.height = resources.displayMetrics.heightPixels + if (isPortraitOrientation()) { + it.height += DeviceUtils.getWindowHeightSupplement(this) + } else { + it.width += DeviceUtils.getWindowHeightSupplement(this) + } backgroundImageView.layoutParams = it } diff --git a/sample/src/main/java/me/panpf/sketch/sample/activity/MainActivity.kt b/sample/src/main/java/me/panpf/sketch/sample/activity/MainActivity.kt index a1107f3e1..402bb4dff 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/activity/MainActivity.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/activity/MainActivity.kt @@ -35,6 +35,8 @@ import android.util.TypedValue import android.view.* import android.widget.TextView import android.widget.Toast +import me.panpf.sketch.SLog +import me.panpf.sketch.Sketch import me.panpf.sketch.sample.* import me.panpf.sketch.sample.adapter.itemfactory.CheckMenuItemFactory import me.panpf.sketch.sample.adapter.itemfactory.InfoMenuItemFactory @@ -44,16 +46,15 @@ import me.panpf.sketch.sample.bean.CheckMenu import me.panpf.sketch.sample.bean.InfoMenu import me.panpf.sketch.sample.event.CacheCleanEvent import me.panpf.sketch.sample.fragment.* +import me.panpf.sketch.sample.kotlinextends.isPortraitOrientation import me.panpf.sketch.sample.util.AnimationUtils import me.panpf.sketch.sample.util.AppConfig import me.panpf.sketch.sample.util.DeviceUtils import me.panpf.sketch.sample.util.ImageOrientationCorrectTestFileGenerator import me.panpf.sketch.sample.widget.SampleImageView +import me.panpf.sketch.util.SketchUtils import me.xiaopan.assemblyadapter.AssemblyRecyclerAdapter import me.xiaopan.psts.PagerSlidingTabStrip -import me.panpf.sketch.SLog -import me.panpf.sketch.Sketch -import me.panpf.sketch.util.SketchUtils import org.greenrobot.eventbus.EventBus import java.lang.ref.WeakReference import java.util.* @@ -91,7 +92,12 @@ class MainActivity : BaseActivity(), AppListFragment.GetAppListTagStripListener, // + DeviceUtils.getNavigationBarHeightByUiVisibility(this) 是为了兼容 MIX 2 backgroundImageView.layoutParams?.let { it.width = resources.displayMetrics.widthPixels - it.height = resources.displayMetrics.heightPixels + DeviceUtils.getWindowHeightSupplement(this) + it.height = resources.displayMetrics.heightPixels + if (isPortraitOrientation()) { + it.height += DeviceUtils.getWindowHeightSupplement(this) + } else { + it.width += DeviceUtils.getWindowHeightSupplement(this) + } backgroundImageView.layoutParams = it } @@ -100,7 +106,12 @@ class MainActivity : BaseActivity(), AppListFragment.GetAppListTagStripListener, // + DeviceUtils.getNavigationBarHeightByUiVisibility(this) 是为了兼容 MIX 2 menuBackgroundImageView.layoutParams?.let { it.width = resources.displayMetrics.widthPixels - it.height = resources.displayMetrics.heightPixels + DeviceUtils.getWindowHeightSupplement(this) + it.height = resources.displayMetrics.heightPixels + if (isPortraitOrientation()) { + it.height += DeviceUtils.getWindowHeightSupplement(this) + } else { + it.width += DeviceUtils.getWindowHeightSupplement(this) + } menuBackgroundImageView.layoutParams = it } @@ -153,7 +164,7 @@ class MainActivity : BaseActivity(), AppListFragment.GetAppListTagStripListener, private fun initData() { val adapter = AssemblyRecyclerAdapter(makeMenuList()) adapter.addItemFactory(MenuTitleItemFactory()) - adapter.addItemFactory(PageMenuItemFactory(object : PageMenuItemFactory.OnClickItemListener{ + adapter.addItemFactory(PageMenuItemFactory(object : PageMenuItemFactory.OnClickItemListener { override fun onClickItem(page: Page) { switchPage(page) } diff --git a/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/StaggeredImageItemFactory.kt b/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/StaggeredImageItemFactory.kt index e9af140e3..cb6f4ff7e 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/StaggeredImageItemFactory.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/StaggeredImageItemFactory.kt @@ -3,17 +3,17 @@ package me.panpf.sketch.sample.adapter.itemfactory import android.content.Context import android.view.View import android.view.ViewGroup -import me.xiaopan.assemblyadapter.AssemblyRecyclerItem -import me.xiaopan.assemblyadapter.AssemblyRecyclerItemFactory -import me.panpf.sketch.util.SketchUtils +import com.google.android.flexbox.FlexboxLayoutManager import me.panpf.sketch.sample.ImageOptions import me.panpf.sketch.sample.R import me.panpf.sketch.sample.bean.BaiduImage import me.panpf.sketch.sample.bindView +import me.panpf.sketch.sample.kotlinextends.isPortraitOrientation import me.panpf.sketch.sample.widget.SampleImageView +import me.xiaopan.assemblyadapter.AssemblyRecyclerItem +import me.xiaopan.assemblyadapter.AssemblyRecyclerItemFactory class StaggeredImageItemFactory(private val onItemClickListener: OnItemClickListener?) : AssemblyRecyclerItemFactory() { - private var itemWidth: Int = 0 override fun isTarget(o: Any): Boolean { return o is BaiduImage @@ -37,17 +37,18 @@ class StaggeredImageItemFactory(private val onItemClickListener: OnItemClickList imageView.setOptions(ImageOptions.RECT) imageView.page = SampleImageView.Page.SEARCH_LIST - } - override fun onSetData(i: Int, image: BaiduImage) { - if (itemWidth == 0) { - val screenWidth = imageView.context.resources.displayMetrics.widthPixels - itemWidth = (screenWidth - SketchUtils.dp2px(imageView.context, 4) * 3) / 2 + imageView.layoutParams?.let { + if (it is FlexboxLayoutManager.LayoutParams) { + it.flexGrow = 1.0f + } } + } + override fun onSetData(i: Int, image: BaiduImage) { imageView.layoutParams?.let { - it.width = itemWidth - it.height = (itemWidth / (image.width / image.height.toFloat())).toInt() + it.height = imageView.context.resources.displayMetrics.heightPixels / (if (imageView.context.isPortraitOrientation()) 5 else 2) + it.width = (it.height / (image.height / image.width.toFloat())).toInt() imageView.layoutParams = it } diff --git a/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/UnsplashPhotosItemFactory.kt b/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/UnsplashPhotosItemFactory.kt index cba690dc5..1a61d4d7f 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/UnsplashPhotosItemFactory.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/adapter/itemfactory/UnsplashPhotosItemFactory.kt @@ -1,5 +1,6 @@ package me.panpf.sketch.sample.adapter.itemfactory +import android.app.Activity import android.content.Context import android.view.View import android.view.ViewGroup @@ -8,11 +9,15 @@ import me.panpf.sketch.sample.ImageOptions import me.panpf.sketch.sample.R import me.panpf.sketch.sample.bean.UnsplashImage import me.panpf.sketch.sample.bindView +import me.panpf.sketch.sample.kotlinextends.isPortraitOrientation +import me.panpf.sketch.sample.util.DeviceUtils import me.panpf.sketch.sample.widget.SampleImageView import me.xiaopan.assemblyadapter.AssemblyRecyclerItem import me.xiaopan.assemblyadapter.AssemblyRecyclerItemFactory -class UnsplashPhotosItemFactory(private val unsplashPhotosItemEventListener: UnsplashPhotosItemEventListener?) : AssemblyRecyclerItemFactory() { +class UnsplashPhotosItemFactory(private val activity: Activity, + private val unsplashPhotosItemEventListener: UnsplashPhotosItemEventListener?) + : AssemblyRecyclerItemFactory() { override fun isTarget(o: Any): Boolean { return o is UnsplashImage @@ -57,13 +62,19 @@ class UnsplashPhotosItemFactory(private val unsplashPhotosItemEventListener: Uns imageView.layoutParams?.let { it.width = itemWidth - it.height = (itemWidth / (image.width / image.height.toFloat())).toInt() + if (!imageView.context.isPortraitOrientation()) { + it.width += DeviceUtils.getWindowHeightSupplement(activity) + } + it.height = (it.width / (image.width / image.height.toFloat())).toInt() imageView.layoutParams = it } rootViewGroup.layoutParams?.let { it.width = itemWidth - it.height = (itemWidth / (image.width / image.height.toFloat())).toInt() + if (!imageView.context.isPortraitOrientation()) { + it.width += DeviceUtils.getWindowHeightSupplement(activity) + } + it.height = (it.width / (image.width / image.height.toFloat())).toInt() rootViewGroup.layoutParams = it } diff --git a/sample/src/main/java/me/panpf/sketch/sample/fragment/ImageFragment.kt b/sample/src/main/java/me/panpf/sketch/sample/fragment/ImageFragment.kt index 32cc10a39..39f9d925c 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/fragment/ImageFragment.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/fragment/ImageFragment.kt @@ -15,24 +15,18 @@ import android.widget.ImageView import android.widget.Toast import me.panpf.sketch.Sketch import me.panpf.sketch.datasource.DataSource -import me.panpf.sketch.display.FadeInImageDisplayer import me.panpf.sketch.decode.ImageAttrs +import me.panpf.sketch.display.FadeInImageDisplayer import me.panpf.sketch.drawable.SketchDrawable import me.panpf.sketch.drawable.SketchGifDrawable import me.panpf.sketch.drawable.SketchRefBitmap import me.panpf.sketch.request.* -import me.panpf.sketch.state.MemoryCacheStateImage -import me.panpf.sketch.uri.FileUriModel -import me.panpf.sketch.uri.GetDataSourceException -import me.panpf.sketch.uri.UriModel -import me.panpf.sketch.util.SketchUtils -import me.panpf.sketch.zoom.ImageZoomer -import me.panpf.sketch.zoom.Size import me.panpf.sketch.sample.BaseFragment import me.panpf.sketch.sample.BindContentView import me.panpf.sketch.sample.R import me.panpf.sketch.sample.activity.PageBackgApplyCallback import me.panpf.sketch.sample.bean.Image +import me.panpf.sketch.sample.bindView import me.panpf.sketch.sample.event.AppConfigChangedEvent import me.panpf.sketch.sample.util.AppConfig import me.panpf.sketch.sample.util.ApplyWallpaperAsyncTask @@ -40,7 +34,13 @@ import me.panpf.sketch.sample.util.SaveImageAsyncTask import me.panpf.sketch.sample.widget.HintView import me.panpf.sketch.sample.widget.MappingView import me.panpf.sketch.sample.widget.SampleImageView -import me.panpf.sketch.sample.bindView +import me.panpf.sketch.state.MemoryCacheStateImage +import me.panpf.sketch.uri.FileUriModel +import me.panpf.sketch.uri.GetDataSourceException +import me.panpf.sketch.uri.UriModel +import me.panpf.sketch.util.SketchUtils +import me.panpf.sketch.zoom.ImageZoomer +import me.panpf.sketch.zoom.Size import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import java.io.File @@ -154,10 +154,17 @@ class ImageFragment : BaseFragment() { inner class ImageDisplayListener : DisplayListener { override fun onStarted() { + if (view == null) { + return + } hintView.loading(null) } override fun onCompleted(drawable: Drawable, imageFrom: ImageFrom, imageAttrs: ImageAttrs) { + if (view == null) { + return + } + hintView.hidden() setWindowBackgroundHelper.onDisplayCompleted() @@ -165,10 +172,18 @@ class ImageFragment : BaseFragment() { } override fun onError(cause: ErrorCause) { + if (view == null) { + return + } + hintView.hint(R.drawable.ic_error, "Image display failed", "Again", View.OnClickListener { imageView.displayImage(finalShowImageUrl) }) } override fun onCanceled(cause: CancelCause) { + if (view == null) { + return + } + @Suppress("NON_EXHAUSTIVE_WHEN") when (cause) { CancelCause.PAUSE_DOWNLOAD -> hintView.hint(R.drawable.ic_error, "Pause to download new image for saving traffic", "I do not care", View.OnClickListener { @@ -190,6 +205,10 @@ class ImageFragment : BaseFragment() { inner class ImageDownloadProgressListener : DownloadProgressListener { override fun onUpdateDownloadProgress(totalLength: Int, completedLength: Int) { + if (view == null) { + return + } + hintView.setProgress(totalLength, completedLength) } } diff --git a/sample/src/main/java/me/panpf/sketch/sample/fragment/SearchFragment.kt b/sample/src/main/java/me/panpf/sketch/sample/fragment/SearchFragment.kt index 183a506eb..b236e4352 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/fragment/SearchFragment.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/fragment/SearchFragment.kt @@ -8,15 +8,13 @@ import android.support.v4.widget.SwipeRefreshLayout import android.support.v7.app.AppCompatActivity import android.support.v7.widget.RecyclerView import android.support.v7.widget.SearchView -import android.support.v7.widget.StaggeredGridLayoutManager import android.view.Menu import android.view.MenuInflater import android.view.View import android.view.inputmethod.InputMethodManager import android.widget.Toast -import me.xiaopan.assemblyadapter.AssemblyRecyclerAdapter -import me.xiaopan.assemblyadapter.OnRecyclerLoadMoreListener -import me.panpf.sketch.util.SketchUtils +import com.google.android.flexbox.FlexboxItemDecoration +import com.google.android.flexbox.FlexboxLayoutManager import me.panpf.sketch.sample.BaseFragment import me.panpf.sketch.sample.BindContentView import me.panpf.sketch.sample.R @@ -27,10 +25,12 @@ import me.panpf.sketch.sample.adapter.itemfactory.StaggeredImageItemFactory import me.panpf.sketch.sample.bean.BaiduImage import me.panpf.sketch.sample.bean.BaiduImageSearchResult import me.panpf.sketch.sample.bean.Image +import me.panpf.sketch.sample.bindView import me.panpf.sketch.sample.net.NetServices import me.panpf.sketch.sample.util.ScrollingPauseLoadManager import me.panpf.sketch.sample.widget.HintView -import me.panpf.sketch.sample.bindView +import me.xiaopan.assemblyadapter.AssemblyRecyclerAdapter +import me.xiaopan.assemblyadapter.OnRecyclerLoadMoreListener import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -132,10 +132,9 @@ class SearchFragment : BaseFragment(), StaggeredImageItemFactory.OnItemClickList refreshLayout.setOnRefreshListener(this) recyclerView.addOnScrollListener(ScrollingPauseLoadManager(view!!.context)) - recyclerView.layoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL) - val padding = SketchUtils.dp2px(activity, 2) - recyclerView.setPadding(padding, padding, padding, padding) - recyclerView.clipToPadding = false + + recyclerView.layoutManager = FlexboxLayoutManager(context) + recyclerView.addItemDecoration(FlexboxItemDecoration(context)) if (adapter == null) { refreshLayout.post { onRefresh() } diff --git a/sample/src/main/java/me/panpf/sketch/sample/fragment/UnsplashPhotosFragment.kt b/sample/src/main/java/me/panpf/sketch/sample/fragment/UnsplashPhotosFragment.kt index 7cd0c86f4..970e840f6 100644 --- a/sample/src/main/java/me/panpf/sketch/sample/fragment/UnsplashPhotosFragment.kt +++ b/sample/src/main/java/me/panpf/sketch/sample/fragment/UnsplashPhotosFragment.kt @@ -9,8 +9,6 @@ import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import android.view.View import android.widget.Toast -import me.xiaopan.assemblyadapter.AssemblyRecyclerAdapter -import me.xiaopan.assemblyadapter.OnRecyclerLoadMoreListener import me.panpf.sketch.sample.BaseFragment import me.panpf.sketch.sample.BindContentView import me.panpf.sketch.sample.R @@ -20,9 +18,11 @@ import me.panpf.sketch.sample.adapter.itemfactory.LoadMoreItemFactory import me.panpf.sketch.sample.adapter.itemfactory.UnsplashPhotosItemFactory import me.panpf.sketch.sample.bean.Image import me.panpf.sketch.sample.bean.UnsplashImage +import me.panpf.sketch.sample.bindView import me.panpf.sketch.sample.net.NetServices import me.panpf.sketch.sample.widget.HintView -import me.panpf.sketch.sample.bindView +import me.xiaopan.assemblyadapter.AssemblyRecyclerAdapter +import me.xiaopan.assemblyadapter.OnRecyclerLoadMoreListener import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -171,7 +171,7 @@ class UnsplashPhotosFragment : BaseFragment(), UnsplashPhotosItemFactory.Unsplas } val adapter = AssemblyRecyclerAdapter(images) - adapter.addItemFactory(UnsplashPhotosItemFactory(fragment)) + adapter.addItemFactory(UnsplashPhotosItemFactory(fragment.activity, fragment)) adapter.setLoadMoreItem(LoadMoreItemFactory(fragment)) fragment.recyclerView.adapter = adapter diff --git a/sample/src/main/java/me/panpf/sketch/sample/kotlinextends/Views.kt b/sample/src/main/java/me/panpf/sketch/sample/kotlinextends/Views.kt new file mode 100644 index 000000000..f90694e68 --- /dev/null +++ b/sample/src/main/java/me/panpf/sketch/sample/kotlinextends/Views.kt @@ -0,0 +1,6 @@ +package me.panpf.sketch.sample.kotlinextends + +import android.content.Context +import android.content.res.Configuration + +fun Context.isPortraitOrientation() = resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT \ No newline at end of file diff --git a/sample/src/main/res/layout/list_item_image_staggered.xml b/sample/src/main/res/layout/list_item_image_staggered.xml index be4f5a3ed..a8a8beae5 100644 --- a/sample/src/main/res/layout/list_item_image_staggered.xml +++ b/sample/src/main/res/layout/list_item_image_staggered.xml @@ -1,14 +1,8 @@ - - - - \ No newline at end of file + android:scaleType="centerCrop" /> \ No newline at end of file diff --git a/sketch/src/main/java/me/panpf/sketch/request/DisplayHelper.java b/sketch/src/main/java/me/panpf/sketch/request/DisplayHelper.java index abdea624d..fb1732d2e 100644 --- a/sketch/src/main/java/me/panpf/sketch/request/DisplayHelper.java +++ b/sketch/src/main/java/me/panpf/sketch/request/DisplayHelper.java @@ -625,12 +625,12 @@ protected void preProcessOptions() { } } - // 如果没有设置 ScaleType 的话就从 ImageView 身上取 + // 检查 ShapeSize 的 ScaleType if (shapeSize != null && shapeSize.getScaleType() == null && sketchView != null) { shapeSize.setScaleType(viewInfo.getScaleType()); } - // 检查 Resize 的宽高都必须大于 0 + // 检查 ShapeSize 的宽高都必须大于 0 if (shapeSize != null && (shapeSize.getWidth() == 0 || shapeSize.getHeight() == 0)) { throw new IllegalArgumentException("ShapeSize width and height must be > 0"); } @@ -648,7 +648,7 @@ protected void preProcessOptions() { } } - // 如果没有设置 ScaleType 的话就从 ImageView 身上取 + // 检查 Resize 的 ScaleType if (resize != null && resize.getScaleType() == null && sketchView != null) { resize.setScaleType(viewInfo.getScaleType()); }