安卓左右滑动.doc_第1页
安卓左右滑动.doc_第2页
安卓左右滑动.doc_第3页
安卓左右滑动.doc_第4页
安卓左右滑动.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/hanyonglu/archive/2012/02/13/2349827.htmlMainActivity文件中代码:package com.android.flip;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.GestureDetector.OnGestureListener;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.ViewFlipper;/* * Android实现左右滑动效果 * Description: Android实现左右滑动效果 * File: MainActivity.java * Package com.android.flip * Author Hanyonglu * Date 2012-02-12 上午10:44:04 * Version V1.0 */public class MainActivity extends Activity implements OnGestureListener private ViewFlipper flipper; private GestureDetector detector; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); detector = new GestureDetector(this); flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper1); flipper.addView(addImageView(R.drawable.one); flipper.addView(addImageView(R.drawable.two); flipper.addView(addImageView(R.drawable.three); flipper.addView(addImageView(R.drawable.four); flipper.addView(addImageView(R.drawable.five); private View addImageView(int id) ImageView iv = new ImageView(this); iv.setImageResource(id); return iv; Override public boolean onTouchEvent(MotionEvent event) / TODO Auto-generated method stub return this.detector.onTouchEvent(event); Override public boolean onDown(MotionEvent e) / TODO Auto-generated method stub return false; Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) if (e1.getX() - e2.getX() 120) this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out); this.flipper.showNext(); return true; else if (e1.getX() - e2.getX() -120) this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out); this.flipper.showPrevious(); return true; return false; Override public void onLongPress(MotionEvent e) / TODO Auto-generated method stub Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) / TODO Auto-generated method stub return false; Override public void onShowPress(MotionEvent e) / TODO Auto-generated method stub Override public boolean onSingleTapUp(MotionEvent e) / TODO Auto-generated method stub return false; 布局界面相对比较简单,我们只需要加入ViewFlipper就可以,代码如下:为了使其滑动时有一定的特效,我们需要加入Animation效果,说到Animation,我们先看下如何在Android中实现自定义Animation。自定义的Animation是以XML格式定义的,定义好的XML文件存放在res/anim中。一般的Animation有以下四种类型:1. Alpha:渐变透明度动画效果2. Scale:渐变尺寸伸缩动画效果3. Translate:画面转换位置移动动画效果4. Rotate:画面转换位置移动动画效果push_left_in.xml文件中代码:push_left_out.xml文件中代码:push_right_in.xml文件中代码:push_right_out.xml文件中代码:Android中如何使用ViewPager实现类似laucher左右拖动效果您的评价:收藏该经验 现在很多Android应用在首次安装完都会有指引如何使用该应用的某些功能的指引界面,这样会获得很好的用户体验,能够帮助用户更好使用应用的某些功 能。其实该功能和Android主界面的 luncher 的功能完全一样的效果,可以实现左右拖动。下面结合 ViewPager 的实例来展示如何实现该功能,先看下该Demo的结构图:注:ViewPager类是实现左右两个屏幕平滑地切换的一个类,是由Google 提供的,使用ViewPager首先需要引入android-support-v4.jar这个jar包。其中工程项目中的 libs 文件夹下存放着android-support-v4.jar这个jar包。drawable文件夹下包含有图片资源文件。以下是工程中各个文件的源码:main.xml源码:0102060711121624252627item01.xml源码:01020607111213其中item02.xml,item03.xml,item04.xml布局文件的源码和item01.xml布局文件一样,只是 ImageView 中的 android:background 属性的背景图片不同而已。GuideViewDemoActivity.java 源码:001packagecom.andyidea.guidedemo;002003importjava.util.ArrayList;004005importandroid.app.Activity;006importandroid.os.Bundle;007importandroid.os.Parcelable;008importandroid.support.v4.view.PagerAdapter;009importandroid.support.v4.view.ViewPager;010importandroid.support.v4.view.ViewPager.OnPageChangeListener;011importandroid.view.LayoutInflater;012importandroid.view.View;013importandroid.view.ViewGroup;014importandroid.view.ViewGroup.LayoutParams;015importandroid.view.Window;016importandroid.widget.ImageView;017018publicclassGuideViewDemoActivityextendsActivity 019020privateViewPager viewPager;021privateArrayList pageViews;022privateViewGroup main, group;023privateImageView imageView;024privateImageView imageViews;025026/* Called when the activity is first created. */027Override028publicvoidonCreate(Bundle savedInstanceState) 029super.onCreate(savedInstanceState);030this.requestWindowFeature(Window.FEATURE_NO_TITLE);031032LayoutInflater inflater = getLayoutInflater();033pageViews =newArrayList();034pageViews.add(inflater.inflate(R.layout.item01,null);035pageViews.add(inflater.inflate(R.layout.item02,null);036pageViews.add(inflater.inflate(R.layout.item03,null);037pageViews.add(inflater.inflate(R.layout.item04,null);038039imageViews =newImageViewpageViews.size();040main = (ViewGroup)inflater.inflate(R.layout.main,null);041042/ group是R.layou.main中的负责包裹小圆点的LinearLayout.043group = (ViewGroup)main.findViewById(R.id.viewGroup);044045viewPager = (ViewPager)main.findViewById(R.id.guidePages);046047for(inti =0; i pageViews.size(); i+) 048imageView =newImageView(GuideViewDemoActivity.this);049imageView.setLayoutParams(newLayoutParams(20,20);050imageView.setPadding(20,0,20,0);051imageViewsi = imageView;052if(i =0) 053/默认选中第一张图片054imageViewsi.setBackgroundResource(R.drawable.page_indicator_focused);055else056imageViewsi.setBackgroundResource(R.drawable.page_indicator);057058group.addView(imageViewsi);059060061setContentView(main);062063viewPager.setAdapter(newGuidePageAdapter();064viewPager.setOnPageChangeListener(newGuidePageChangeListener();065066067/* 指引页面Adapter */068classGuidePageAdapterextendsPagerAdapter 069070Override071publicintgetCount() 072returnpageViews.size();073074075Override076publicbooleanisViewFromObject(View arg0, Object arg1) 077returnarg0 = arg1;078079080Override081publicintgetItemPosition(Object object) 082/ TODO Auto-generated method stub083returnsuper.getItemPosition(object);084085086Override087publicvoiddestroyItem(View arg0,intarg1, Object arg2) 088/ TODO Auto-generated method stub089(ViewPager) arg0).removeView(pageViews.get(arg1);090091092Override093publicObject instantiateItem(View arg0,intarg1) 094/ TODO Auto-generated method stub095(ViewPager) arg0).addView(pageViews.get(arg1);096returnpageViews.get(arg1);097098099Override100publicvoidrestoreState(Parcelable arg0, ClassLoader arg1) 101/ TODO Auto-generated method stub102103104105Override106publicParcelable saveState() 107/ TODO Auto-generated method stub108returnnull;109110111Override112publicvoidstartUpdate(View arg0) 113/ TODO Auto-generated method stub114115116117Override118publicvoidfinishUpdate(View arg0) 119/ TOD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论