欢迎界面,自定义viewpager实现
2014-06-08 19:06
295 查看
三个布局都是以蓝色为背景,背景上加imageview控件,并添加图片,最后再设置图片的动画效果,用viewpager来切换每个布局
代码:
这里是主Activity
package com.example.android_unit10_7;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ViewPager pager;
private List<View> list;
private View view;
private ImageView imageView;
private Animation animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN); //去掉任务栏
pager = new ViewPager(this); //初始化viewpager
setContentView(pager); //加载进来viewpager
list = new ArrayList<View>(); //初始化list,,把三个布局加进viewpager
list.add(getLayoutInflater().inflate(R.layout.first, null));
list.add(getLayoutInflater().inflate(R.layout.second, null));
list.add(getLayoutInflater().inflate(R.layout.third, null));
MyAdapter adapter = new MyAdapter(getApplicationContext(), list); //初始化自定义的adapter
pager.setAdapter(adapter);
view = list.get(0);
imageView = (ImageView) view.findViewById(R.id.f_iv1);
animation = AnimationUtils.loadAnimation(this,R.anim.fengche); //设置动画效果,在xml文件设置动画
imageView.startAnimation(animation); // 开始动画
//因为只定义一个imageView,所以每次找一次控件初始化一次imageView,注意顺序
imageView = (ImageView) view.findViewById(R.id.f_iv2);
animation = AnimationUtils.loadAnimation(this, R.anim.f_iv2); //设置动画效果
imageView.startAnimation(animation); //// 开始动画
//监听滑动页面
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) { //对选择的布局监听
// TODO Auto-generated method stub
view = list.get(arg0); //选择界面布局,为了拿到布局内的控件
switch (arg0) {
case 0:
//风车效果
imageView = (ImageView) view.findViewById(R.id.f_iv1);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.fengche);
imageView.startAnimation(animation);
//文字效果
imageView = (ImageView) view.findViewById(R.id.f_iv2);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
break;
case 1:
//以下來年各個布局跟上面的一樣也可以隨意設置
imageView = (ImageView) view.findViewById(R.id.s_iv1);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.feiji);
imageView.startAnimation(animation);
imageView = (ImageView) view.findViewById(R.id.s_iv2);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
imageView = (ImageView) view.findViewById(R.id.s_iv3);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
break;
case 2:
imageView = (ImageView) view.findViewById(R.id.t_iv1);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
imageView = (ImageView) view.findViewById(R.id.t_iv3);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.xiaoguo);
imageView.startAnimation(animation);
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
}
这里是自定义的adapter,为viewpager填充
package com.example.android_unit10_7;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyAdapter extends PagerAdapter {
private List<View> list;
private Context context;
public MyAdapter(Context context, List<View> list) {
this.context = context;
this.list = list;
}
//页數
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
//判断是否翻页
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
//移除
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(list.get(position));
}
//添加页面
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(list.get(position)); //这里添加页面
return list.get(position);
}
}
这里只贴一个动画xml文件,set组合的效果,其他的分效果可以随意设置:在res文件夹下创建一个名字为anim的文件夹,在这里边写动画xml文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:repeatCount="infinite" >
<translate
android:duration="4000"
android:fromXDelta="0"
android:fromYDelta="0"
android:repeatCount="infinite"
android:toXDelta="100"
android:toYDelta="-100" />
<scale
android:duration="4000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:repeatCount="infinite"
android:toXScale="0.0"
android:toYScale="0.0" />
<rotate
android:duration="4000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="360" />
<alpha
android:duration="4000"
android:fromAlpha="1.0"
android:repeatCount="infinite"
android:toAlpha="0.0" />
</set>
资源下载页面点击打开链接
代码:
这里是主Activity
package com.example.android_unit10_7;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ViewPager pager;
private List<View> list;
private View view;
private ImageView imageView;
private Animation animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN); //去掉任务栏
pager = new ViewPager(this); //初始化viewpager
setContentView(pager); //加载进来viewpager
list = new ArrayList<View>(); //初始化list,,把三个布局加进viewpager
list.add(getLayoutInflater().inflate(R.layout.first, null));
list.add(getLayoutInflater().inflate(R.layout.second, null));
list.add(getLayoutInflater().inflate(R.layout.third, null));
MyAdapter adapter = new MyAdapter(getApplicationContext(), list); //初始化自定义的adapter
pager.setAdapter(adapter);
view = list.get(0);
imageView = (ImageView) view.findViewById(R.id.f_iv1);
animation = AnimationUtils.loadAnimation(this,R.anim.fengche); //设置动画效果,在xml文件设置动画
imageView.startAnimation(animation); // 开始动画
//因为只定义一个imageView,所以每次找一次控件初始化一次imageView,注意顺序
imageView = (ImageView) view.findViewById(R.id.f_iv2);
animation = AnimationUtils.loadAnimation(this, R.anim.f_iv2); //设置动画效果
imageView.startAnimation(animation); //// 开始动画
//监听滑动页面
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) { //对选择的布局监听
// TODO Auto-generated method stub
view = list.get(arg0); //选择界面布局,为了拿到布局内的控件
switch (arg0) {
case 0:
//风车效果
imageView = (ImageView) view.findViewById(R.id.f_iv1);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.fengche);
imageView.startAnimation(animation);
//文字效果
imageView = (ImageView) view.findViewById(R.id.f_iv2);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
break;
case 1:
//以下來年各個布局跟上面的一樣也可以隨意設置
imageView = (ImageView) view.findViewById(R.id.s_iv1);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.feiji);
imageView.startAnimation(animation);
imageView = (ImageView) view.findViewById(R.id.s_iv2);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
imageView = (ImageView) view.findViewById(R.id.s_iv3);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
break;
case 2:
imageView = (ImageView) view.findViewById(R.id.t_iv1);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.f_iv2);
imageView.startAnimation(animation);
imageView = (ImageView) view.findViewById(R.id.t_iv3);
animation = AnimationUtils.loadAnimation(
getApplicationContext(), R.anim.xiaoguo);
imageView.startAnimation(animation);
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
}
这里是自定义的adapter,为viewpager填充
package com.example.android_unit10_7;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyAdapter extends PagerAdapter {
private List<View> list;
private Context context;
public MyAdapter(Context context, List<View> list) {
this.context = context;
this.list = list;
}
//页數
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
//判断是否翻页
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
//移除
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(list.get(position));
}
//添加页面
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(list.get(position)); //这里添加页面
return list.get(position);
}
}
这里只贴一个动画xml文件,set组合的效果,其他的分效果可以随意设置:在res文件夹下创建一个名字为anim的文件夹,在这里边写动画xml文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:repeatCount="infinite" >
<translate
android:duration="4000"
android:fromXDelta="0"
android:fromYDelta="0"
android:repeatCount="infinite"
android:toXDelta="100"
android:toYDelta="-100" />
<scale
android:duration="4000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:repeatCount="infinite"
android:toXScale="0.0"
android:toYScale="0.0" />
<rotate
android:duration="4000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="360" />
<alpha
android:duration="4000"
android:fromAlpha="1.0"
android:repeatCount="infinite"
android:toAlpha="0.0" />
</set>
资源下载页面点击打开链接
相关文章推荐
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- Android ViewPager实现应用欢迎界面
- 【Android UI设计与开发】2.引导界面(二)使用ViewPager实现欢迎引导页面
- ViewPager实现页面切换 (包含App第一次登录时候的欢迎界面的展示)
- ViewPager实现应用的欢迎界面
- 导航页面ViewPager和欢迎界面的实现
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- ViewPager之引导界面---实现欢迎引导页面
- ViewPager之引导界面---实现欢迎引导页面
- viewpager实现进入程序之前的欢迎界面效果
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 利用 ViewPager 等,实现带小圆球的图片滑动,并且只有第一次安装app时才出现欢迎界面(图片)
- viewpager实现欢迎界面
- ViewPager实现应用的欢迎界面