android滑屏
A. 怎么样有滑动效果 android
android的滑动效果是通过View容器类ViewFlipper来实现的。
ViewFilpper是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。
又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View,继承关系如下:
1、activity的写法如下:
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.GestureDetector;
importandroid.view.MotionEvent;
importandroid.view.ViewGroup.LayoutParams;
importandroid.view.animation.Animation;
importandroid.view.animation.AnimationUtils;
importandroid.widget.ImageView;
importandroid.widget.ViewFlipper;
.view.GestureDetector.OnGestureListener{
privateint[]imgs={R.drawable.img1,R.drawable.img2,
R.drawable.img3,R.drawable.img4,R.drawable.img5};
=null;
privateViewFlipperviewFlipper=null;
privateActivitymActivity=null;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mActivity=this;
viewFlipper=(ViewFlipper)findViewById(R.id.viewflipper);
gestureDetector=newGestureDetector(this);//声明检测手势事件
for(inti=0;i<imgs.length;i++){//添加图片源
ImageViewiv=newImageView(this);
iv.setImageResource(imgs[i]);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
viewFlipper.addView(iv,newLayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
}
viewFlipper.setAutoStart(true);//设置自动播放功能(点击事件,前自动播放)
viewFlipper.setFlipInterval(3000);
if(viewFlipper.isAutoStart()&&!viewFlipper.isFlipping()){
viewFlipper.startFlipping();
}
}
@Override
publicbooleanonTouchEvent(MotionEventevent){
viewFlipper.stopFlipping();//点击事件后,停止自动播放
viewFlipper.setAutoStart(false);
returngestureDetector.onTouchEvent(event);//注册手势事件
}
@Override
publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){
if(e2.getX()-e1.getX()>120){//从左向右滑动(左进右出)
AnimationrInAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_right_in);//向右滑动左侧进入的渐变效果(alpha0.1->1.0)
AnimationrOutAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_right_out);//向右滑动右侧滑出的渐变效果(alpha1.0->0.1)
viewFlipper.setInAnimation(rInAnim);
viewFlipper.setOutAnimation(rOutAnim);
viewFlipper.showPrevious();
returntrue;
}elseif(e2.getX()-e1.getX()<-120){//从右向左滑动(右进左出)
AnimationlInAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_left_in);//向左滑动左侧进入的渐变效果(alpha0.1->1.0)
AnimationlOutAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_left_out);//向左滑动右侧滑出的渐变效果(alpha1.0->0.1)
viewFlipper.setInAnimation(lInAnim);
viewFlipper.setOutAnimation(lOutAnim);
viewFlipper.showNext();
returntrue;
}
returntrue;
}
@Override
publicbooleanonDown(MotionEvente){
returnfalse;
}
@Override
publicvoidonLongPress(MotionEvente){
}
@Override
publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){
returnfalse;
}
@Override
publicvoidonShowPress(MotionEvente){
}
@Override
publicbooleanonSingleTapUp(MotionEvente){
returnfalse;
}
}
2、main.xml配置文件:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ViewFlipper
android:id="@+id/viewflipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
以上完成了手势滑屏:
手势滑动屏幕动画,是通过android.view.GestureDetector类检测各种手势事件实现的,该类有两个回调接口(Interface)
A、GestureDetector.OnDoubleTapListener,用来通知DoubleTap双击事件,类似于鼠标的双击事件,接口三个抽象回调函数如下
1、onDoubleTap(MotionEvent e):DoubleTap双击手势事件后通知(触发)
2、onDoubleTapEvent(MotionEvent e):DoubleTap双击手势事件之间通知(触发),包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知)
3、onSingleTapConfirmed(MotionEvent e):用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势;那么如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,此时触发的就是SingleTapConfirmed事件
B. android中怎么实现滑动手机屏幕来代替相应的上下左右按钮
直接上图,
代码
有一个问题,首页就是第二排第二个可以上下滑动,但是在它上面却不能左右滑动屏幕了,应该是焦点的问题,有大虾解决了麻烦告知一下,在此谢过
已经解决了,再发一次
C. Android大神请进,怎么实现手势滑屏啊!下面是我写的一段代码,为什么实现不了,求指教,谢谢!
想要实现滑动效果,首先需要接收MotionEvent事件,
你要添加的是
public boolean onTouchEvent(MotionEvent event) {
if( ges.onTouchEvent(event)){
return true;
}
return false;
}
这样GestureDetector才能接收到手势。
另外根据我的经验,simpleGestureListener
中须继承
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
这样onfing可以正常work了,调试一下就可以动起来了。
另外可以考虑用ViewFlipper来实现。
D. android平台中页面切换时如果要用触摸屏左右滑动,怎么实现
左右滑动切换是通过viewPager来实现的,完整代码查看附件。
ViewPager的数据是通过PageAdapter来装载的:
1.调用adapter.notifyDataSetChanged(); 刷新控件,但是要覆盖PagerAdapter的getItemPosition方法,并返回return POSITION_NONE;
2.利用PagerAdapter的工作机制,就是PagerAdapter的执行顺序,PagerAdapter作为ViewPager的适配器,无论ViewPager有多少页,PagerAdapter在初始化时也只初始化开始的2个View,即调用2次instantiateItem方法。而接下来每当ViewPager滑动时,PagerAdapter都会调用destroyItem方法将距离该页2个步幅以上的那个View销毁,以此保证PagerAdapter最多只管辖3个View,且当前View是3个中的中间一个,如果当前View缺少两边的View,那么就instantiateItem,如里有超过2个步幅的就destroyItem。
3.每当Adapter调用instantiateItem时,运用View.setTag方法将该View标识。当需要更新这个View的数据时,通过调用ViewPager.findViewWithTag方法找到相应的View,然后更新View中的数据。
E. android 左右滑屏怎么实现 哪位大神教教我
代码如下:
package kexc.scroll;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.widget.Scroller;
/**
* 仿Launcher中的WorkSapce,可以左右滑动切换屏幕的类
*
*/
public class ScrollLayout extends ViewGroup {
/*
* onMeasure方法在控件的父元素正要放置它的子控件时调用。它会问一个问题,“你想要用多大地方啊?”,然后传入两个参数——
* widthMeasureSpec和heightMeasureSpec。它们指明控件可获得的空间以及关于这个空间描述的元数据。
* 比返回一个结果要好的方法是你传递View的高度和宽度到setMeasuredDimension方法里。
* 一个MeasureSpec包含一个尺寸和模式。
* 有三种可能的模式:
* UNSPECIFIED:父布局没有给子布局任何限制,子布局可以任意大小。
* EXACTLY:父布局决定子布局的确切大小。不论子布局多大,它都必须限制在这个界限里。
* AT_MOST:子布局可以根据自己的大小选择任意大小。
*/
F. android中怎么实现左右滑屏(由于要显示的东西特别大,又由于手机屏幕太小不能完全显示),不要那种翻页的
不存在这种软件
G. android怎样才能全屏滑动
Anroid scrollView实现竖型layout全屏滑动,使用如下属性:
1、在AndroidManifest.xml的配置文件里面的<activity>标签添加属性:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
2、在Activity的onCreate()方法中的super()和setContentView()两个方法之间加入下面两条语句:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
示例
方法一:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="test.ts.wader.image"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".ImageListActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
H. Android 的屏幕滚动操作不如 iPhone 流畅顺滑,是什么原因导致的
主要有三个原因
一,速度曲线。
当用户滑动界面然后松手,这时界面会继续滑动,然后速度减小,直到速度为0时停止。iOS下速度减小的这个过程比较慢,尤其是快要停的时候是慢慢停的,视觉上有种很顺滑的感觉;Android下则从松手到停要快很多,相比之下有种戛然而止的感觉。
二,帧率。
绝大部分时间两者都能保持60FPS左右的满帧率。但都会有偶尔的掉帧。并且Android上要比iOS上严重很多。
三,触摸响应速度。
从手指碰到触摸屏,到屏幕上显示处理这次触摸产生的画面,是需要时间的。时间越短感觉越跟手。而iOS的触摸屏的处理时间要比一般的Android手机快,在软件系统层面,Android的显示机制是app-->SurfaceFlinger-->Display,这比传统的app-->Display多了一步,主要基于这个原因,画面最终输出到屏幕要比传统的方式慢一帧(16.7ms)。