℃江让您从精通到入门:Android Studio 简单实现ViewPager,可做APP操作提示
来源:互联网 发布:电脑设计房子软件 编辑:程序博客网 时间:2024/06/07 09:24
- 前期准备,如下图:
- 第一步、先书写布局文件: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<ImageView> 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,然后就可以了。
0 0
- ℃江让您从精通到入门:Android Studio 简单实现ViewPager,可做APP操作提示
- Android Studio从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- Android Studio教程从入门到精通
- ubuntu 14.04安装cuda8.0
- 视图解析器InternalResourceViewResolver的使用 (3)
- 面向对象之职工信息类
- 技术转型产品学习笔记与理解[PRD]简述——第五天
- Redis储存hashes类型
- ℃江让您从精通到入门:Android Studio 简单实现ViewPager,可做APP操作提示
- Source Insight 3.5工具中添加.S等其它格式的文件
- servlet连接MySQL
- java集合工具类,并发集合类,阻塞容器类接口
- BZOJ2698: 染色
- 使用AndroidStudio中的CMake开发JNI
- 图片隐写术总结
- 392. Is Subsequence LeetCode
- Android Activity的生命周期