android水平滚动条,Android使用HorizontalScrollView实现水平滚动
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实现水平滚动相关推荐
- android 布局滚动条,Android 布局控件——滚动条视图,日期,时间
今天学长讲了一些控件,比较强的那种控件. 刚开始讲了图片,但是图片我前面写过了就跳过. 滚动条牛牛们应该很熟悉,也常用哈. 这是垂直的滚动条视图哈 一起来用吧! android:layout_widt ...
- Android按钮滚动条,Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动
由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...
- Android 垂直与水平滚动条:Scrollview与HorizontalScrollView
一.ScrollView介绍 滚动视图ScrollView由FrameLayout派生而出,它的内部最多只能包含一个组件,而它的作用是为该组件添加垂直滚动条,使它可以滑动.那么我们为什么要学习Srco ...
- android 垂直自动滚动条,Android实现Activity水平和垂直滚动条的方法
本文实例讲述了Android实现Activity水平和垂直滚动条的方法.分享给大家供大家参考,具体如下: android:layout_width="match_parent" a ...
- Android的增强版android.widget.ProgressBar,带数字的水平滚动条(支持长方形、平行四边形及椭圆角矩形)等
EnhancedProgressBar Android的增强版android.widget.ProgressBar,带数字的水平滚动条(支持长方形.平行四边形及椭圆角矩形),继承自android.wi ...
- android view上下滚动条,Android自定义View六(ViewGroup水平垂直滚动实现类似支付宝年度账单的效果)...
先看两张效果图 1.垂直滑动 onegif.gif 2.水平滑动 twoGIF.gif 先看使用方法 1.AndroidStudio 引入 Project.gradle repositories { ...
- android触摸效果,Android UI实现单行文本水平触摸滑动效果
本文实例为大家分享了单行文本水平触摸滑动效果,通过EditText实现TextView单行长文本水平滑动效果. 下一篇再为大家介绍 多行文本折叠展开效果,自定义布局View实现多行文本折叠和展开. 1 ...
- Android控制文字水平间距android:letterSpacing
Android控制文字水平间距android:letterSpacing 附录文章1实现的是Android的文字在水平方向的缩放,然而不是水平方向的文字间距.如果要想实现Android TextVie ...
- android 布局排排,[android]如何使LinearLayout布局从右向左水平排列,而不是从左向右排列...
方法1:利用android:layout_weight android:layout_width="match_parent" android:layout_height=&quo ...
最新文章
- 谈谈对Kafka Accumulator的理解
- oss客户端工具_阿里云服务器ECS上使用ossfs工具挂载阿里云OSS存储
- python快速入门答案-Python 快速入门笔记(1):简介
- 实现MVC模式的Web应用程序
- 前端学习(528):等分布局存在间距得问题
- MySQL.Linux.安装
- Oracle/PLSQL CURSOR FOR Loop
- Android 系统(253)----如何修改google libphonenumber的meta data (号码归属地,紧急号码列表,号码格式)
- 转行数据分析,是选Python还是R?
- c语言程序设计形考任务2答案(DOC),C语言程序设计形考任务2.doc
- python对数组的操作_Python Numpy库对数组的操作详解,
- 软件生命周期及工作分解结构
- 关于“程序员996”,大能发话了,能顶用吗?
- 考研英语近义词与反义词·四
- 编码的奥秘:布莱叶盲文与二元编码
- 查看linux当前ip,linux查看当前服务器ip地址 命令行
- Linux测试系统稳定性的工具,Linux桌面操作系统稳定性测试.pdf
- Python学习(中一)
- 研究性学习:APP的隐私问题
- centos查看进程及结束掉