欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中TextView实现垂直滚动和上下滚动效果

程序员文章站 2022-06-12 13:31:54
布局里面就是两个自定义的textview,上面的左右滑动的是autohorizontalscrolltextview; 下面上下滚动的是autoverticalscr...

Android中TextView实现垂直滚动和上下滚动效果

布局里面就是两个自定义的textview,上面的左右滑动的是autohorizontalscrolltextview;

下面上下滚动的是autoverticalscrolltextview;

Android中TextView实现垂直滚动和上下滚动效果

上面左右滑动的非常好实现,直接把autohorizontalscrolltextview复制到项目中,复制全类名到布局文件中,和系统textview一样,只需设置文本其他什么都不用设置;

下面垂直滚动的autoverticalscrolltextview相比autohorizontalscrolltextview稍微麻烦一点;但是也非常简单;

如果在项目中使用的话直接把autoverticalscrolltextview复制到项目中;

有些属性在布局文件中没有办法设置,需要在makeview()方法中设置:现在这个字体是白色的,如果不需要去掉

//这里返回的textview,就是我们看到的view,可以设置自己想要的效果 
 public view makeview() { 
  textview textview = new textview(mcontext); 
  textview.setgravity(gravity.left); 
  textview.settextsize(20); 
  textview.setsingleline(true); 
  textview.setgravity(gravity.center_vertical); 
  textview.setellipsize(textutils.truncateat.end); 
  textview.settextcolor(color.white); 
  return textview; 
 } 

接下来看下布局文件:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:orientation="vertical"> 
 <!--左右滚动的textview--> 
 <www.autotextview.com.autotextview.view.autohorizontalscrolltextview 
  android:textsize="20sp" 
  android:background="#000000" 
  android:textcolor="#ffffff" 
  android:id="@+id/textview" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:singleline="true" 
  /> 
 <!--上下滚动的textview--> 
 <www.autotextview.com.autotextview.view.autoverticalscrolltextview 
  android:id="@+id/textview_auto_roll" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:background="#000000" 
  android:padding="5dp" 
  /> 
</linearlayout> 

布局文件就非常简单了,接下来说下两个view具体怎么使用:

左右滚动的textview,直接设置一个textview即可;

horizontalscrolltv = (autohorizontalscrolltextview) findviewbyid(r.id.textview); 
  horizontalscrolltv.settext(titlestr); 

而垂直滚动的textview需要的是一个数组,当执行next()方法的时候会执行动画切换下一个数据;
在项目中我直接定义了一个计时器,每隔2秒发送一个消息,然后执行autoverticalscrolltextview.next();

private string[] strings={"我的剑,就是你的剑!","俺也是从石头里蹦出来得!","我用双手成就你的梦想!","人在塔在!","犯我德邦者,虽远必诛!","我会让你看看什么叫残忍!","我的大刀早已饥渴难耐了!"}; 
  verticalscrolltv = (autoverticalscrolltextview) findviewbyid(r.id.textview_auto_roll); 
  verticalscrolltv.settext(strings[0]); 
  new thread(){ 
   @override 
   public void run() { 
    while (isrunning){ 
     systemclock.sleep(3000); 
     handler.sendemptymessage(199); 
    } 
   } 
  }.start(); 
private handler handler = new handler() { 
  public void handlemessage(message msg) { 
   if (msg.what == 199) { 
    verticalscrolltv.next(); 
    number++; 
    verticalscrolltv.settext(strings[number%strings.length]); 
   } 
  } 
 }; 

点击事件是后期加上去的,在mainactivity的initview()方法中添加以下代码:

verticalscrolltv.setonclicklistener(new view.onclicklistener() { 
   @override 
   public void onclick(view v) { 
    toast.maketext(mainactivity.this,strings[number%strings.length],toast.length_short).show(); 
   } 
  }); 

以上所述是小编给大家介绍的android中textview实现垂直滚动效和上下滚动效果,希望对大家有所帮助