android 广告栏效果,仿知乎列表广告栏:在RecyclerView中实现大图片完整展示的视差效果...

RvParallaxImageView

ede2c8ef-690f-40fb-b705-0315cc7a3ed0.svgd4c4369a-4f9f-44b2-b3c8-7b7f8f969178.svg

An android custom view used on the item of recyclerview to show a full image in the fixed small area. The image view that has parallax performance can be loaded with res drawable/local image/network image. It can be used to show big advertisement image on the item of recyclerview with small area. \

RvParallaxImageView用在recyclerview的item中,它可以随着recyclerview进行视差效果的移动,进而可以在一个小区域的item中展示一个完整的图片。

RvParallaxImageView没有任何侵入性,默认提供了加载resource中的drawable、和加载本地磁盘上的图片两种方式。如果你需要使用Glide或Picasso网络加载框架加载网络图片,参看demo:GlideImageController/ PicassoImageController。当然你也可以自定义Controller来使用其他图片加载框架进行加载。

RvParallaxImageView适用于在recyclerview的item中显示大的广告图。

Preview

4829452e785b794f1ce0d2af5fd622ee.gif

Load res/local/net image(glide,picasso)

0fb25c6047b2e90483ed0d272f46d4f9.gif

Implementation

Via Gradle:

allprojects {

repositories {

maven { url 'https://jitpack.io' }

}

}

dependencies {

implementation 'com.github.giswangsj:RvParallaxImageView:1.0.1'

}

Usage

RvParallaxImageView provide two method to load image by default:

load resource drawable

load local sdcard image

first, add viewholder in you adapter:

class ImageViewViewHolder(view: View) : RecyclerView.ViewHolder(view) {

val parallaxImageView=view.findViewById

}

second,bind recyclerView & set image loader controller in onBindViewHolder

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

when (position) {

5 -> { // 资源图片

(holder as ImageViewViewHolder).parallaxImageView.apply {

bindRecyclerView(recyclerView)

setController(ResImageController(context, R.mipmap.girl))

}

}

10 -> { // 本地图片

val imagePath = pathPrefix + "a0.jpg";

(holder as ImageViewViewHolder).parallaxImageView.apply {

bindRecyclerView(recyclerView)

setController(LocalImageController(imagePath))

}

}

}

}

With Glide

you should add GlideImageController

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

when (position) {

15 -> { // Glide加载

val imageUrl = "http://gitstar.com.cn:8000/static/img/1.jpg"

(holder as ImageViewViewHolder).parallaxImageView.apply {

bindRecyclerView(recyclerView)

setController(GlideImageController(context, imageUrl))

}

}

}

}

With Picasso

you should add PicassoImageController

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

when (position) {

20 -> { // picasso加载

val imageUrl = "http://gitstar.com.cn:8000/static/img/6.jpg"

(holder as ImageViewViewHolder).parallaxImageView.apply {

bindRecyclerView(recyclerView)

setController(PicassoImageController(context, imageUrl))

}

}

}

}

Customization

If you use other image loading library such as fresco and so on, you can refer to GlideImageController / PicassoImageController

1,new class extends BaseImageController

2,add image url param on you constructor

3,override loadImage() then get drawable with you image loading library,then call handleDrawable().

for example:

public class GlideImageController extends BaseImageController {

private Context mContext;

private String imageUrl;

public GlideImageController(Context context, String imageUrl) {

this.mContext = context;

this.imageUrl = imageUrl;

}

@Override

protected void loadImage(int viewWidth) {

...

// 使用Glide获取drawable

Glide.with(mContext).load(imageUrl).into(new SimpleTarget() {

@Override

public void onResourceReady(Drawable resource, Transition super Drawable> transition) {

// 处理drawable

handleDrawable(viewWidth, resource);

}

});

}

}

or get bitmap with you image loading library,then call handleBitmap().

for example:

public class PicassoImageController extends BaseImageController {

...

@Override

protected void loadImage(int viewWidth) {

...

// 使用Picasso获取bitmap

Picasso.with(mContext)

.load(imageUrl)

.into(new Target() {

@Override

public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {

// 处理bitmap

handleBitmap(viewWidth, bitmap);

}

...

});

}

}

License

RvParallaxImageView is released under the Apache License version 2.0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值