自定义一个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);
} /**
* 关闭鼠标点击的效果,重写该方法
*/
@Override
public boolean onTouchEvent(MotionEvent ev) {
return false;
} /**
* 关闭左右按键效果,重写该方法
*/
@Override
public boolean executeKeyEvent(KeyEvent event) {
return false;
} /**
* 去除焦点选中
*/
@Override
public 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的时候焦点不选中的更多相关文章

  1. 安卓开发笔记——自定义HorizontalScrollView控件(实现QQ5.0侧滑效果)

    对于滑动菜单栏SlidingMenu,大家应该都不陌生,在市场上的一些APP应用里经常可以见到,比如人人网,FaceBook等. 前段时间QQ5.0版本出来后也采用了这种设计风格:(下面是效果图) 之 ...

  2. 安卓开发笔记——自定义广告轮播Banner(实现无限循环)

    关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...

  3. 安卓开发之自定义一个view弹出框

    https://www.cnblogs.com/muyuge/p/6152167.html

  4. 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)

    记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScro ...

  5. 安卓开发_浅谈ListView(自定义适配器)

    ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...

  6. 安卓开发_数据存储技术_SharedPreferences类

    SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. ...

  7. PyQt学习随笔:Model/View开发时从Model相关类派生自定义类需要注意的问题

    在<PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项>介绍的方法,从Model相关类派生自定义类,通过重写setData方法以获取View中数据的 ...

  8. 安卓开发_深入学习ViewPager控件

    一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...

  9. 安卓开发笔记——TabHost组件(一)(实现底部菜单导航)

    什么是TabHost? TabHost组件的主要功能是可以进行应用程序分类管理,例如:在用户使用windows操作系统的时候,经常见到如图所示的图形界面.     TabHost选项卡,说到这个组件, ...

随机推荐

  1. 用户向导页面实现左右滑动的ViewPager

    然后在一个博客,以前的博客ImageSwitcher实现用户向导,现在,随着ViewPager实现同样的功能.直接看代码: 布局文件activity_main.xml <RelativeLayo ...

  2. ORA-600 [kcratr_scan_lastbwr] 逻辑坏块

    数据库版本: 11.2.0.3 问题现象: 今天在启动一台测试数据库的时候,发现db不能open,报错如下: ERROR at line 1:ORA-00600: internal error cod ...

  3. 2.Freshman阶段学习内容的确定

    我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...

  4. 优化器的使用oracle ---explain plan

    如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题. 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以 ...

  5. Object-c中@private、@protected、@public解析

    Objective-C中,类的实例化变量的范围有@private.@protected.@public.他们代表的意思和C++中相同,只是前面添加了一个@符号.下面介绍一下他们代表的范围: 指令 意思 ...

  6. 用CSS样式画横线和竖线的方法

    今天在做网页的时候,需要用到CSS画横线,虽然比较简单,但也出了一些小问题,拿来做个备忘. 方法一:用DIV,代码如下:(推荐此方法)     <div style="width:80 ...

  7. cnzz广告管家使用心得

    步着谷歌广告管家的后尘,国内百度公司和知名网络流量数据统计公司cnzz也分别推出了百度广告管家和cnzz广告管家.笔者分别注册了这两个网站.通过一段时间的使用,写下此文,希望对各位站长朋友们有所帮助. ...

  8. Android---intent传递putStringArrayListExtra

    Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,使用Intent和Bundle在组件之间传递数据,而这两种通常实现的是Java基本对象类型和S ...

  9. dubbo服务者配置说明

    <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright 1999-2011 Aliba ...

  10. 宣布在日本地区正式发布 Windows Azure

     昨天,我与 Microsoft 日本的集团副总裁 Yasuyuki Higuchi 一同站在台上,宣布在两个新地区正式发布 Windows Azure:日本东部和日本西部.能够亲自见证 Micr ...