手势识别

1.onCreate中添加GestureDetector mGestureDetector;

//监听手势事件

mGestureDetector = new GestureDetector(this, onGestureListener);

2.//实现处理事件

OnGestureListener onGestureListener = new OnGestureListener() {

//添加未实现的方法

};

3.重写onTouch事件

//交由手势探测接口处理触摸事件

public boolean onTouchEvent(MotionEvent event) {

return mGestureDetector.onTouchEvent(event);

}

左右滑动效果

1、在xml中定义ViewFlipper控件;

2、重写onTouchEvent方法,用于捕获Touch事件

View Code

3、写push_left_in.xml、push_left_out.xml、push_right_in.xml、push_right_out.xml文件,用于滑动时的效果显现;

4、在Activity中定义OnGestureListener,重写onFling方法,根据e1、e2的坐标差判断左右滑动,同时在里面写滑动的效果。

View Code
@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;    }

工程下载:GuideViewTest.rar

来自:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html

左右滑动指引效果

1、加入android-support-v4.jar,关于android-support-v4.jar的详细信息,大家可以访问google官方网站:http://developer.android.com/sdk/compatibility-library.html;

2、XML中,用FrameLayout完成布局,放入ViewPager和指引图标

View Code
<?xml version="1.0" encoding="utf-8"?><FrameLayout 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="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <include layout="@layout/item_header" />        <android.support.v4.view.ViewPager            android:id="@+id/guidePages"            android:layout_width="fill_parent"            android:layout_height="wrap_content" />    </LinearLayout>    <!-- 指引图标 -->    <LinearLayout        android:id="@+id/viewGroup"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_gravity="bottom"        android:layout_marginBottom="40dp"        android:gravity="center_horizontal"        android:orientation="horizontal" >    </LinearLayout></FrameLayout>

3、将页面布局加入View的列表中,有几个布局页面就有几个圆点图片,通过for循环设置圆点图片的布局;

View Code
//添加到View的List中LayoutInflater inflater = getLayoutInflater();pageViews = new ArrayList<View>();pageViews.add(inflater.inflate(R.layout.item05, null));pageViews.add(inflater.inflate(R.layout.item06, null));pageViews.add(inflater.inflate(R.layout.item01, null));pageViews.add(inflater.inflate(R.layout.item02, null));pageViews.add(inflater.inflate(R.layout.item03, null));pageViews.add(inflater.inflate(R.layout.item04, null));// 有几个布局页面就有几个圆点图片imageViews = new ImageView[pageViews.size()];// 通过for循环设置圆点图片的布局for (int i = 0; i < pageViews.size(); i++) {    imageView = new ImageView(GuideViewTestActivity.this);    imageView.setLayoutParams(new LayoutParams(20, 20));    imageView.setPadding(20, 0, 20, 0);    imageViews[i] = imageView;    if (i == 0) {      // 默认选中第一张图片      imageViews[i].setBackgroundResource(R.drawable.page_indicator_focused);    } else{      imageViews[i].setBackgroundResource(R.drawable.page_indicator);    }    group.addView(imageViews[i]);}

4、数据适配器和页面切换事件监听器

5、在指引页面更改事件监听器(GuidePageChangeListener)中要确保在切换页面时下面的圆点图片也跟着改变

View Code
@Override  public void onPageSelected(int arg0) {        for (int i = 0; i < imageViews.length; i++) {             imageViews[arg0].setBackgroundResource(R.drawable.page_indicator_focused);                           if (arg0 != i) {                  imageViews[i].setBackgroundResource(R.drawable.page_indicator);             }         }}

工程下载:MyAndroidFlip.rar

来自:http://www.cnblogs.com/hanyonglu/archive/2012/04/07/2435589.html

渐显按钮的左右滑动效果

1、XML中,定义ViewFlipper控件,在里面加入多个页面布局,也可以用代码ViewFlipper的addView方法;

2、写push_left_in.xml、push_left_out.xml、push_right_in.xml、push_right_out.xml文件;

3、加入权限

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

4、在Activity中,初始化左右悬浮按钮,创建左右按钮,并设置监听事件(替换图片);

View Code
/**     * 初始化悬浮按钮     */    private void initImageButtonView() {        // 获取WindowManager        wm = (WindowManager) getApplicationContext().getSystemService("window");        // 设置LayoutParams相关参数        wmParams = new WindowManager.LayoutParams();        // 设置window type        wmParams.type = LayoutParams.TYPE_PHONE;        // 设置图片格式,效果为背景透明        wmParams.format = PixelFormat.RGBA_8888;        // 设置Window flag参数        wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL                | LayoutParams.FLAG_NOT_FOCUSABLE;        // 设置x、y初始值        wmParams.x = 0;        wmParams.y = 0;        // 设置窗口长宽数据        wmParams.width = 50;        wmParams.height = 50;        // 创建左右按钮        createLeftButtonView();        createRightButtonView();    }

5、重写onTouchEvent事件,用于触发显示和隐藏悬浮按钮事件(MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP);

6、利用线程,控制悬浮按钮的透明度(Alpha和invalidate)

工程下载:MyPageFliper.rar

来自:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html

更多相关文章

  1. Android事件传递流程
  2. android仿苹果分段按钮
  3. android 返回键 事件
  4. android 动态设置布局
  5. 新浪微博布局学习——活用Android的RelativeLayout
  6. android分开布局
  7. android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明
  8. Android下的Touch事件分发
  9. FloatingActionButton 浮动按钮

随机推荐

  1. Android(安卓)谷歌统计
  2. LinearLayout布局中将一个控件放在屏幕的
  3. Android(安卓)之 国际化与资源自适应
  4. Android(安卓)Activity跳转学习笔记
  5. Android(安卓)4.1 Jelly Bean adds Offli
  6. Android: PLEASE DO NOT USE A WAKE LOCK
  7. Android(安卓)内存管理工具
  8. Android(安卓)如何设置网关和路由
  9. Android(安卓)5.0WebView选择本地文件
  10. Android(安卓)UI布局练习1(垂直分布)