• 前期准备,如下图:
  • 第一步、先书写布局文件:activity_main.xml文件如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent">    android.support.v4.view.ViewPager>RelativeLayout>
  • 第二步、在MainAvtivity中声明控件并使用自带的适配器操作List的方式,操作页面切换。MainActivity代码如下:
package com.example.dujiang0311.viewpager;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ViewPager mViewPager;    private int[] mImgId = new int[]{R.drawable.p1, R.drawable.p2, R.drawable.p3};    private List mList = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mViewPager = (ViewPager) findViewById(R.id.viewpager);        //为ViewPager添加动画效果        mViewPager.setPageTransformer(true,new ZoomOutPageTransformer());        mViewPager.setAdapter(new PagerAdapter() {            @Override            public void destroyItem(ViewGroup container, int position, Object object) {              container.removeView(mList.get(position));            }            @Override            public Object instantiateItem(ViewGroup container, int position) {                ImageView imageView = new ImageView(MainActivity.this);                imageView.setImageResource(mImgId[position]);                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);                container.addView(imageView);                mList.add(imageView);                return imageView;            }            @Override            public int getCount() {                return mImgId.length;            }            @Override            public boolean isViewFromObject(View view, Object object) {                return view == object;            }        });    }}
  • 动画切换类的书写(官方文档的例子):ZoomOutPageTransformer代码书写如下:
package com.example.dujiang0311.viewpager;/** * 项目名:  ViewPager * 包名:    com.example.dujiang0311.viewpager * 创建者:  Dujiang0311 * 创建时间:2017/4/23 19:38 * 描述:    TODO */import android.annotation.SuppressLint;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.View;public class ZoomOutPageTransformer implements ViewPager.PageTransformer{    private static final float MIN_SCALE = 0.85f;    private static final float MIN_ALPHA = 0.5f;    @SuppressLint("NewApi")    public void transformPage(View view, float position)    {        int pageWidth = view.getWidth();        int pageHeight = view.getHeight();        Log.e("TAG", view + " , " + position + "");        if (position < -1)        { // [-Infinity,-1)            // This page is way off-screen to the left.            view.setAlpha(0);        } else if (position <= 1) //a页滑动至b页 ; a页从 0.0 -1 ;b页从1 ~ 0.0        { // [-1,1]            // Modify the default slide transition to shrink the page as well            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));            float vertMargin = pageHeight * (1 - scaleFactor) / 2;            float horzMargin = pageWidth * (1 - scaleFactor) / 2;            if (position < 0)            {                view.setTranslationX(horzMargin - vertMargin / 2);            } else            {                view.setTranslationX(-horzMargin + vertMargin / 2);            }            // Scale the page down (between MIN_SCALE and 1)            view.setScaleX(scaleFactor);            view.setScaleY(scaleFactor);            // Fade the page relative to its size.            view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE)                    / (1 - MIN_SCALE) * (1 - MIN_ALPHA));        } else        { // (1,+Infinity]            // This page is way off-screen to the right.            view.setAlpha(0);        }    }}
  • 注意:如果想做闪屏的操作提示模块,可以在FlashActivity中加判断,判断用户是否是第一次打开APP,然后就可以了。

更多相关文章

  1. Android(安卓)数据库操作:Room
  2. android(8) ViewPager页面滑动切换
  3. Android对话框自定义标题 对话框标题美化操作
  4. Android(安卓)的输入框(EditText)设置密码可见/不可见切换的最简
  5. Android(安卓)Studio 可视化界面 (Design)和文本界面(Text)的切换
  6. Android多语言切换,字体风格,简体转繁体
  7. Android(安卓)studio APP开发 控制UI布局的方式,用代码书写UI界面
  8. Android之旅十五 android中的网络操作
  9. Mac电脑 android studio真机调试操作步骤

随机推荐

  1. Android屏幕解锁和点亮
  2. android将发送短信写入发件箱
  3. [置顶] Android如何保证一个线程最多只能
  4. Android(安卓)websocket长连接+点对点订
  5. Flutter遇到的坑
  6. Android(安卓)模拟器实现打电话
  7. python模拟android屏幕高频点击工具
  8. android模拟器中SDCard创建全解析
  9. Android中TextView
  10. android WebView超长图 实现截屏