Android 开发学习进程0.14 Bindview recyclerview popwindow使用 window类属性使用
BindView ButterKnife
优势
绑定组件方便,使用简单
处理点击事件方便,如adapter中的viewholder
同时父组件绑定后子组件无需绑定
注意
在setcontentview之后使用,且子空间不可再使用static final属性
在不改变按钮图片大小的情况,扩大点击事件,
在较低Android版本此方法可能有问题,即src和setbackground的区别,同样可以设置背景图片,但src仅将图片资源加载,不做其他处理,而setbackground会使图片自适应与按钮大小,但也有具体属性设置,imagebutton相比常规button对图片设置更加详细,但对字处理较弱。
recycleview 使用方法
recyclerview设置滚动条自动将点击项滚动到中间方法
- 重写linerlayout类,如下代码:
public CenterLayoutManager(Context context) {
super(context);
}
public CenterLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
public CenterLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
RecyclerView.SmoothScroller smoothScroller = new CenterSmoothScroller(recyclerView.getContext());
smoothScroller.setTargetPosition(position);
startSmoothScroll(smoothScroller);
}
private static class CenterSmoothScroller extends LinearSmoothScroller {
CenterSmoothScroller(Context context) {
super(context);
}
@Override
public int calculateDtToFit(int viewStart, int viewEnd, int boxStart, int boxEnd, int snapPreference) {
return (boxStart + (boxEnd - boxStart) / 2) - (viewStart + (viewEnd - viewStart) / 2);
}
}
}
注意重写lanerlayoutmanager类的方法,与绘制组件较相似
- 在点击事件中设置centersmoothscroller的方法
- 同时在记得为recycler适配器设置上你的自定义布局
recycleview 相关属性
- overscrollmode:never 设置滑动到边缘无动画效果
- overscrollFooter 设置滑动底部颜色背景
- overscrollHeader 设置滑动头部颜色背景
- scrollbar="none" 设置是否显示滚动条
Popwindow配合recycler使用设置
popwindow一般不直接使用,配合recycler可以有更加多变的使用方法,popwindow与dialog传统对话框区别可以在任意位置显示,更加灵活,
与recycler结合
View view = LayoutInflater.from(getContext()).inflate(R.layout.pop_classifyfragment,null);
RecyclerView recyclerView =(RecyclerView) view.findViewById(R.id.pop_classifyfragment_list);
recyclerView.setLayoutManager(new GridLayoutManager(getContext(),4));
Classify_PopAdapter popAdapter =new Classify_PopAdapter(getContext(),mList);
recyclerView.setAdapter(popAdapter);
popAdapter.setClickListener(new AdapterClickListener() {
@Override
public void click(int flag, int position) {
}
});
mPopWindow = new PopupWindow(view,
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
mPopWindow.setContentView(view);
mPopWindow.showAtLocation(pop_btn, Gravity.NO_GRAVITY, 187, 72);
MWindowManager.init(getActivity()).lightoff();
mPopWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
//在dismiss中恢复透明度
public void onDismiss() {
MWindowManager.init(getActivity()).lighton();
}
});
}
原理为计算每一项的中心线位置,与窗口的中心线位置相减,计算出偏移量。而中心线位置由 (尾-头)/2+头 计算得出。
一般为额外写一个类,不直接在activity中写,会造成冗余。
同时还需建立adapter类,便于设置数据,layoutparams还可设置popwindow的大小,展示时通过showatlocation后两个属性设置与原点偏移量,如第三个属性为gravity.no_gravity默认会在左上角显示原点,所以应根据实际情况设置参数
MWindow.init 方法
activity并不直接控制视图,控制视图的为window类,它有接口MWindow供使用,使用MWindow.init.lightoff() 方法和类似lighton()方法可以实现popwindwo打开关闭时主activity状态的明暗变化,此时注意界面层次为activity、popwindow的父布局如linerlayout、popwindow的子控件。
Android 开发学习进程0.14 Bindview recyclerview popwindow使用 window类属性使用的更多相关文章
- Android 开发学习进程0.16 layout_weight属性 R文件关联XML Module
layout_weight属性 layout_weight属性我们常常用到,但有时候会发现它还有一些奇怪的属性,比如大多数使用时会把宽度设置成0,但要是宽度不设置成0会有什么效果? layout_we ...
- Android 开发学习进程0.27 kotlin使用 和viewbinding的使用
kotlin-android-extensions 插件被废弃 笔者曾经尝试写过一部分的kotlin代码 主要是项目中一些代码是kotlin完成的,其中我认为 kotlin的kotlin-androi ...
- Android 开发学习进程0.19 webview 的使用
Android 中的webview android 中的webview是可以在app内部打开HTML等的网页,不必再打开浏览器,有两种实现方法,即webviewclient webChromeclie ...
- Android开发学习进程0.18 SharePreference的使用 AIDL
SharePreference SharePreference是一种持久化存储手段,使用场景很多,如第一次打开时加载的用户协议等.适合小数据单进程的应用.将数据以键值对的形式存储在XML中. 使用方式 ...
- Android 开发学习进程0.17 Android资源文件selector textview显示两种不同字体
selector 是安卓资源文件的一种,它可以使按钮等实现不同状态下的不同UI,不用在代码中实现,而使用方式有两种,一种在color文件下 创建.xml可以使按钮等字体在不同状态下的变化,其二是在dr ...
- Android 开发学习进程0.15 adb cardview framelayout 控件设置状态获取焦点
Android设备调试桥 即adb 使用adb进行无线调试的一些常用命令 adb tcpip 5555 设置调试端口为5555 防止冲突 adb shell ifconfig wlan0 查询局域网中 ...
- Android 开发学习进程0.28 腾讯TBS接入和相关问题
TBS 的接入和使用 TBS 的接入 腾讯TBS是X5内核的升级版,可以当作webview 来打开 网页,可以以用来打开docx doc pdf 等文件,这里主要使用的是文件功能. 依赖接入 api ...
- Android 开发学习进程0.32 dwonloadmanager使用
downloadmanager时Android系统下载器,使用系统下载器可以避免用stream流读入内存可能导致的内存溢出问题.以下为downloadmanager初始化部分.apkurl为下载网络路 ...
- Android 开发学习进程0.13 Androidstudio快捷键 xmlns
xmlns XML namespace xml命名空间 其中主要是定义xml文件定义位置 前缀有三种,android app tools 后面为唯一标识符URI android 表示为引用自安卓系统 ...
随机推荐
- svg 使用中的疑惑点
svg,g ,defs,symbol 都是容器元素,使用起来给人许多疑惑 svg-spirite-loader在页面生成的svg标签有什么特点? svg标签里面的symbol有什么用? 这些标签能够随 ...
- 浅谈6种JS数组遍历方法的区别
本篇文章给大家介绍一下6种JS数组遍历方法:for.foreach.for in.for of.. each. ().each的区别.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. ...
- 本周六 Apache DolphinScheduler & Doris 将联合线上 Meetup
活动背景 2020年,大数据成为国家基建的一个重要组成,大数据在越来越多的领域展现威力.随着大数据的应用场景越来越多,大家对数据的响应速度和数据加工工作流的方便程度也提出了更高的要求.在这种背景下,相 ...
- DP学习记录Ⅰ
DP学习记录Ⅱ 前言 状态定义,转移方程,边界处理,这三部分想好了,就问题不大了.重点在状态定义,转移方程是基于状态定义的,边界处理是方便转移方程的开始的.因此最好先在纸上写出自己状态的意义,越详细越 ...
- JAVA基础(jdk安装和环境变量的配置)
JAVA 1.何为JAVA Java的发展可以归纳如下的几个阶段. (1)第一阶段(完善期):JDK 1.0 ( 1995年推出)一JDK 1.2 (1998年推出,Java更名为Java 2): ( ...
- 第四章 常用API(下)
4.1.String类 描述:该类代表字符串 构造方法: 方法 描述 public String() 初始化构造一个空白字符串 public String(char[] value) 通过字符数组初始 ...
- format 进阶
'''format(数字,str(算术式)+"d或者f") d 表示 int f 表示 float ''' format(5,str(2*4)+"d") '' ...
- Python os.statvfs() 方法
概述 os.statvfs() 方法用于返回包含文件描述符fd的文件的文件系统的信息.高佣联盟 www.cgewang.com 语法 statvfs()方法语法格式如下: os.statvfs([pa ...
- PHP curl_share_close函数
(PHP 5 >= 5.5.0) curl_share_close — 关闭 cURL 共享句柄 说明 void curl_share_close ( resource $sh ) 关闭 cUR ...
- PHP atan() 函数
实例 通过 atan() 函数返回不同数的反正切: <?phpecho(atan(0.50) . "<br>");echo(atan(-0.50) . " ...