android滑屏,Android滑屏小程序实验报告

android开发中如何实现滑屏的效果

横向滑动的话使用ViewPager这个控件

创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元西安做网站,已为上家服务,为西安各地企业和个人服务,联系电话:13518219792

详情百度一下就可以了。

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=""

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

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中的数据。

怎么样有滑动效果 android

android的滑动效果是通过View容器类ViewFlipper来实现的。

ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。

又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View,继承关系如下:

1、activity的写法如下:

import android.app.Activity;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.view.ViewGroup.LayoutParams;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.ImageView;

import android.widget.ViewFlipper;

public class ViewFlipperActivity extends Activity implements android.view.GestureDetector.OnGestureListener {

private int[] imgs = { R.drawable.img1, R.drawable.img2,

R.drawable.img3, R.drawable.img4, R.drawable.img5 };

private GestureDetector gestureDetector = null;

private ViewFlipper viewFlipper = null;

private Activity mActivity = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mActivity = this;

viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);

gestureDetector = new GestureDetector(this);    // 声明检测手势事件

for (int i = 0; i  imgs.length; i++) {          // 添加图片源

ImageView iv = new ImageView(this);

iv.setImageResource(imgs[i]);

iv.setScaleType(ImageView.ScaleType.FIT_XY);

viewFlipper.addView(iv, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

}

viewFlipper.setAutoStart(true);         // 设置自动播放功能(点击事件,前自动播放)

viewFlipper.setFlipInterval(3000);

if(viewFlipper.isAutoStart()  !viewFlipper.isFlipping()){

viewFlipper.startFlipping();

}

}

@Override

public boolean onTouchEvent(MotionEvent event) {

viewFlipper.stopFlipping();             // 点击事件后,停止自动播放

viewFlipper.setAutoStart(false);

return gestureDetector.onTouchEvent(event);         // 注册手势事件

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

if (e2.getX() - e1.getX()  120) {            // 从左向右滑动(左进右出)

Animation rInAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_right_in);  // 向右滑动左侧进入的渐变效果(alpha  0.1 - 1.0)

Animation rOutAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_right_out); // 向右滑动右侧滑出的渐变效果(alpha 1.0  - 0.1)

viewFlipper.setInAnimation(rInAnim);

viewFlipper.setOutAnimation(rOutAnim);

viewFlipper.showPrevious();

return true;

} else if (e2.getX() - e1.getX()  -120) {        // 从右向左滑动(右进左出)

Animation lInAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_left_in);       // 向左滑动左侧进入的渐变效果(alpha 0.1  - 1.0)

Animation lOutAnim = AnimationUtils.loadAnimation(mActivity, R.anim.push_left_out);     // 向左滑动右侧滑出的渐变效果(alpha 1.0  - 0.1)

viewFlipper.setInAnimation(lInAnim);

viewFlipper.setOutAnimation(lOutAnim);

viewFlipper.showNext();

return true;

}

return true;

}

@Override

public boolean onDown(MotionEvent e) {

return false;

}

@Override

public void onLongPress(MotionEvent e) {

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

return false;

}

@Override

public void onShowPress(MotionEvent e) {

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

return false;

}

}

2、main.xml配置文件:

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns: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事件

android 编程 如何实现屏幕滑动?

我这的代码是不会给你的了,长不长的不说,主要是不让给。

思路倒是可以告诉你,其实很简单,就是响应屏幕触点事件,判断触点区域,切换界面图片。最简单的实现:6张图,分别是一张触摸图(就是你图中那个黄边的锁),一张区域整体透明图,四张上下左右响应变化整体图,然后根据触摸的位置切换图片就行了。(其中还是有些小麻烦和小技巧,你自己试试就知道了,不难解决)

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:子布局可以根据自己的大小选择任意大小。

*/

/*

* VelocityTracker类

*

* 功能: 根据触摸位置计算每像素的移动速率。

*

* 常用方法有:

*

* public void addMovement (MotionEvent ev) 功能:添加触摸对象MotionEvent , 用于计算触摸速率。

* public void computeCurrentVelocity (int units)

* 功能:以每像素units单位考核移动速率。额,其实我也不太懂,赋予值1000即可。 参照源码 该units的意思如下: 参数 units :

* The units you would like the velocity in. A value of 1 provides pixels

* per millisecond, 1000 provides pixels per second, etc. public float

* getXVelocity () 功能:获得X轴方向的移动速率。

*/

/*

* ViewConfiguration类

*

* 功能: 获得一些关于timeouts(时间)、sizes(大小)、distances(距离)的标准常量值 。

*

* 常用方法:

*

* public int getScaledEdgeSlop()

*

* 说明:获得一个触摸移动的最小像素值。也就是说,只有超过了这个值,才代表我们该滑屏处理了。

*

* public static int getLongPressTimeout()

*

* 说明:获得一个执行长按事件监听(onLongClickListener)的值。也就是说,对某个View按下触摸时,只有超过了

*

* 这个时间值在,才表示我们该对该View回调长按事件了;否则,小于这个时间点松开手指,只执行onClick监听

*/

