博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android--多View切换viewpager
阅读量:4667 次
发布时间:2019-06-09

本文共 4987 字,大约阅读时间需要 16 分钟。

网上看到viewpager的多view动画切换,模仿制作了一个  学习到了。

先看效果图:

    

先看主类的layout

 

viewPager需要一个pagerAdapter的子类

package com.example.myview;import java.util.List;import android.support.v4.view.PagerAdapter; import android.view.View; import android.support.v4.view.ViewPager; public class MyAdapter extends PagerAdapter{ List
viewLists; public MyAdapter(List
lists) { viewLists = lists; } @Override public int getCount() { //获得size // TODO Auto-generated method stub return viewLists.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1; } @Override public void destroyItem(View view, int position, Object object) //销毁Item { ((ViewPager) view).removeView(viewLists.get(position)); } @Override public Object instantiateItem(View view, int position) //实例化Item { ((ViewPager) view).addView(viewLists.get(position), 0); return viewLists.get(position); } }

最后Main类

package com.example.myview;import java.util.List;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.support.v4.view.ViewPager;import android.view.View;import android.widget.TextView;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.DisplayMetrics;import android.graphics.Matrix;import android.widget.ImageView;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;public class MainActivity extends Activity {    private ViewPager viewPager; private ImageView imageView; private List
lists = new ArrayList
(); private MyAdapter myAdapter; private Bitmap cursor; private int offSet; private int currentItem; private Matrix matrix = new Matrix(); private int bmWidth; private Animation animation; private TextView textView1; private TextView textView2; private TextView textView3; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById (R.id.cursor); textView1 = (TextView) findViewById (R.id.textView1); textView2 = (TextView) findViewById (R.id.textView2); textView3 = (TextView) findViewById (R.id.textView3); lists.add(getLayoutInflater().inflate(R.layout.layout1, null)); lists.add(getLayoutInflater().inflate(R.layout.layout2, null)); lists.add(getLayoutInflater().inflate(R.layout.layout3, null)); initeCursor(); myAdapter = new MyAdapter(lists); viewPager = (ViewPager) findViewById (R.id.viewPager); viewPager.setAdapter(myAdapter); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int arg0) { //当滑动式,顶部的imageView是通过animation缓慢的滑动 // TODO Auto-generated method stub switch (arg0) { case 0: if (currentItem == 1) { animation = new TranslateAnimation( offSet * 2 + bmWidth, 0 , 0, 0); } else if(currentItem == 2) { animation = new TranslateAnimation( offSet * 4 + 2 * bmWidth, 0, 0, 0); } break; case 1: if (currentItem == 0) { animation = new TranslateAnimation( 0, offSet * 2 + bmWidth, 0, 0); } else if (currentItem == 2) { animation = new TranslateAnimation( 4 * offSet + 2 * bmWidth, offSet * 2 + bmWidth, 0, 0); } break; case 2: if (currentItem == 0) { animation = new TranslateAnimation( 0, 4 * offSet + 2 * bmWidth, 0, 0); } else if (currentItem == 1) { animation = new TranslateAnimation( offSet * 2 + bmWidth, 4 * offSet + 2 * bmWidth, 0, 0); } } currentItem = arg0; animation.setDuration(500); animation.setFillAfter(true); imageView.startAnimation(animation); } @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 } }); textView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub viewPager.setCurrentItem(0); } }); textView2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub viewPager.setCurrentItem(1); } }); textView3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub viewPager.setCurrentItem(2); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } private void initeCursor() { cursor = BitmapFactory.decodeResource(getResources(), R.drawable.cursor); bmWidth = cursor.getWidth(); DisplayMetrics dm; dm = getResources().getDisplayMetrics(); offSet = (dm.widthPixels - 3 * bmWidth) / 6; matrix.setTranslate(offSet, 0); imageView.setImageMatrix(matrix); //需要iamgeView的scaleType为matrix currentItem = 0; } }

类外还有3个layout:layout1,layout2, layout3是最简单,就是定义了不同的背景颜色,这里不给出。

转载于:https://www.cnblogs.com/xgjblog/p/3991345.html

你可能感兴趣的文章
su root 后还是不能使用useradd ,useradd 等命令
查看>>
URL.createObjectURL图片预览
查看>>
js 中exec、test、match、search、replace、split用法
查看>>
Android开发笔记(一)手势识别
查看>>
mybatis 复习笔记03
查看>>
zoj 3703(背包)
查看>>
一种新的子波域滤波算法
查看>>
cookie之三天免登录代码
查看>>
1043 幸运号码 数位DP
查看>>
js18
查看>>
2018-2019-2 20175308实验一 《Java开发环境的熟悉》实验报告
查看>>
如何设置WIN7自动登录(去除登录密码)
查看>>
关于bash中if语法结构的广泛误解(转)
查看>>
10G整数文件中寻找中位数或者第K大数
查看>>
操作手机数据库的uri
查看>>
Python小应用1 - 抓取网页中的链接地址
查看>>
三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
查看>>
HTML表格和列表笔记&练习<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>关于表格的一些练...
查看>>
Hadoop HBase概念学习系列之hbase shell中执行java方法(高手必备)(二十五)
查看>>
数据类型
查看>>