您的位置:首页 > 移动开发 > Android开发

Android实用笔记——使用ScrollView实现滚动效果

2016-08-02 00:00 531 查看
1、功能

滚动视图是指当用有很多内容,屏幕显示不完时,需要通过滚动来显示完整的视图。

2、种类

ScrollView 垂直滚动视图

HorizontalScrollView 水平滚动视图

3、隐藏ScrollView



4、ScrollView的监听器

SetOnTouchListener的使用,可用于判断ScrollView何时滑动到底部

5、应用

设置activity_main.xml

<!--android:scrollbars设置滚动条的属性 例如不显示 -->
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
>
<TextView
android:id="@+id/contents"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</ScrollView>

设置strings.xml

<string name="content">故今日之责任,\n不在他人,\n而全在我少年。
\n少年智则国智,\n少年富则国富;\n少年强则国强,
\n少年独立则国独立;\n少年自由则国自由;\n少年进步则国进步;
\n少年胜于欧洲,\n则国胜于欧洲;\n少年雄于地球,\n则国雄于地球。
\n红日初升,\n其道大光。\n河出伏流,\n一泻汪洋。
\n潜龙腾渊,\n鳞爪飞扬。\n乳虎啸谷,\n百兽震惶。
\n鹰隼试翼,\n风尘翕张。\n奇花初胎,\n矞矞皇皇。
\n干将发硎,\n有作其芒。\n天戴其苍,\n地履其黄。
\n纵有千古,\n横有八荒。\n前途似海,\n来日方长。
\n美哉我少年中国,\n与天不老!\n壮哉我中国少年,\n与国无疆!</string>

编辑MainActivity.java

package com.example.myandroidscrollview;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ScrollView;
import android.widget.TextView;

public class MainActivity extends Activity {
//第一步、设置滚动条显示长文本
//1.1、声明长文本
private TextView tv;
//第二步、设置监听器,监听是否滚动到底部
//2.1、声明ScrollView
private ScrollView scroll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.2、编辑activity_main.xml文件,绑定
//这里如果将TextView的id设置为content会出现类型不匹配的错误。
//原因是和strings.xml里面的长文本的id相同,系统则会不清楚你要找的到底是哪一个
tv=(TextView) findViewById(R.id.contents);
//1.3、在strings.xml文件中设置长文本,绑定
tv.setText(getResources().getString(R.string.content));
//2.2、初始化绑定
scroll=(ScrollView) findViewById(R.id.scroll);
//2.3、设置监听器
scroll.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:{
/**
* a、getScrollY()	滚动条滑动距离,从0开始计算
* b、getMeasureHeigh
3ff0
t()	包括隐藏部分的高度
* c、getHeight()	不包括隐藏部分的高度
*/

//顶部状态
if(scroll.getScrollY()<=0){
Log.i("Main","滑动到顶部");
}

//底部状态
//TextView的总高度<=屏幕的高度+滚动条滚动的距离
if(scroll.getChildAt(0).getMeasuredHeight()
<=scroll.getHeight()+scroll.getScaleY()){
Log.i("Main","滑动到底部");
//滑动到底部的时候追加一段新文本
tv.append(getResources().getString(R.string.content));
}
break;
}
}
return false;
}
});
}
}

结果



6、补充:

ScrollTo和ScrollBy的区别

ScrollTo 以滚动视图的起始位置开始计算

ScrollBy 相对前一次的位置,去滚动对应的距离

可用于实现按钮点击滚动事件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