Android中如何使用ViewPager实现类似laucher左右拖动效果

 现在很多Android应用在首次安装完都会有指引如何使用该应用的某些功能的指引界面,这样会获得很好的用户体验,能够帮助用户更好使用应用的某些功 能。其实该功能和Android主界面的 luncher 的功能完全一样的效果,可以实现左右拖动。

下面结合 ViewPager 的实例来展示如何实现该功能,先看下该Demo的结构图:

Android中如何使用ViewPager实现类似laucher左右拖动效果

注:ViewPager类是实现左右两个屏幕平滑地切换的一个类,是由Google 提供的, 使用ViewPager首先需要引入android-support-v4.jar这个jar包。其中工程项目中的 libs 文件夹下存放着 android-support-v4.jar这个jar包。drawable文件夹下包含有图片资源文件。

以下是工程中各个文件的源码:

loading.xml源码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <android.support.v4.view.ViewPager
        android:id="@+id/config_help_pager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:background="#000000"
        android:flipInterval="30"
        android:persistentDrawingCache="animation" />


</LinearLayout>

在LoadingActivity.java文件中写如下代码:
package com.example.appdemo;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;


public class LoadingActivity extends Activity{
    private ViewPager viewPager;
    private List<View> views;
    private Context context;
private int counter;
    
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
initViewPager();
}
/**
* 初始化滑动帮助页面视图
*/
private void initViewPager() {
// TODO Auto-generated method stub
context = getApplicationContext();
views = new ArrayList<View>();
viewPager = (ViewPager) findViewById(R.id.config_help_pager);
views.add(getPagerView(R.drawable.help_01));
views.add(getPagerView(R.drawable.help_02));
views.add(getPagerView(R.drawable.help_03));
views.add(getPagerView(R.drawable.help_04));
views.add(getPagerView(R.drawable.help_05));
views.add(getPagerView(R.drawable.help_06));
views.add(getPagerView(R.drawable.help_07));
viewPager.setAdapter(new ViewPagerAdapter(views));
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(new HelpPageChangeListener());
}

private class HelpPageChangeListener implements OnPageChangeListener {


@Override
public void onPageScrollStateChanged(int position) {
// TODO Auto-generated method stub
}


@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
if (arg0 == 6) {
counter++;
}
if (counter == 2) {
finish();
}
}


@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
}


}

/**
* 生成View

* @param id
* @return
*/
private View getPagerView(int id) {
View view = null;
view = new View(context);
LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
view.setLayoutParams(layoutParams);
view.setBackgroundResource(id);
return view;
}

private class ViewPagerAdapter extends PagerAdapter {
private List<View> views;


public ViewPagerAdapter(List<View> views) {
this.views = views;
}


@Override
public void destroyItem(View view, int position, Object obj) {
((ViewPager) view).removeView(views.get(position));
}


@Override
public Object instantiateItem(View view, int position) {
((ViewPager) view).addView(views.get(position), 0);
return views.get(position);
}


@Override
public int getCount() {
// TODO Auto-generated method stub
return views.size();
}


@Override
public boolean isViewFromObject(View view, Object obj) {
// TODO Auto-generated method stub
return view == obj;
}


}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值