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

Android使用Handler实现View弹性滑动

程序员文章站 2024-03-06 19:11:44
弹性滑动原理 将一次大的滑动非为若干次小的滑动,并在一个时间段内完成。更好的用户体验 实现方式很多种,包括用scroller,动画,延时策略. 使用han...

弹性滑动原理

将一次大的滑动非为若干次小的滑动,并在一个时间段内完成。更好的用户体验

实现方式很多种,包括用scroller,动画,延时策略.

使用handler实现弹性滑动

效果可以看到按钮button向滑动。注意这里是将view的内容改变。

你可以试一试将button外层的relitivelayout去掉,把id放在button下。发现是button的文字滑动

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<relativelayout
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_width="300dp"
android:layout_alignparentright="true"
android:layout_alignparenttop="true">
<button
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:layout_alignparentright="true"
android:layout_alignparenttop="true" 
android:text="button" />
</relativelayout>
</relativelayout> 
import android.os.bundle;
import android.os.handler;
import android.os.message;
import android.widget.relativelayout;
public class mainactivity extends activity {
private static final int message_scroll_to = 1;
private static final int frame_out = 30;
private static final int delayed_time = 30;
private relativelayout button;
private int mcount;
private handler handler = new handler(){
public void handlemessage(message msg){
switch (msg.what) {
case message_scroll_to:
mcount++;
if (mcount <= frame_out) {
float fraction = mcount / (float)frame_out;
int scrollx =(int) (fraction * 100);
button.scrollto(scrollx, 0);
handler.sendemptymessagedelayed(message_scroll_to, delayed_time);
}
break;
default:
break;
}
}
};
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
button = (relativelayout) findviewbyid(r.id.button1);
handler.sendemptymessagedelayed(message_scroll_to, delayed_time);
}
}

以上所述是小编给大家介绍的android使用handler实现view弹性滑动,希望对大家有所帮助