[Android初级]关于实现在阅读文章后保持上次阅读位置的方法即关于ScrollView的位置监听
2014-07-11 16:24
525 查看
在android应用的开发中,可能会有这样的需求:在一款具有阅读功能的应用中,在打开电子文档、日志等长篇文章后,读了一大段之后,突然返回或者关闭后,等到下一次再打开阅读,依然是保持着上一次的阅读位置,这个情景很人性化。在android中如何实现呢?我在这里就试着说明一个方法,但不是唯一的解决方案。
首先,日志内容一定是在ScrollView中的,假设是如下组件的设定:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/txt_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
</LinearLayout>
然后,在主要的java代码上如何去监听用户最后一次浏览到的位置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.srcolltest);
mHandler = new Handler();
mTextView = (TextView) findViewById(R.id.txt_tv);
mScroolView = (ScrollView) findViewById(R.id.scrollview);
mTextView.setText(getString(R.string.news_txt));
mTextView.setTextSize(25.00f);
//该方法是监控对ScorllView的触碰事件
mScroolView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
Log.i(TAG, "last time scrollY=>"+mScroolView.getScrollY());
}
return false;
}
});
}
其次,当你获取了用户的浏览位置后,你需要保存到对应的对象中去,做好该用户的操作记录,如何实现?那是你的工作了
在下次获取用户的操作记录后,根据这个数据,使用ScrollView.scrollto(x,y)即可实现。但是使用这个方法不是那样在onCreate里随便一写就能体现效果的。
应该这样做:
@Override
protected void onResume() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScroolView.scrollTo(0, lastScrollY);
}
}, 100);
super.onResume();
}好了,基本使用就是这样。如果你有什么更好的方法,欢迎分享。
首先,日志内容一定是在ScrollView中的,假设是如下组件的设定:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/txt_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
</LinearLayout>
然后,在主要的java代码上如何去监听用户最后一次浏览到的位置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.srcolltest);
mHandler = new Handler();
mTextView = (TextView) findViewById(R.id.txt_tv);
mScroolView = (ScrollView) findViewById(R.id.scrollview);
mTextView.setText(getString(R.string.news_txt));
mTextView.setTextSize(25.00f);
//该方法是监控对ScorllView的触碰事件
mScroolView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
Log.i(TAG, "last time scrollY=>"+mScroolView.getScrollY());
}
return false;
}
});
}
其次,当你获取了用户的浏览位置后,你需要保存到对应的对象中去,做好该用户的操作记录,如何实现?那是你的工作了
在下次获取用户的操作记录后,根据这个数据,使用ScrollView.scrollto(x,y)即可实现。但是使用这个方法不是那样在onCreate里随便一写就能体现效果的。
应该这样做:
@Override
protected void onResume() {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScroolView.scrollTo(0, lastScrollY);
}
}, 100);
super.onResume();
}好了,基本使用就是这样。如果你有什么更好的方法,欢迎分享。
相关文章推荐
- Android 监听 ScrollView 滑动到最底部,实现阅读协议,滑动到最低端显示已阅读按钮(2017版本)
- android_ScrollView 监听滚动到某个位置的方法
- android scrollview 滑动到顶端或者指定位置的实现方法
- Android对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- 关于Android GPS 的 监听位置变化的函数的研究(1)
- Android对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- 关于实现S5PV210同时跑wince 和android双系统实现的可能性讨方法讨论
- android关于scrollview嵌套ExpandableListView的实现1
- Android - 小功能 - 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- 关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法
- Android ScrollView 实现 onScrollChanged 方法!!
- 关于实现外部阅读系统信箱内容的方法总结
- Android初级教程——实现共享优先数据方法 Shared Preferences
- Android 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- android关于scrollview嵌套ExpandableListView的实现2
- Android 下保持屏幕常亮的实现方法
- Android布局:保持在底部的按钮栏,上面是滚动的ScrollView的实现方式
- Android Animation学习笔记 Posted on 2010-01-11 23:00 feisky 阅读(40227) 评论(12) 编辑 收藏 关于动画的实现,Android提供了A
- 关于Flash air实现Android原生Activity生命周期函数的方法
- Android中实现ScrollView的滚动事件监听