Android 最新左右可见上下页的banner实现demo

运行效果,可见上下页样式

 

demo链接:https://download.csdn.net/download/meixi_android/11045703

 

 实现方法

首先添加必要依赖

implementation ('com.android.support:recyclerview-v7:27.0.2'){force = true
}
implementation ('com.android.support:cardview-v7:27.0.2'){force = true
}
implementation 'com.github.bumptech.glide:glide:3.6.1'

 

3、activity代码

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);BannerLayout recyclerBanner =  findViewById(R.id.recycler);List<String> list = new ArrayList<>();list.add("http://ww1.sinaimg.cn/large/b7cd25cagw1f55lgujsvuj20qo0z1n2o.jpg");list.add("http://b-ssl.duitang.com/uploads/item/201802/13/20180213092931_vlmdh.jpg");list.add("http://p2.qhimgs4.com/t010eb5908d6f28cf14.jpg");list.add("http://b-ssl.duitang.com/uploads/item/201802/13/20180213124050_gkhxt.jpg");list.add("http://dingyue.nosdn.127.net/3tqSsnfhfRRea6kZVlS0reiWcPFx9SR1jJ=cHkyEJLREO1530066845542compressflag.jpg");list.add("http://b-ssl.duitang.com/uploads/item/201802/13/20180213123947_cdkha.jpg");WebBannerAdapter webBannerAdapter=new WebBannerAdapter(this,list);webBannerAdapter.setOnBannerItemClickListener(new BannerLayout.OnBannerItemClickListener() {@Overridepublic void onItemClick(int position) {Toast.makeText(MainActivity.this, "点击了第  " + position+"  项", Toast.LENGTH_SHORT).show();}});recyclerBanner.setAdapter(webBannerAdapter);}
}

 

adapter类

public class WebBannerAdapter extends RecyclerView.Adapter<WebBannerAdapter.MzViewHolder> {private Context context;private List<String> urlList;private BannerLayout.OnBannerItemClickListener onBannerItemClickListener;public WebBannerAdapter(Context context, List<String> urlList) {this.context = context;this.urlList = urlList;}public void setOnBannerItemClickListener(BannerLayout.OnBannerItemClickListener onBannerItemClickListener) {this.onBannerItemClickListener = onBannerItemClickListener;}@Overridepublic WebBannerAdapter.MzViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {return new MzViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false));}@Overridepublic void onBindViewHolder(WebBannerAdapter.MzViewHolder holder, final int position) {if (urlList == null || urlList.isEmpty())return;final int P = position % urlList.size();String url = urlList.get(P);ImageView img = (ImageView) holder.imageView;Glide.with(context).load(url).into(img);holder.textView.setText(urlList.get(position));img.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (onBannerItemClickListener != null) {onBannerItemClickListener.onItemClick(P);}}});}@Overridepublic int getItemCount() {if (urlList != null) {return urlList.size();}return 0;}class MzViewHolder extends RecyclerView.ViewHolder {ImageView imageView;TextView textView;MzViewHolder(View itemView) {super(itemView);imageView = (ImageView) itemView.findViewById(R.id.image);textView = (TextView)itemView.findViewById(R.id.itemte);}}}

item_image.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="250dp"android:layout_height="100dp"app:cardCornerRadius="5dp"><ImageViewandroid:id="@+id/image"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitXY"/><TextViewandroid:id="@+id/itemte"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="aaa"/>
</android.support.v7.widget.CardView>

 

方法二:

圆角代码

Glide.with(context).load(entry.getBannerPath()).apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.color.white).transforms(new CenterCrop(), new RoundedCorners((int) 14))).into((ImageView) imageView);

 实现效果

 

 

 

 demo云盘链接:https://pan.baidu.com/s/1dJuZIhy5Lub_VE48e5JFuw

 在线回复密码bug交流:扣1085220040

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WIN10下微信崩溃(已经是最新版)的解决方法

问题症状&#xff1a;WIN10下运行最新版微信&#xff08;CrashVersion1644560715&#xff09; ---------------------------微信运行错误---------------------------你的微信崩溃次数较多&#xff0c;建议使用最新版本&#xff0c;点击"确定"到官网(http://pc.weixi…

o.s.b.d.LoggingFailureAnalysisReporter

1、错误信息 *************************** APPLICATION FAILED TO START ***************************Description:Field userMapper in club.sscai.userservice.user.service.UserService required a bean of type club.sscai.userservice.user.mapper.UserMapper that could …

Android 常见内存泄漏及解决方法

Android中的内存泄漏&#xff1a; 先说一下为什么会出现内存泄漏&#xff1a; Android程序开发中&#xff0c;如果一个对象已经不需要被使用了&#xff0c;本该被回收时&#xff0c;而这时另一个对象还在持有对该对象的引用&#xff0c;这样就会导致无法被GC回收&#xff0c;…

二、内聚

【内聚】 1.内聚的定义 一个模块内部元素彼此结合的紧密程度。其中关键字&#xff1a;模块、元素、结合 模块&#xff1a;大到子系统&#xff0c;小到一个函数&#xff0c;都可以看成一个模块 元素&#xff1a; 模块&#xff1a;包、命名空间等 包&#xff1a;类、接口、全局数…

前端学习(2733):重读vue电商网站43之使用 lodash 中 cloneDeep(obj) 来实现深拷贝