private static final String TAG = "ScrollLayout";

private Scroller mScroller;

private VelocityTracker mVelocityTracker;

private int mCurScreen;//当前屏幕

private int mDefaultScreen = 0;

//两种状态: 是否处于滑屏状态

private static final int TOUCH_STATE_REST = 0;//静止状态

private static final int TOUCH_STATE_SCROLLING = 1;//滑屏状态

private static final int SNAP_VELOCITY = 600; //最小的滑动速率

private int mTouchState = TOUCH_STATE_REST;

private int mTouchSlop;// change 多少像素算是发生move操作

private float mLastMotionX;

private float mLastMotionY;

public ScrollLayout(Context context, AttributeSet attrs) {

this(context, attrs, 0);

// TODO Auto-generated constructor stub

}

public ScrollLayout(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

// TODO Auto-generated constructor stub

mScroller = new Scroller(context);

mCurScreen = mDefaultScreen;

//初始化一个最小滑动距离

mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();

}

/**

* 生成view

*/

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b) {

// TODO Auto-generated method stub

if (changed) {

int childLeft = 0;

final int childCount = getChildCount();

for (int i = 0; i childCount; i++) {

final View childView = getChildAt(i);

if (childView.getVisibility() != View.GONE) {

final int childWidth = childView.getMeasuredWidth();

childView.layout(childLeft, 0, childLeft + childWidth,

childView.getMeasuredHeight());

childLeft += childWidth;

}

}

}

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

Log.e(TAG, "onMeasure");

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

final int width = MeasureSpec.getSize(widthMeasureSpec);

final int widthMode = MeasureSpec.getMode(widthMeasureSpec);

if (widthMode != MeasureSpec.EXACTLY) {

throw new IllegalStateException(

"ScrollLayout only canmCurScreen run at EXACTLY mode!");

}

final int heightMode = MeasureSpec.getMode(heightMeasureSpec);

if (heightMode != MeasureSpec.EXACTLY) {

throw new IllegalStateException(

"ScrollLayout only can run at EXACTLY mode!");

}

// The children are given the same width and height as the scrollLayout

final int count = getChildCount();

for (int i = 0; i count; i++) {

getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec);

}

// Log.e(TAG, "moving to screen "+mCurScreen);

scrollTo(mCurScreen * width, 0);

}

/**

* According to the position of current layout scroll to the destination

* page.

*/

public void snapToDestination() {

// 判断是否超过下一屏的中间位置,如果达到就抵达下一屏,否则保持在原屏幕

// 这样的一个简单公式意思是:假设当前滑屏偏移值即 scrollCurX 加上每个屏幕一半的宽度,除以每个屏幕的宽度就是

// 我们目标屏所在位置了。 假如每个屏幕宽度为320dip, 我们滑到了500dip处,很显然我们应该到达第二屏,索引值为1

// 即(500 + 320/2)/320 = 1

final int screenWidth = getWidth();

final int destScreen = (getScrollX() + screenWidth / 2) / screenWidth;

snapToScreen(destScreen);

}

public void snapToScreen(int whichScreen) {

// get the valid layout page

whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));

if (getScrollX() != (whichScreen * getWidth())) {

final int delta = whichScreen * getWidth() - getScrollX();

mScroller.startScroll(getScrollX(), 0, delta, 0,

Math.abs(delta) * 5);

mCurScreen = whichScreen;

onScreenChangeListener.onScreenChange(mCurScreen);

invalidate(); // Redraw the layout

}

}

public void setToScreen(int whichScreen) {

whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));

mCurScreen = whichScreen;

scrollTo(whichScreen * getWidth(), 0);

}

public int getCurScreen() {

return mCurScreen;

}

/**

* 控制view跟随手指滑动 由父视图调用用来请求子视图根据偏移值 mScrollX,mScrollY重新绘制

*/

@Override

public void computeScroll() {

// 如果返回true,表示动画还没有结束

// 因为前面startScroll,所以只有在startScroll完成时 才会为false

if (mScroller.computeScrollOffset()) {

// 产生了动画效果,根据当前值 每次滚动一点

scrollTo(mScroller.getCurrX(), mScroller.getCurrY());

postInvalidate();

}

}

/*

* 其中:onInterceptTouchEvent()主要功能是控制触摸事件的分发,例如是子视图的点击事件还是滑动事件。

* 其他所有处理过程均在onTouchEvent()方法里实现了。 1、屏幕的滑动要根据手指的移动而移动 ----

* 主要实现在onTouchEvent()方法中

*


网站标题:android滑屏,Android滑屏小程序实验报告
浏览地址:http://scjbc.cn/article/dsdpccg.html

其他资讯