安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中
自定义一个HorizontalScrollView类,主要为了让这个HorizontalScrollView不能鼠标点击,不能左右按键,并且没有焦点。
public class ImageMoveHorizontalScrollView extends HorizontalScrollView {private boolean mSmoothScrollingEnabled = true;private final Rect mTempRect = new Rect();public ImageMoveHorizontalScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public ImageMoveHorizontalScrollView(Context context) {super(context);}/*** 关闭鼠标点击的效果,重写该方法*/@Overridepublic boolean onTouchEvent(MotionEvent ev) {return false;}/*** 关闭左右按键效果,重写该方法*/@Overridepublic boolean executeKeyEvent(KeyEvent event) {return false;}/*** 去除焦点选中*/@Overridepublic boolean pageScroll(int direction) {boolean right = direction == View.FOCUS_RIGHT;int width = getWidth();if (right) {mTempRect.left = getScrollX() + width;int count = getChildCount();if (count > 0) {View view = getChildAt(0);if (mTempRect.left + width > view.getRight()) {mTempRect.left = view.getRight() - width;}}} else {mTempRect.left = getScrollX() - width;if (mTempRect.left < 0) {mTempRect.left = 0;}}mTempRect.right = mTempRect.left + width;return scrollAndFocus(direction, mTempRect.left, mTempRect.right);}private boolean scrollAndFocus(int direction, int left, int right) {boolean handled = true;int width = getWidth();int containerLeft = getScrollX();int containerRight = containerLeft + width;boolean goLeft = direction == View.FOCUS_LEFT;
//主要在这边,注释掉下面的代码// View newFocused = findFocusableViewInBounds(goLeft, left, right);// if (newFocused == null) {// newFocused = this;// }if (left >= containerLeft && right <= containerRight) {handled = false;} else {int delta = goLeft ? (left - containerLeft) : (right - containerRight);doScrollX(delta);}//去除 滚动后 foucus的// if (newFocused != findFocus())// newFocused.requestFocus(direction);return handled;}/*** Smooth scroll by a X delta* @param delta the number of pixels to scroll by on the X axis*/private void doScrollX(int delta) {if (delta != 0) {if (mSmoothScrollingEnabled) {smoothScrollBy(delta, 0);} else {scrollBy(delta, 0);}}}}
使用:
sc.pageScroll(View.FOCUS_RIGHT); //向右翻一页
安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中相关推荐
- 安卓开发之自定义SeekBar竖立类(顺时针逆时针旋转90度)
类名:VerticalSeekBar public class VerticalSeekBar extends SeekBar {private boolean mIsDragging;private ...
- 安卓开发笔记——自定义广告轮播Banner(实现无限循环)
关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...
- Android开发,自定义View的学习合集
转载自:http://blog.csdn.net/u011507982/article/details/51199644 自定义控件学习 https://github.com/GcsSloop/An ...
- 安卓开发学习1:安卓开发资源与方法总结
开发工具 Android Studio下载 Genymotion 下载 Android Studio配置 Android Studio的Gradle配置国内镜像 Android Studio配置代码提 ...
- 解密android日志xlog,安卓开发技巧2:自定义日志工具类XLog的实现
安卓开发技巧二:自定义日志工具类XLog的实现 我们在开发过程中,打印日志是必不可少的一个调试环节,然而,直接使用系统自带的Log日志类,并不能满足我们实际项目的需求:假如我们现在在开发一款比较大的项 ...
- android 微博字体高亮,安卓开发札记——高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现)...
安卓开发笔记--高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现) 先让大家看下效果图,这个是我自己在闲暇时间仿写的新浪微博客户端: 今天来讲讲如何实现上图的效果,这里需要用到S ...
- 安卓开发-自定义照相机界面
安卓开发-自定义照相机界面 此项目是总结了其他三位大佬的代码后写出来的,在此首先感谢三位大佬: 自定义照相机编写方法:https://blog.csdn.net/shan286/article/det ...
- android自定义模态框,安卓开发自定义弹出框的简单方式(纯代码布局)
弹出框在安卓开发中是经常会用到的,如果单纯的只是用安卓自带的对话框模式肯定是十分单调的. 再来我看来安卓一定有一个功能让我们像Layout添加Layout一样把Layout添加到提示框里面. 所以忘了 ...
- 安卓饼状图设置软件_安卓(Android)开发之自定义饼状图
先来看看效果图 先分析饼状图的构成,非常明显,饼状图就是一个又一个的扇形构成的,每个扇形都有不同的颜色,对应的有名字,数据和百分比. 经以上信息可以得出饼状图的最基本数据应包括:名字 数据值 百分比 ...
最新文章
- 浅析网站维护优化的必要性!
- Oracle中的pfile和spfile详解
- 大话西游维护完怎么刷服务器,大话西游2很实用:看高玩教你如何快速刷齐高端套装...
- SQL基础E-R图画法(三)
- 【BZOJ2440】完全平方数,莫比乌斯反演+二分答案+容斥思想
- 大数据公司Palantir曾向法拉第未来投资2500万美元
- 设计灵感|美容护肤主题,图文排版在Banner中的正确打开位置!
- 【Linux】Linux环境的搭建
- [HAOI2007]反素数ant
- win11安装助手闪退怎么办 Windows11安装助手闪退的解决方法
- php fopen 清空文件内容,如何在c语言中清空文件里的内容?
- Python容器专题 - 元组(tuple)
- 霍尔探头对高斯计测量的影响
- 使用three.js创建粒子火焰效果
- 定时关机软件里的锁定计算机,怎么让电脑定时关机设置大全
- 如何优雅使用JDK8中的Stream对list集合中的某值求和
- Linxu-解压压缩命令
- Python从zip文件里导入包
- Python mongodb数据库
- Windows文件夹开启大小写敏感