lodash 官方文档传送门 Using npm Js $ npm i -g npm $ npm i --save lodash_.cloneDeep(value) 使用 项目中使用 cloneDeep 需求&#xff1a;由于 addForm 中商品所属的分类数组 goods_cat在商品分类模块需要使用 v-model 进行双向绑定数组形式&#xff0c;而我们调用添加商品…

Android Runnable与Handler和Thread的使用,Handler构造方法弱引用实现

PS&#xff1a;在使用Runnable时&#xff0c;可能会内存泄露。Runnable是一个匿名内部类&#xff0c;因此它对当前Activity有一个隐式引用。如果Activity在销毁之前&#xff0c;任务还未完成&#xff0c; 那么将导致Activity的内存资源无法回收&#xff0c;造成内存泄漏。那么该…

Spring Data JPA框架

1、前言 扔一个 spring data jpa 的代码&#xff0c;可运行&#xff0c;后续补充博客内容。 环境&#xff1a;eclipse tomcat8 2、部分截图 3、源码 https://gitee.com/niceyoo/jpa-demo 4、sql 既然都是 spring data jpa &#xff0c;还要啥数据库呀&#xff0c;自己创建一个…

jdk1.7 String switch的实现

对于int的switch&#xff0c;jvm是用tableswitch和lookupswitch来实现的&#xff0c;jdk1.7 switch增加了对string的支持&#xff0c;那么底层是如何实现的呢&#xff1f;是否增加了新的指令或是否给某些指令增加了新的含义&#xff1f; 看这样一个程序&#xff1a; Java代码 …

Android 多线程实现异步执行demo,线程池使用demo

方法1&#xff1a; 1、常见Runnable对象设置同步代码run运行体 class AutoSaleTicket implements Runnable {private int ticket 20;public void run() {while (true) {// 循环是指线程不停的去卖票// 当操作的是共享数据时,用同步代码块进行包围起来,这样在执行时,只能有一…

Mvc5 控制器,视图简单说明

本系列会比Mvc4更详细。Mvc4记录或没记录的东西这里也会提到。 控制器 自动装配&#xff1a; 一般自动装配对于添加的时候比较好用 视图&#xff1a; 控制器返回的视图&#xff0c;其实就是一些静态的HTML。动态性不好&#xff0c;从控制器传递少量数据&#xff0c;最简单使用…

前端学习(2734):重读vue电商网站44之使用 echarts

echarts 官方文档传送门 根据官方文档示例&#xff0c;我们先展示测试数据。 Javascript <template><div><!-- 面包屑导航区域 --><el-breadcrumb separator"/"><el-breadcrumb-item :to"{ path: /home }">首页</el-bre…

No fallback instance of type class found for feign client user-service(转)

No fallback instance of type class found for feign client user-service&#xff08;转&#xff09; 1、错误日志 在 feign 开启熔断&#xff0c;配置 fallback 类&#xff0c;实现当前接口的实现类时&#xff0c;报错信息如下&#xff1a; Error starting ApplicationCont…

Redis在windows下安装过程

https://www.cnblogs.com/M-LittleBird/p/5902850.html 一、下载windows版本的Redis 去官网找了很久&#xff0c;发现原来在官网上可以下载的windows版本的&#xff0c;现在官网以及没有下载地址&#xff0c;只能在github上下载&#xff0c;官网只提供linux版本的下载 官网下载…

前端学习(2735):重读vue电商网站45之项目优化上线

优化Vue项目&#xff0c;部署Vue项目 项目优化 添加进度条 nprogress 进度条官方文档传送门 打开 vue-ui 面板&#xff0c;选择依赖&#xff0c;输入 nprogress 进行安装相关依赖。 npm Javascript npm install --save nprogress在 main.js 入口文件中&#xff0c;进行相关…

Push rejected: Push to origin/master was rejected

Push rejected: Push to origin/master was rejected 1、错误日志 23:04 Maven projects need to be imported: Import Changes Enable Auto-Import23:05 4 files committed: 初始化项目23:06 Push rejected: Push to origin/master was rejected23:07 2 files …

基本卷-动态卷性能测评(未完待续)

320G 同一磁盘复制1G 1个文件 //基本磁盘 27秒 FastCopy 1.62 128M缓存 37秒 Windows自带复制 //动态卷 15秒 Windows自带复制 27秒 FastCopy 1.62 128M缓存 28秒 FastCopy 1.62 32M缓存 320G 同一磁盘复制1G 4470个文件 //动态卷 54秒 Windows自带复制 考虑是否是磁盘的原因 3…

前端学习(2736):重读vue电商网站46之执行build 时报错

Error: No module factory available for dependency type: CssDependency 解决办法&#xff1a; 参考&#xff1a;解决webpack打包报错 No module factory available for dependency type: CssDependency 在执行 build 命令期间移除所有的 console babel-plugin-transform…

Android 获取光线强弱,开启闪光灯,关闭闪光灯

1、获取光线强度 &#xff08;1&#xff09;实现传感器接口 implements SensorEventListener 实例化 private SensorManager mSensroMgr;//传感器管理类 mSensroMgr (SensorManager) getSystemService(Context.SENSOR_SERVICE); &#xff08;2&#xff09;监听传感器 Ove…