android 九宫格封装,Android 九宫格布局
演示
image
需求
满足0-9个图的适配
图数量
演示
1
image
2
image
3
image
4
image
5
image
6
image
7
image
8
image
9
image
使用
手动设置
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ngl_gridSpace="10dp"
app:ngl_oneChildHeight="300dp">
style="@style/Img"
android:src="@drawable/ic_fox" />
style="@style/Img"
android:src="@drawable/ic_deef" />
在RecyclerView中使用通过设置 NineGridAdapter
NineGridAdapter源码:
public abstract class NineGridAdapter {
protected abstract View getItemView(ViewGroup parent, int position);
protected abstract void bindView(View view, int position);
protected abstract int getItemCount();
protected void onItemClick(View view, int position) {
}
}
eg:通过继承NineGridAdapter 详见demo
private static class NineImageAdapter extends NineGridAdapter {
private List mUrls;
public NineImageAdapter(List urls) {
mUrls = urls;
}
@Override
protected View getItemView(ViewGroup parent, int position) {
return LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_img, parent, false);
}
@Override
protected void bindView(View view, int position) {
String url = mUrls.get(position);
ImageView imageView = view.findViewById(R.id.iv);
Picasso.with(view.getContext())
.load(url)
.placeholder(R.drawable.ic_heart)
.into(imageView);
}
@Override
protected int getItemCount() {
return mUrls == null ? 0 : mUrls.size();
}
@Override
protected void onItemClick(View view, int position) {
super.onItemClick(view, position);
Toast.makeText(App.getInstance(), "position " + position, Toast.LENGTH_SHORT).show();
}
}
属性
app:ngl_gridSpace="10dp"
app:ngl_oneChildHeight="200dp"
属性说明
属性值
说明
值
ngl_gridSpace
间距
默认20px
ngl_oneChildHeight
当只有一个图的时候的高度
默认400px
android 九宫格封装,Android 九宫格布局相关推荐
- android 九宫格封装,Android 九宫格的实现方法
1.xml代码: android:orientation="vertical" android:layout_width="fill_parent" andro ...
- android vitamio封装,Android视频框架Vitamio构建自己的通用播放器
Vitamio是Android和iOS平台上的全方位多媒体开发框架,完全支持硬件解码和GPU渲染. Vitamio功能强大手机上的万能播放器,可以平滑播放720P或1080P HD MKV,FLV手机 ...
- android 九宫格封装,Android 实现九宫格、点击图片放大全屏浏览等
live_icon.jpg 1370473-587d9058f76372fb.gif 说说我的实现思路: 逐渐掌握了Android开发套路,是时候自己去封装一些东西了.网上看了一些例子,感觉不是我想要 ...
- android适配器封装,Android万能适配器(一)封装ViewHolder
封装 ViewHolder 简单分析ViewHolder封装.ViewHolder内部正常是保存每个页面控件的索引,那么封装时候我们可以使用容器把每个Item布局中的所有控件存储到这个容器里面,每次使 ...
- android动画封装,Android属性动画封装,快速构建动画
Android实现动画效果的方式主要有帧动画.补间动画.属性动画.关于安桌动画的基础知识可以查看这篇文章Android属性动画完全解析 这里我要讲的是如何快速构建出一个动画效果,如下图: 如果我们用属 ...
- android websocket封装,Android WebSocket 方案选型OkHttp
目前Android WebSocket 框架 主要包括: SocketIO Java-WebSocket OkHttp WebSocket 一开始我首选的是采用SocketIO方案,因为考虑该方案封装 ...
- android动画封装,Android开场动画类完整实现代码
本文所述实例为在android中开起开场动画类,已封装好,进行android开发的朋友可使用.在这个类中,你可以:设置开场动画的图片资源.返回下一个要启动的Activity.显示开场动画.执行耗时的操 ...
- android 多线程封装,Android线程池封装库
目录介绍 1.遇到的问题和需求 1.1 遇到的问题有哪些 1.2 遇到的需求 1.3 多线程通过实现Runnable弊端 1.4 为什么要用线程池 2.封装库具有的功能 2.1 常用的功能 3.封装库 ...
- android 多线程封装,Android 线程池的封装
GlobalThreadPools.java: /** * 全局使用的线程池 */ public class GlobalThreadPools { private static String TAG ...
最新文章
- Java中stringBuilder
- windows server 2008 - 创建域和本机用户
- 阿德:工作与发财之间的秘密
- Ubuntu Apache 服务之 PHP 配置
- python 视频 灰度 伽玛_moviepy音视频剪辑:lum_contrast什么时候使用以及图像处理什么时候需要调整亮度与对比度...
- java使用迭代器删除元素_使用Java从地图中删除元素
- laraval使用sqlite设置从多少开始递增
- 云原生数据库如何打造业务弹性
- C#设计模式之3-建造者模式
- disable path length limit_通过Antsword看绕过disable_functions
- 数组后存入数据、删除指定内容数据
- 全系统可用PhotoshopCS6纯净版下载(亲测)支持Win10
- 你真的了解LinkedBlockingQueue的put,add和offer的区别吗
- 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
- 基础用户登录测试用例-最全用例设计
- 大数据分析引擎-Doris简要介绍
- 基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真
- loadrunner 12 --录制手机app脚本
- http-equiv=“X-UA-Compatible“是什么意思?
- 【无标题】非专业45岁,目标:Python对表格的识别转换。(1)基础识别
热门文章
- 计算机等级考试真题演示,全国计算机等级考试二级真题测试(答案)四、演示文稿题-日...
- Java IdentityHashMap put()方法与示例
- Java StringBuilder length()方法与示例
- 2021年终总结:30多岁依然没有放弃自我成长!
- 面试官:如何实现 List 集合去重?
- IDEA写sql语句的时候没有提示信息的处理办法
- html 按钮光束,图文详解,原来3dmax光束特效的制作这么简单!
- c语言中的运算符按位或,|按位或运算符
- 通达信公式大全_通达信MACD金叉的选股公式大全
- win11 32位官方版原版镜像文件v2021.07