HorizontalScrollView 和 ScrollView 都是由 FrameLayout 派生出来的。它们就是一个用于为普通组件添加滚动条的组件。且 HorizontalScrollView 和 ScrollView 里面最多只能包含一个组件(当然组件里面还可以嵌套组件)。它们不同的是 HorizontalScrollView 用于添加水平滚动,而 ScrollView 用于添加垂直滚动。

突然间想到 做一个屏幕下方水平滑动,屏幕上方并作出相应的反应的效果。只是在下方滚动时,屏幕上方没有作出理想的反应,点击事件倒是实现了。最终只能在网上搜索,终于找到了一个。于是作出的效果如下:

只是这个效果还有所缺陷,加载了 13 张图片,在屏幕下方水平滚动到最后一页时,第 9 张的图片并没有在上面的显示出来(原作者的也有这个问题);如果图片的数量小于或者等于 4 张时则不能运行。

本例的难点主要在于 MyHorizontalView 类中,并且还有收集而来的注解。

MainActivity.java :

package com.crazy.horizontalscrollviewtest;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import com.crazy.horizontalscrollviewtest.MyHorizontalView.CurrentImageChangeListener;

import com.crazy.horizontalscrollviewtest.MyHorizontalView.OnItemClickListener;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Color;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.ImageView;

import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private ImageView mImageView;

private MyHorizontalView myHorizontalView;

private List bitmapList;

private MyAdapter adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init();

}

private void init() {

mImageView = (ImageView)findViewById(R.id.imageView);

bitmapList = new ArrayList<>(Arrays.asList(

readBitMap(this, R.drawable.bricks),

readBitMap(this, R.drawable.dog),

readBitMap(this, R.drawable.flower),

readBitMap(this, R.drawable.grass),

readBitMap(this, R.drawable.stones),

readBitMap(this, R.drawable.wood),

readBitMap(this, R.drawable.bg_01),

readBitMap(this, R.drawable.bg_02),

readBitMap(this, R.drawable.bg_03),

readBitMap(this, R.drawable.bg_04),

readBitMap(this, R.drawable.bg_05),

readBitMap(this, R.drawable.bg_06),

readBitMap(this, R.drawable.bg_07)

));

myHorizontalView = (MyHorizontalView)findViewById(R.id.my_horizontal);

adapter = new MyAdapter(this, bitmapList);

//设置适配器

myHorizontalView.initDatas(adapter);

//添加滚动回调

myHorizontalView

.setCurrentImageChangeListener(new CurrentImageChangeListener() {

@Override

public void onCurrentImgChanged(int position, View viewIndicator) {

Log.e("==============","=============== " + position);

mImageView.setImageBitmap(bitmapList.get(position));

viewIndicator.setBackgroundColor(Color.parseColor("#AA024DA4"));

}

});

//添加点击回调

myHorizontalView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(View view, int position) {

mImageView.setImageBitmap(bitmapList.get(position));

view.setBackgroundColor(Color.parseColor("#AA024DA4"));

}

});

}

public static Bitmap readBitMap(Context mContext, int resId) {

BitmapFactory.Options opt = new BitmapFactory.Options();

opt.inPreferredConfig = Bitmap.Config.RGB_565;

opt.inPurgeable = true;

opt.inInputShareable = true;

InputStream is = mContext.getResources().openRawResource(resId);

return BitmapFactory.decodeStream(is, null, opt);

}

}

