ViewPager的简单使用
1、布局文件
a、主布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="lpc.com.animation2demo.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="48dp"><TextViewandroid:id="@+id/tv1"android:text="苹果"android:gravity="center"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="match_parent" /><TextViewandroid:id="@+id/tv2"android:text="香蕉"android:gravity="center"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="match_parent" /><TextViewandroid:text="梨"android:id="@+id/tv3"android:gravity="center"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout><ImageViewandroid:id="@+id/iv"android:src="@mipmap/line"android:scaleType="matrix"android:layout_width="match_parent"android:layout_height="wrap_content" /><android.support.v4.view.ViewPagerandroid:id="@+id/viewPager1"android:layout_weight="1"android:layout_width="match_parent"android:flipInterval="30"android:layout_gravity="center"android:persistentDrawingCache="animation"android:layout_height="0dp"></android.support.v4.view.ViewPager></LinearLayout>

b、子布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:background="@drawable/a1"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

2、主Java文件
package lpc.com.animation2demo;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.ImageView;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity implements View.OnClickListener,ViewPager.OnPageChangeListener{private TextView tv1; //文本对象1private TextView tv2; //文本对象2private TextView tv3; //文本对象3private ImageView iv; //图片对象(用于移动条)private ViewPager vp; //Viewpager对象private ArrayList<View> viewArrayList; //创建一个View储存数组private int offset = 0; //移动条图片的偏移量private int currentIndex = 0; //当前页面private int bmpWidth ; //图片宽度private int one = 0; //移动条滑动一页的距离private int two = 0; //滑动条移动两页的距离@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {tv1 = (TextView) findViewById(R.id.tv1);tv2 = (TextView) findViewById(R.id.tv2);tv3 = (TextView) findViewById(R.id.tv3);iv = (ImageView) findViewById(R.id.iv);vp = (ViewPager) findViewById(R.id.viewPager1);//下划线动画的相关设置:bmpWidth = BitmapFactory.decodeResource(getResources(), R.mipmap.line).getWidth();// 获取图片宽度DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);int screenW = dm.widthPixels;// 获取分辨率宽度offset = (screenW / 3 - bmpWidth) / 2;// 计算偏移量Matrix matrix = new Matrix();matrix.postTranslate(offset, 0);iv.setImageMatrix(matrix);// 设置动画初始位置//移动的距离one = offset * 2 + bmpWidth;// 移动一页的偏移量,比如1->2,或者2->3two = one * 2;// 移动两页的偏移量,比如1直接跳3//往ViewPager填充View,同时设置点击事件与页面切换事件viewArrayList = new ArrayList<View>();LayoutInflater inflater = getLayoutInflater();viewArrayList.add(inflater.inflate(R.layout.view1,null,false));viewArrayList.add(inflater.inflate(R.layout.view2,null,false));viewArrayList.add(inflater.inflate(R.layout.view3,null,false));vp.setAdapter(new MyAdapter(viewArrayList));vp.setCurrentItem(0); //设置ViewPager当前页,从0开始算tv1.setOnClickListener(this);tv2.setOnClickListener(this);tv3.setOnClickListener(this);vp.addOnPageChangeListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.tv1:vp.setCurrentItem(0);break;case R.id.tv2:vp.setCurrentItem(1);break;case R.id.tv3:vp.setCurrentItem(2);break;}}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {Animation animation = null;switch (position){case 0:if (currentIndex == 1){animation = new TranslateAnimation(one,0,0,0);}else if (currentIndex == 2){animation = new TranslateAnimation(two,0,0,0);}break;case 1:if (currentIndex == 0){animation = new TranslateAnimation(offset,one,0,0);}else if (currentIndex == 2){animation = new TranslateAnimation(two,one,0,0);}break;case 2:if (currentIndex == 0){animation = new TranslateAnimation(offset,two,0,0);}else if (currentIndex == 1){animation = new TranslateAnimation(one,two,0,0);}break;}currentIndex = position;animation.setFillAfter(true);// true表示图片停在动画结束位置animation.setDuration(300); //设置动画时间为300毫秒iv.startAnimation(animation);//开始动画}@Overridepublic void onPageScrollStateChanged(int state) {}}
3、适配器文件
package lpc.com.animation2demo;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;/*** Created by Administrator on 2016/3/16.* 适配器*/public class MyAdapter extends PagerAdapter {//创建一个对象数组 存储Viewprivate ArrayList<View> viewArrayList;//空构造函数public MyAdapter() {}//初始化对象数组public MyAdapter(ArrayList<View> viewArrayList) {this.viewArrayList = viewArrayList;}//获取对象数组的大小@Overridepublic int getCount() {return viewArrayList.size();}//将视图转化成对象@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}//获取选定 对象数组并将其添加到viewpager中@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(viewArrayList.get(position));return viewArrayList.get(position);}//移除选定的对象数组对象@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(viewArrayList.get(position));}}
4、manifest文件
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="lpc.com.animation2demo"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
5、实现效果
ViewPager的简单使用的更多相关文章
- ViewPager的简单用法+适配器+监听器的介绍
之前的actionbar+fragment文章中写过viewpager的简单用法,但因为是融合的文章,所以今天把viewpager提取出来写了.方便查询浏览~ 思路: 1.在布局文件中设置viewpa ...
- viewpager的简单使用,以及ValueAnimator的用法示例
之前在网上看到一篇viewpager简单使用的例子程序,主要采用了上部标签button+中间指示作用的imageview+下部viewpager的结构,点击上部标签,或者滑动viewpager,均可以 ...
- Android随笔--使用ViewPager实现简单地图片的左右滑动切换
Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~: 使用了3个xml文件作为ViewPager的滑动page,布 ...
- ViewPager的简单例子
这个例子是按照官网上的例子写的,有点抄袭的嫌疑,但是自己单独写一下会加深自己的印象. 首先是MainAcitivity.xml: <LinearLayout xmlns:android=&quo ...
- ViewPager的简单使用说明
前提:工程中使用ViewPager,需要导入google提供的jar包(android-support-v4.jar). 要学习ViewPager的使用,建议直接看官方文档 Creating Swip ...
- Android开发之ViewPager的简单使用
ViewPager是V4包中的,如果你的编译器敲不出ViewPager,那么你就需要添加,看下面: 第一步:点击+号 第二步:选择第一个Library 第三步:添加这个包: 然后点击ok-->o ...
- Android ViewPager的简单实现
研究了两天ViewPager,看了几篇网上的帖子,但总的来说看得一头雾水,理不清头绪,偶然发现了一篇简单易懂的帖子,讲的调理比较清晰,原文链接附在文后. 在本例中使用ViewPager + Fra ...
- android学习ViewPager的简单使用
使用ViewPager需要引入android.support.v4.View.ViewPager这样的jar包,谷歌公司为解决当前版本碎片化的问题,提供的兼容的包.主要目的就是解决向下兼容问题. 1, ...
- TabLayout+ViewPager的简单使用
1. build.gradle文件中加入 compile 'com.android.support:design:22.2.0' 2.写Xml文件,注意TabLayout的三个属性 app:tab ...
随机推荐
- C++注意
断言assert是仅在Debug版本起作用的宏,它用于检查“不应该”发生的情况. 在函数的入口处,使用断言检查参数的有效性(合法性). 如果程序在assert处终止了,并不是说含有该assert的函数 ...
- Java温故系列之web项目复习
如果从外面导入项目 操作方法为: File->Import -->General-->Existing Project into Workspace 搭建sqlserver数据库连接 ...
- Android自学笔记:Git下载源代码
Info:做J2ME几年了,现在基本没有公司用了,是时候向Android领域进军了. 自学中,难免会有疏漏,有问题请及时提出,共同学习共同进步. 2014-10-13:初版 2014-10-14:添加 ...
- DataTable转List<dynamic>
DataTable转List<dynamic> 最近做的一个项目,MVC+Ado.net.没有ORM很不习惯.找到一个办法,DataTable转List<dynamic>,这样 ...
- dede文章调用时过滤调 body里面的style属性和值
dede 发布文章的时候会在里面的标签中添加一些style 属性,现在改网站想去掉这些属性和里面的值,因为文章太多所以就用下面的方法 \include\arc.listview.class.php 在 ...
- web.xml常用元素配置
tomcat服务器: tomcat是一个WEB服务器,所有的j2ee WEB程序可以在此处运行. tomcat服务器是一个符合j2ee标准的WEB服务器.则J2ee的EJB程序无法在此处运行. 如果要 ...
- Jquery day02
jquery day01回顾 语法: $("选择器") , $(dom对象) , $("<div>") 选择器: 基本:#id.ele ...
- 常见HTTP状态码(200、301、302、500等)
HTTP状态码,它是用以表示网页服务器HTTP响应状态的3位数字代码.状态码的第一个数字代表了响应的五种状态之一. 1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于 HTT ...
- WebServices(转)
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- 关于iOS开发证书的一些总结(很有用)
今天出了个问题,具体是这样的,我把本地的钥匙传里面的各种东西全部清空了,结果出现了各种不可预料到问题.花了一下午的时间反复的测试,终于把证书的一些问题理顺,然后在这里做一些总结. 先看张图片: 其中, ...