Android之ViewFlipper的用法
来源:互联网 发布:淘宝购物车上限120 编辑:程序博客网 时间:2024/05/17 06:36
1>比如滑动手指,界面切换.就可以使用ViewFlipper来实现
ViewFlipper简单的使用:
先在layout配置文件里面添加两个按钮和一个ViewFlipper控件
<Button
android:id=
"@+id/button1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:onClick=
"pre"
android:text=
"上一个"
/>
<Button
android:id=
"@+id/button2"
android:onClick=
"next"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"下一个"
/>
<ViewFlipper
android:id=
"@+id/flipper"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
></ViewFlipper>
然后在activity中添加如下代码:
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
flipper = (ViewFlipper)
this
.findViewById(R.id.flipper);
//往flipper添加三个textView
TextView tv1 =
new
TextView(
this
);
tv1.setText(
"text1"
);
flipper.addView(tv1);
TextView tv2 =
new
TextView(
this
);
tv2.setText(
"text2"
);
flipper.addView(tv2);
TextView tv3 =
new
TextView(
this
);
tv3.setText(
"text3"
);
flipper.addView(tv3);
}
public
void
pre(View view) {
flipper.showPrevious();
}
public
void
next(View view) {
flipper.showNext();
}
通过单击上一个/下一个进行不同view切换.
当然这只是简单的初步体验,接下来让我们继续他的学习
当我们用手指滑动屏幕的时候,让它实现view的切换.
现在来实现一下布局:
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"fill_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
<Button
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:onClick=
"pre"
android:text=
"上一个"
/>
<Button
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:onClick=
"next"
android:text=
"下一个"
/>
</LinearLayout>
<ViewFlipper
android:id=
"@+id/vf"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"textview1"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"textview2"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"textview3"
/>
</ViewFlipper>
</LinearLayout>
要实现这个功能首先要手势识别,
public
class
DemoActivity
extends
Activity {
ViewFlipper vf;
GestureDetector mGestureDetector;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
vf = (ViewFlipper)
this
.findViewById(R.id.vf);
//完成手势识别器的初始化
mGestureDetector =
new
GestureDetector(
new
GestureDetector.SimpleOnGestureListener(){
// 手指滑动屏幕的时候 调用的方法
// e1 是第一触摸屏幕时候的事件
// e2 手指离开时候 的事件
// velocityX x方向的速度
// velocityY y方向的速度
@Override
public
boolean
onFling(MotionEvent e1, MotionEvent e2,
float
velocityX,
float
velocityY) {
//如果垂直方向移动的距离过大 就是无效的手势
if
(Math.abs(e1.getY()-e2.getY()) >
100
){
return
false
;
}
//判断向右滑动屏幕的事件
if
(e2.getX()-e1.getX()>
100
&& Math.abs(velocityX)>
100
){
// 指定下一个view对象进来时候的动画效果
AlphaAnimation aa =
new
AlphaAnimation(
0
.0f,
1
.0f);
aa.setDuration(
2000
);
vf.setInAnimation(aa);
//设置当前view对象出去时候的动画效果
AlphaAnimation outaa =
new
AlphaAnimation(
1
.0f,
0
.0f);
aa.setDuration(
2000
);
vf.setOutAnimation(outaa);
//显示下一个内容
vf.showNext();
}
//判断向左滑动屏幕的事件
if
(e1.getX()-e2.getX()>
100
&& Math.abs(velocityX)>
100
){
// 指定下一个view对象进来时候的动画效果
AlphaAnimation aa =
new
AlphaAnimation(
0
.0f,
1
.0f);
aa.setDuration(
2000
);
vf.setInAnimation(aa);
//设置当前view对象出去时候的动画效果
AlphaAnimation outaa =
new
AlphaAnimation(
1
.0f,
0
.0f);
aa.setDuration(
2000
);
vf.setOutAnimation(outaa);
//显示上一个内容
vf.showPrevious();
}
return
super
.onFling(e1, e2, velocityX, velocityY);
}
});
}
//按钮的单击事件
public
void
pre(View view){
vf.showPrevious();
}
public
void
next(View view){
vf.showNext();
}
// 处理触摸事件的分发,如果touch事件没有被消费掉放回false,反之返回true
//提高touch的灵敏性
@Override
public
boolean
dispatchTouchEvent(MotionEvent ev) {
boolean
flag = mGestureDetector.onTouchEvent(ev);
if
(!flag){
flag =
super
.dispatchTouchEvent(ev);
}
return
flag;
}
@Override
public
boolean
onTouchEvent(MotionEvent event) {
// 需要通过手势识别器 去识别触摸的动作
mGestureDetector.onTouchEvent(event);
return
true
;
}
}
希望对大家有帮助,有误的地方请大家不吝指正...
- Android之ViewFlipper的用法
- 举例说明Android中ViewFlipper的用法
- android笔记之ViewFlipper的使用
- Android之ViewFlipper的简单使用
- Android之ViewFlipper的简单使用
- ViewFlipper的用法
- Android学习之ViewFlipper
- android之ViewFlipper
- Android学习之ViewFlipper
- Android开发之ViewFlipper
- Android之ViewFlipper
- Android控件之ViewFlipper
- Android 组件之ViewFlipper
- Android ViewFlipper 功能与用法
- android ViewFlipper的使用
- android ViewFlipper的使用
- android ViewFlipper的使用
- Android ViewFlipper的动画
- 打开Office时总出现“配置进度”界面的解决办法
- txt阅读器, 在别人的源码上 增加书签、字体缩放、书架 功能
- Class.getResource vs ClassLoader.getResource .
- Ubuntu下载编译Android源码全过程
- JDK版本过高使android程序引用jar失败
- Android之ViewFlipper的用法
- puzzles for kids
- MSSQL杨辉三角
- Linux内核分析 - 网络[十二]:UDP模块 - 收发 .
- 用javabean在JSP页面中实现进度条效果
- eclipse CDT C++编程。在eclipse中添加头文件和库文件
- 关于考究--认知世界,在网络发达的年代(牛皮癣的思考)
- JSP编程进度条设计实例
- 解析物理地址或直接通过坐标进行定位并在Google地图上显示