由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上。所以各大平台一般会提供一些可滚动的视图来向用户展示数据。Android平台框架中为我们提供了诸如ListView、GirdView、ScrollView等滚动视图控件,这几个视图控件也是我们平常使用最多的。下面介绍一下HorizontalScrollView的使用和需要注意的点:

HorizontalScrollView是一个FrameLayout  ,这意味着你只能在它下面放置一个子控件,这个子控件可以包含很多数据内容。有可能这个子控件本身就是一个布局控件,可以包含非常多的其他用来展示数据的控件。这个布局控件一般使用的是一个水平布局的LinearLayout  。TextView也是一个可滚动的视图控件,所以一般不需要HorizontalScrollView

下面介绍一个HorizontalScrollView中包含许多图片,并且可以滚动浏览的示例

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout. activity_main);

mLinearLayout = (LinearLayout) findViewById(R.id.mygallery);

File externalDir = Environment. getExternalStorageDirectory();

String photosPath = externalDir.getAbsolutePath() + "/test/";

File photosFile = new File(photosPath);

for (File photoFile : photosFile.listFiles()) {

mLinearLayout.addView(getImageView(photoFile.getAbsolutePath()));

}

}

private View getImageView(String absolutePath) {

Bitmap bitmap = decodeBitmapFromFile(absolutePath, 200, 200);

LinearLayout layout = new LinearLayout(getApplicationContext());

layout.setLayoutParams( new LayoutParams(250, 250));

layout.setGravity(Gravity. CENTER);

ImageView imageView = new ImageView(this);

imageView.setLayoutParams( new LayoutParams(200,200));

imageView.setScaleType(ImageView.ScaleType. CENTER_CROP);

imageView.setImageBitmap(bitmap);

layout.addView(imageView);

return layout;

}

private Bitmap decodeBitmapFromFile(String absolutePath, int reqWidth, int reqHeight) {

Bitmap bm = null;

// First decode with inJustDecodeBounds=true to check dimensions

final BitmapFactory.Options options = new BitmapFactory.Options();

options. inJustDecodeBounds = true ;

BitmapFactory. decodeFile(absolutePath, options);

// Calculate inSampleSize

options. inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

// Decode bitmap with inSampleSize set

options. inJustDecodeBounds = false ;

bm = BitmapFactory. decodeFile(absolutePath, options);

return bm;

}

private int calculateInSampleSize(Options options, int reqWidth,

int reqHeight) {

// Raw height and width of image

final int height = options.outHeight;

final int width = options.outWidth;

int inSampleSize = 1;

if (height > reqHeight || width > reqWidth) {

if (width > height) {

inSampleSize = Math. round((float)height / ( float)reqHeight);

} else {

inSampleSize = Math. round((float)width / ( float)reqWidth);

}

}

return inSampleSize;

}

要显示的图片放在外置SDCard中test目录下,上面的示例程序只是显示了一张张大图片的缩略版本,对这方面不懂的可以参看:

HorizontalScrollView还可以设置滚动到一个指定的位置(x,0),它的子控件也会跟随着滚动。

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

// 水平直接滚动800px,如果想效果更平滑可以使用smoothScrollTo(int x, int y)

hsv.scrollTo(800, 0);

}

}, 2000);

效果图:

以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。

android horizontalscrollview属性,Android中HorizontalScrollView使用方法详解相关推荐

  1. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

  2. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  3. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  4. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  5. php 文件扫描去重,PHP中的去重方法详解和文件下载

    本文主要和大家分享PHP中的去重方法详解和文件下载,在php中文件导入过程中,经常会遇到重复事件,那么就需要我们去重,然后进行下载. 1.思想 先设置一个存储主键数组,和一个空数组.解析文件,然后看要 ...

  6. keep alive PHP,vue中keep-alive使用方法详解

    这次给大家带来vue中keep-alive使用方法详解,vue中keep-alive使用的注意事项有哪些,下面就是实战案例,一起来看一下. 1.keep-alive的作用以及好处 在做电商有关的项目中 ...

  7. java中main是什么_Java中的main()方法详解

    在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...

  8. android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解

    本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...

  9. android view使用方法,Android View构造方法第三参数使用方法详解

    我们都知道,在Android中要使用一个View,一般会有两种方式: 在XML文件中配置: 直接在代码中new一个View的对象. 我们今天讨论的内容就是围绕着View的构造方法的. 1.实例 首先我 ...

  10. android使组件居中,Android图文居中显示控件使用方法详解

    最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding.如下: android:layout_width=" ...

最新文章

  1. ESRI2007应用开发大赛总结
  2. 【数据库】Ubuntu12.04安装配置Redis3.0
  3. 重庆python就业工资待遇-重庆python培训多少钱?
  4. Ubuntu下安装和使用zookeeper和kafka
  5. App自动化测试之Adb基础命令使用
  6. 深入基础(一)模块化
  7. 浅谈《刺客信条》的叙事:刺客和圣殿骑士的冲突与融合
  8. 大数据打造你的变美频道——数加平台上小红唇的大数据实践
  9. 怎样下载安装python_Windows系统上如何安装Python和pip
  10. YouTube-DNN优化原理推导
  11. 快克SEO站群搜狗提交工具
  12. 加载mySQL数据到内存_【测试验证】数据库加载到内存占用大小
  13. Android时代的赢创之路
  14. 婚礼一条龙服务成为新亮点
  15. MyEclipse Hibernate反向工程生成实体类
  16. MySQL数据库笔记6——约束Constraint
  17. 【经验教程】google谷歌Gmail邮箱帐号被停用怎么恢复Gmail邮箱google谷歌账号?
  18. 程序猿头头(async与await的原理)
  19. Number of unique ways that ATM can tender
  20. 【火炉炼AI】深度学习004-Elman循环神经网络

热门文章

  1. 【原】小软件开发心得(二)——推广、测试
  2. 蚁创互联说:品牌营销误区之“做品牌”就是“做广告”
  3. flash 加载外部flash怎么卸载干净
  4. linux如何设置显示器亮度调节软件,使用软件调节Ubuntu的屏幕亮度
  5. [生存志] 第142节 韩赵陈郑燕辽
  6. 梦幻西游这么火, Python也不甘示弱, Python写游戏辅助软件!
  7. 传承百年经典的瑞吉管家静待您的优雅旅程再次开启
  8. 历经18年胡培松创制优良新种质 国稻种芯百团计划行动
  9. 什么叫明文,什么叫密文,为什么不允许在数据库里明文保存密码?
  10. 蓝桥杯等差素数列-python