TextView 滚动效果 android
来源:互联网 发布:帝国cms采集插件 编辑:程序博客网 时间:2024/04/29 22:39
这里要说的就是一个滚动的效果。所以肯定要用到TextView的滚动效果。同样的还要求TextView在水平方向和垂直方向上都可以滚动。刚做的时候,也是没有头绪,后来想到了,TextView有一个ScrollTo或者ScrollBy方法,何不如此一用呢!
1.前期找资料
因为刚开始,不知道怎么能够滚动,所以先去网上查找资料,垂直滚动很容易实现,直接使用TextView的
setMovementMethod(ScrollingMovementMethod.getInstance());
方法就可以了。可是水平滚动如何实现?晚上说在TextView的前面在套一层HorizontalScrollView,这个我也做了尝试,效果不佳,因为你有可能要在程序中动态的改变TextView的布局,这样子程序中就会出错;在者如果你设定了你的TextView为500px,而你的内容一行要有 700px,这时你的内容不会自动的切为两行;第三,在添加一个HorizontalScrollView感觉很不舒服,起码界面是这样。所以综合这几点,我放弃了使用这种方法。接着就想到用ScrollTo方法,首先需要声明的是,采用这种方法,你的程序中是没有水平和垂直滚动条的,这个你可以自己去优化实现,理论上是绝对可行的。
java代码:
1.前期找资料
因为刚开始,不知道怎么能够滚动,所以先去网上查找资料,垂直滚动很容易实现,直接使用TextView的
setMovementMethod(ScrollingMovementMethod.getInstance());
方法就可以了。可是水平滚动如何实现?晚上说在TextView的前面在套一层HorizontalScrollView,这个我也做了尝试,效果不佳,因为你有可能要在程序中动态的改变TextView的布局,这样子程序中就会出错;在者如果你设定了你的TextView为500px,而你的内容一行要有 700px,这时你的内容不会自动的切为两行;第三,在添加一个HorizontalScrollView感觉很不舒服,起码界面是这样。所以综合这几点,我放弃了使用这种方法。接着就想到用ScrollTo方法,首先需要声明的是,采用这种方法,你的程序中是没有水平和垂直滚动条的,这个你可以自己去优化实现,理论上是绝对可行的。
java代码:
001
public
class
Test_ScrollingText
extends
Activity
implements
OnTouchListener,OnGestureListener {
// 实现触摸和手势的接口
002
003
private
<a href=
"http://www.ligotop.comprivate"
>www.ligotop.com
004
private
</a> TextView mContent;
005
private
DisplayMetrics metrics;
006
private
int
mScreenWidth, mScreenHeight;
// 屏幕分辨率
007
private
GestureDetector mDetector;
// 手势监听者
008
private
String mDisplayTxt =
""
;
009
private
int
mCurrentX =
0
,
010
mCurrentY =
0
;
// TextView左上角的像素值
011
012
/** Called when the activity is first created. */
013
@Override
014
public
void
onCreate(Bundle savedInstanceState) {
015
super
.onCreate(savedInstanceState);
016
requestWindowFeature(Window.FEATURE_NO_TITLE);
017
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
018
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 全屏
019
metrics =
new
020
DisplayMetrics();
021
getWindowManager().getDefaultDisplay().getMetrics(metrics);
022
mScreenWidth = metrics.widthPixels;
023
mScreenHeight = metrics.heightPixels;
// 获得屏幕分辨率
024
setContentView(R.layout.main);
// 指定布局
025
mContent = (TextView) findViewById(R.id.content);
026
027
resetTextView();
028
loadFile();
029
mDetector =
new
GestureDetector(
this
);
030
mContent.setOnTouchListener(
this
);
031
mContent.setLongClickable(
true
);
// 初始化,注意这三步是必不可少的,但没顺序的限制
032
mContent.setText(mDisplayTxt);
// 显示文件内容
033
}
034
035
// 加载文件
036
private
void
loadFile() {
037
// TODO Auto-generated method stub
038
String mTemp;
039
try
{
040
InputStream mInputStream = getAssets().open(
"jinju.txt"
);
041
BufferedReader mBufferedInputStream =
new
BufferedReader(
042
new
InputStreamReader(mInputStream));
043
while
044
((mTemp = mBufferedInputStream.readLine()) !=
null
) {
045
mDisplayTxt +=
046
mTemp;
047
}
048
mDisplayTxt = mDisplayTxt.replace(
' '
, '
049
');
050
}
051
catch
(IOException e) {
052
// TODO Auto-generated catch block
053
e.printStackTrace();
054
}
055
}
056
057
// 重置TextView的大小
058
059
private
void
resetTextView() {
060
// TODO Auto-generated method stub
061
LinearLayout.LayoutParams mParams = (LayoutParams) mContent.getLayoutParams();
062
mParams.width = mScreenWidth +
300
;
063
mParams.height = mScreenHeight +
500
;
064
mContent.setLayoutParams(mParams);
065
}
066
// 触摸TextView
067
@Override
068
public
boolean
onTouch(View v, MotionEvent event) {
069
070
// TODO Auto-generated method stub
071
return
mDetector.onTouchEvent(event);
// 工作交给手势监听者
072
}
073
// 下面的各个函数是OnGestureListener的实现,具体动作这里不做赘述
074
@Override
075
public
boolean
onDown(MotionEvent e) {
076
// TODO Auto-generated method stub
077
return
false
;
078
079
}
080
081
@Override
082
public
boolean
onFling(MotionEvent e1, MotionEvent e2,
float
velocityX,
float
velocityY) {
083
// TODO Auto-generated method stub
084
return
false
;
085
}
086
087
@Override
088
public
void
onLongPress(MotionEvent e) {
089
// TODO Auto-generated method stub
090
}
091
@Override
092
public
boolean
onScroll(MotionEvent e1, MotionEvent e2,
float
distanceX,
float
distanceY) {
093
094
// TODO Auto-generated method stub
095
int
mLayoutWidth = mContent.getLayoutParams().width;
// 获得TextView的宽度
096
int
mLayoutHeight = mContent.getLineCount() * mContent.getLineHeight();
097
// 获得TextView的实际高度
098
if
(mCurrentX + distanceX >=
0
) {
099
if
(mCurrentX + distanceX > mLayoutWidth - mScreenWidth) {
100
mCurrentX = mLayoutWidth - mScreenWidth;
101
}
else
{
102
mCurrentX = (
int
) (mCurrentX + distanceX);
103
}
104
}
else
{
105
mCurrentX =
0
;
106
}
107
if
(mCurrentY + distanceY >=
0
) {
108
if
(mCurrentY + distanceY > mLayoutHeight - mScreenHeight) {
109
mCurrentY = mLayoutHeight - mScreenHeight;
110
}
else
{
111
mCurrentY = (
int
) (mCurrentY + distanceY);
112
}
113
}
else
{
114
115
116
mCurrentY =
0
;
117
}
118
119
120
mContent.scrollTo(mCurrentX, mCurrentY);
121
// 使文本滚动到指定的地方
122
return
false
;
123
}
124
125
@Override
126
public
void
onShowPress(MotionEvent e) {
127
// TODO Auto-generated method stub
128
}
129
130
@Override
131
public
boolean
onSingleTapUp(MotionEvent e) {
132
// TODO Auto-generated method stub
133
return
false
;
134
}
135
136
137
}
- Android TextView滚动效果
- TextView 滚动效果 android
- Android TextView滚动效果
- Android TextView实现滚动效果
- Android金钱滚动效果-滚动的textView
- Android:TextView的垂直滚动效果,和上下滚动效果
- Android:TextView的垂直滚动效果,和上下滚动效果
- Android:TextView的垂直滚动效果,和上下滚动效果
- android textview 跑马灯 滚动效果
- android 用textview实现文字滚动效果
- android textview 跑马灯 滚动效果
- [Android] TextView的垂直滚动效果
- [Android] TextView的垂直滚动效果
- Android TextView 跑马灯滚动效果
- Android TextView竖直滚动文字广告效果
- Android TextView的垂直滚动效果
- Android TextView的垂直滚动效果
- Android系统中TextView实现滚动效果
- 定位html标签的几种方法
- function, new function, new Function之间的区别
- Info Path eForm 使用Web Service 及下拉框的问题
- HyperSnap 6捕获的视频图片都是一片漆黑
- HDU 1058 Humble Numbers
- TextView 滚动效果 android
- java 单例的序列化
- Android 学习意外第五季<1>——gps定位经纬度查询地址信息
- .NET 数据类型
- sqlserver2005追加备份还原的问题
- 关于Access的左连接SQL写法
- log4j配置文件相对位置分析
- 嗯
- ACCESS中SQL语句之“like” 语句写法