前面一篇高仿launcher和墨迹左右拖动效果获得了很多朋友的好评,上一篇文章 主要是通过自定义ViewGroup实现的,有点麻烦。今天用ViewPager 这个类实现了同样的效果,这样代码更少,但是效果是一样的。ViewPager是实现左右两个屏幕平滑地切换的一个类,它是Google提供的。
使用ViewPager首先需要引入android-support-v4.jar这个jar包。具体ViewPager的用法,这里不做介绍,自己从网上搜索吧!
下面先看一下效果:
效果请自行体验和上一篇比较。下面上代码:
首先是layout下面的main.xml
<?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" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/viewGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:gravity="center_horizontal"
android:orientation="horizontal" >
</LinearLayout>
</RelativeLayout>
</FrameLayout>
接下来为每一个切换界面设置布局item1.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/guide01" >
</ImageView>
</LinearLayout>
其他的几个界面布局和这个一样 ,就是修改下背景图片,所以不再复述,
最后是核心代码:
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
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.view.Window;
import android.widget.ImageView;
public class MainActivity extends Activity {
ViewPager viewPager;
ArrayList<View> list;
ViewGroup main, group;
ImageView imageView;
ImageView[] imageViews;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = getLayoutInflater();
list = new ArrayList<View>();
list.add(inflater.inflate(R.layout.item1, null));
list.add(inflater.inflate(R.layout.item2, null));
list.add(inflater.inflate(R.layout.item3, null));
list.add(inflater.inflate(R.layout.item4, null));
list.add(inflater.inflate(R.layout.item5, null));
imageViews = new ImageView[list.size()];
ViewGroup main = (ViewGroup) inflater.inflate(R.layout.main, null);
// group是R.layou.main中的负责包裹小圆点的LinearLayout.
ViewGroup group = (ViewGroup) main.findViewById(R.id.viewGroup);
viewPager = (ViewPager) main.findViewById(R.id.viewPager);
for (int i = 0; i < list.size(); i++) {
imageView = new ImageView(MainActivity.this);
imageView.setLayoutParams(new LayoutParams(10,10));
imageView.setPadding(10, 0, 10, 0);
imageViews[i] = imageView;
if (i == 0) {
// 默认进入程序后第一张图片被选中;
imageViews[i].setBackgroundResource(R.drawable.guide_dot_white);
} else {
imageViews[i].setBackgroundResource(R.drawable.guide_dot_black);
}
group.addView(imageView);
}
setContentView(main);
viewPager.setAdapter(new MyAdapter());
viewPager.setOnPageChangeListener(new MyListener());
}
class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
// TODO Auto-generated method stub
((ViewPager) arg0).removeView(list.get(arg1));
}
@Override
public Object instantiateItem(View arg0, int arg1) {
// TODO Auto-generated method stub
((ViewPager) arg0).addView(list.get(arg1));
return list.get(arg1);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
}
class MyListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < imageViews.length; i++) {
imageViews[arg0]
.setBackgroundResource(R.drawable.guide_dot_white);
if (arg0 != i) {
imageViews[i]
.setBackgroundResource(R.drawable.guide_dot_black);
}
}
}
}
}
最后在提醒一句,不要忘记加入android-support-v4.jar这个jar包。
分享到:
相关推荐
使用ViewPager实现高仿launcher拖动效果.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
ViewPager 使用ViewPager实现高仿launcher拖动效果.rar
Android-Idea博客:Android中如何使用ViewPager实现类似laucher左右拖动效果源码
前面一篇高仿launcher和墨迹左右拖动效果获得了很多朋友的好评,上一篇文章主要是通过自定义ViewGroup实现的,有点麻烦。今天用ViewPager这个类实现了同样的效果,这样代码更少,但是效果是一样的。ViewPager是实现...
(安卓APP项目源代码)使用ViewPager实现左右滑动翻页(安卓APP项目源代码)使用ViewPager实现左右滑动翻页(安卓APP项目源代码)使用ViewPager实现左右滑动翻页(安卓APP项目源代码)使用ViewPager实现左右滑动翻页...
安卓app开发项目-使用ViewPager实现左右滑动翻页(源码).zip安卓app开发项目-使用ViewPager实现左右滑动翻页(源码).zip安卓app开发项目-使用ViewPager实现左右滑动翻页(源码).zip安卓app开发项目-使用ViewPager实现...
使用ViewPager来实现Tab效果,解决了ImageButton不可点击的Bug
使用ViewPager实现图片轮播效果,包括能自动轮播,左右无限制滑动,本人亲测,请放心下载
现在很多Android应用在首次安装完都会有指引如何使用该应用的某些功能的指引界面,这样会获得很好的用户体验,能够帮助用户更好使用应用的某些功能。 资源文件例子中附带android-support-v4.jar
高仿土巴兔选择装修风格的效果,这里通过自定义ViewPager来实现,为什么通过ViewPager来实现呢,一是ViewPager很容易实现切换动画效果,二是选择的那一项自动居中。项目地址:...
ViewPager实现3D画廊效果,ViewPager的加载动画,主要介绍了ViewPager的setPageTransformer方法。
通过ViewPager实现类似广告滚动的效果,滑动到哪一页小圆点也随之改变状态
Android利用ViewPager实现类微信的左右滑动效果,详细代码注解解析setOnPageChangeListener各参数意义以及使用方法
计算机毕业设计 - 使用ViewPager实现左右滑动翻页.,保证可靠运行,毕业生可参考,免费资源下载! 计算机毕业设计 - 使用ViewPager实现左右滑动翻页.,保证可靠运行,毕业生可参考,免费资源下载! 计算机毕业设计 -...
http://blog.csdn.net/meetings/article/details/52938579 源码+apk(里面有多余的类,我自己做测试用的,建议从Androidmanifest.xml开始看)
本例是用Viewpager在android中实现的页面滑动效果,将代码导入eclipse即可运行。
ViewPager实现一个Activity装载多个自定义layout文件,实现左右滑动 页面效果。 (实现电视遥控器效果。)
实现android 底部导航的方式有好几种如:fragment:、TabActivity、ViewGroup、viewPager等,这里介绍使用viewPager实现底部导航。 先说说使用viewPager实现的原因 1、fragment a 我们需要使用fragment的话,我们只能...
目前画廊效果基本上都是使用gallery方式,loft使用viewpager实现了这个效果,更加流畅,而且代码更加简洁,不用去处理scroll中adaper item的变化