首页 文章 精选 留言 我的

精选列表

搜索[广告效率],共10003篇文章
优秀的个人博客,低调大师

android recyclerview+GalleryLayoutManager 实现广告画廊效果

image 相信大家平常在项目中遇到过画廊的效果,网上也有多种方式,类似viewPager、recyclerview等等方式实现,今天推荐一个三方库GalleryLayoutManager,便于快速实现,以解燃眉之急。 image 依赖 gradle依赖 compile 'github.hellocsl:GalleryLayoutManager:1.0.6' 实现 布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> recyclerView设置的adapter private class Adapter extends RecyclerView.Adapter<RecyclerHolder> { private Context context; private Adapter(Context context) { this.context = context; } @Override public RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_view, null); //自定义view的宽度,控制一屏显示个数 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); int width = context.getResources().getDisplayMetrics().widthPixels; params.width = width / 3; view.setLayoutParams(params); return new RecyclerHolder(view); } @Override public void onBindViewHolder(RecyclerHolder holder, int position) { } @Override public int getItemCount() { return 10; } } private class RecyclerHolder extends RecyclerView.ViewHolder { private View view; public RecyclerHolder(View itemView) { super(itemView); view = itemView; } public View getView() { return view; } } 每个item简单的放置一个布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="100dp" android:layout_height="wrap_content" android:src="@mipmap/dota" /> </LinearLayout> 采用第三方的GalleryLayoutManager 与 recyclerView绑定,设置为横向滑动布局 GalleryLayoutManager manager = new GalleryLayoutManager(GalleryLayoutManager.HORIZONTAL); manager.attach(recycler); //设置滑动缩放效果 manager.setItemTransformer(new Transformer()); recycler.setAdapter(new Adapter(this)); 缩放效果处理 //滑动过程中的缩放 public class Transformer implements GalleryLayoutManager.ItemTransformer { @Override public void transformItem(GalleryLayoutManager layoutManager, View item, float fraction) { //以圆心进行缩放 item.setPivotX(item.getWidth() / 2.0f); item.setPivotY(item.getHeight() / 2.0f); float scale = 1 - 0.3f * Math.abs(fraction); item.setScaleX(scale); item.setScaleY(scale); } } 可以自定义RecyclerView里每项view的宽度,控制一屏显示效果,adapter的onCreateViewHolder里操作 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_view, null); //自定义view的宽度,控制一屏显示个数 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); int width = context.getResources().getDisplayMetrics().widthPixels; params.width = width / 3; view.setLayoutParams(params); return new RecyclerHolder(view); } image 滑动监听 滑动监听最终停止的位置 manager.setOnItemSelectedListener(new GalleryLayoutManager.OnItemSelectedListener() { @Override public void onItemSelected(RecyclerView recyclerView, View item, int position) { //滑动到某一项的position } }); 同时支持点击每一项滑动切换,adapter的onBindViewHolder方法里 @Override public void onBindViewHolder(RecyclerHolder holder, final int position) { holder.getView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { recycler.smoothScrollToPosition(position); } }); } 至此,一个简单的画廊效果实现,如果你项目正好需要这个,而我正好有。 当然这里只是简单介绍了画廊效果的实现,这个库还提供支持上下滑动的效果,贴上github地址 https://github.com/BCsl/GalleryLayoutManager, 便于大家进一步研究 同时欢迎关注微信公众号 image.png

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册