android水平滚动条,Android使用HorizontalScrollView实现水平滚动相关推荐

  1. android 布局滚动条,Android 布局控件——滚动条视图,日期,时间

    今天学长讲了一些控件,比较强的那种控件. 刚开始讲了图片,但是图片我前面写过了就跳过. 滚动条牛牛们应该很熟悉,也常用哈. 这是垂直的滚动条视图哈 一起来用吧! android:layout_widt ...

  2. Android按钮滚动条,Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动

    由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...

  3. Android 垂直与水平滚动条:Scrollview与HorizontalScrollView

    一.ScrollView介绍 滚动视图ScrollView由FrameLayout派生而出,它的内部最多只能包含一个组件,而它的作用是为该组件添加垂直滚动条,使它可以滑动.那么我们为什么要学习Srco ...

  4. android 垂直自动滚动条,Android实现Activity水平和垂直滚动条的方法

    本文实例讲述了Android实现Activity水平和垂直滚动条的方法.分享给大家供大家参考,具体如下: android:layout_width="match_parent" a ...

  5. Android的增强版android.widget.ProgressBar,带数字的水平滚动条(支持长方形、平行四边形及椭圆角矩形)等

    EnhancedProgressBar Android的增强版android.widget.ProgressBar,带数字的水平滚动条(支持长方形.平行四边形及椭圆角矩形),继承自android.wi ...

  6. android view上下滚动条,Android自定义View六(ViewGroup水平垂直滚动实现类似支付宝年度账单的效果)...

    先看两张效果图 1.垂直滑动 onegif.gif 2.水平滑动 twoGIF.gif 先看使用方法 1.AndroidStudio 引入 Project.gradle repositories { ...

  7. android触摸效果,Android UI实现单行文本水平触摸滑动效果

    本文实例为大家分享了单行文本水平触摸滑动效果,通过EditText实现TextView单行长文本水平滑动效果. 下一篇再为大家介绍 多行文本折叠展开效果,自定义布局View实现多行文本折叠和展开. 1 ...

  8. Android控制文字水平间距android:letterSpacing

    Android控制文字水平间距android:letterSpacing 附录文章1实现的是Android的文字在水平方向的缩放,然而不是水平方向的文字间距.如果要想实现Android TextVie ...

  9. android 布局排排,[android]如何使LinearLayout布局从右向左水平排列,而不是从左向右排列...

    方法1:利用android:layout_weight android:layout_width="match_parent" android:layout_height=&quo ...

最新文章

  1. 谈谈对Kafka Accumulator的理解
  2. oss客户端工具_阿里云服务器ECS上使用ossfs工具挂载阿里云OSS存储
  3. python快速入门答案-Python 快速入门笔记(1):简介
  4. 实现MVC模式的Web应用程序
  5. 前端学习(528):等分布局存在间距得问题
  6. MySQL.Linux.安装
  7. Oracle/PLSQL CURSOR FOR Loop
  8. Android 系统(253)----如何修改google libphonenumber的meta data (号码归属地,紧急号码列表,号码格式)
  9. 转行数据分析,是选Python还是R?
  10. c语言程序设计形考任务2答案(DOC),C语言程序设计形考任务2.doc
  11. python对数组的操作_Python Numpy库对数组的操作详解,
  12. 软件生命周期及工作分解结构
  13. 关于“程序员996”,大能发话了,能顶用吗?
  14. 考研英语近义词与反义词·四
  15. 编码的奥秘:布莱叶盲文与二元编码
  16. 查看linux当前ip,linux查看当前服务器ip地址 命令行
  17. Linux测试系统稳定性的工具,Linux桌面操作系统稳定性测试.pdf
  18. Python学习(中一)
  19. 研究性学习:APP的隐私问题
  20. centos查看进程及结束掉

热门文章

  1. android实现过程,Android:一个完整app开发流程
  2. tcp http https
  3. ubuntu9.10上安装jdk5
  4. ubuntu下如何切换输入法
  5. 深圳市灯谜学会的近三百条“深圳原创灯谜”引的市民激智抢麦
  6. WebFlux基础之响应式编程
  7. 给网站配置免费的HTTS证书 1
  8. [unity3d]导出安卓版设置
  9. 20145234黄斐《网络对抗技术》实验八、Web基础
  10. 黑莓GPRS上网套餐包月 300MB流量 不限CMWAP/CMNET