Android引导页动画的基本实现方法—ViewPager
来源:互联网 发布:阿里云200m 编辑:程序博客网 时间:2024/05/21 11:20
首先我们要实现进入应用的引导页,有很多的方法,今天对ViewPager进行学习。
一. ViewPager的介绍
参看官网对ViewPager的介绍,(ViewPager)布局管理器,允许用户通过数据页向左和右翻转.。你生成的视图显示的网页由PagerAdapter去实现。
以下代码是官网上的实例:
<android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.PagerTitleStrip android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" /> </android.support.v4.view.ViewPager>
现在需要创建一个layout文件,这个文件就是引导页的layout。当然我们需要注意的是这个引导页的layout应该为主activity的layout。
<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/vp" android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/btn" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击进入" /> </RelativeLayout>
这里面我们需要注意的是红色字体,最好是写成这样,要不容易导致报错。还有应该注意的是 Button的位置不要写在ViewPager的上面,因为我们添加
动画的时候很容易就显示不出来。
二. PagerAdapter的实现
正如上面我们说的,我们需要通过pagerAdapter去实现内容的填充。当然这个和listView很像的。我们只需要新建一个类,让它继承pagerAdapter就可以了。
public class GuideAdapter extends PagerAdapter { private List<View> views; private Context context; public GuideAdapter(List<View> views, Context context) { this.context = context; this.views = views; } @Override public Object instantiateItem(View container, int position) { ((ViewPager) container).addView(views.get(position)); return views.get(position); } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView(views.get(position)); } @Override public int getCount() { return views.size(); } @Override public boolean isViewFromObject(View view, Object o) { //注意该方法内的语句时下面的 return (view==o); }}
上面的代码只需要注意红颜色的部分。
三.引导界面的Activity的书写
当然了这个Activity应该是主Activity了,这样第一次进入时就会先执行这个Activity。
public class FirstGuideActivity extends Activity implements ViewPager.OnPageChangeListener { private ViewPager vp; private Button btn; private GuideAdapter adapter; private List mImagelist; private int[] imgId = {R.drawable.gu1, R.drawable.gu2, R.drawable.gu3}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.guidelayout); initListener(); initData(); } public void initListener() { vp= (ViewPager) findViewById(R.id.vp); btn= (Button) findViewById(R.id.btn); vp.setOnPageChangeListener(this); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startLauncher(); } }); } public void initData() { mImagelist = new ArrayList<>(); for (int i = 0; i < imgId.length; i++) { ImageView imageView = new ImageView(this); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setImageResource(imgId[i]); mImagelist.add(imageView); } //添加引导页 adapter = new GuideAdapter(mImagelist, this); vp.setAdapter(adapter); } @Override public void onPageScrolled(int i, float v, int i2) { if (i == imgId.length - 1) { btn.setVisibility(View.VISIBLE); //延迟动画处理 AlphaAnimation aa = new AlphaAnimation(0, 1f); aa.setDuration(800); btn.startAnimation(aa); } else { btn.setVisibility(View.GONE); } } //跳转主页面方法 public void startLauncher(){ Intent intent = new Intent(FirstGuideActivity.this, MainActivity.class); startActivity(intent); finish(); } @Override public void onPageSelected(int i) { } @Override public void onPageScrollStateChanged(int i) { }四.AndroidManifest中应该注意的
我们可以看见这个引导页是 没有标题栏的 这个需要我们在这个Activity里面添加相应的标签
android:theme="@android:style/Theme.NoTitleBar.Fullscreen当然这时候很容易报错:java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
拥护我们的activity一定是继承了兼容包中的类,比如我这里就无意中继承了ActionBarActivity,它来自android.support.v7.app.ActionBarActivity。所以就要使用与其配合的AppCompat的theme才行,所以我们的Activity可以直接集成Activity就可以避免上面的报错。
0 0
- Android引导页动画的基本实现方法—ViewPager
- Android基础控件——ViewPager实现带有动画的引导页
- Android ViewPager程序引导页的实现
- Android ViewPager实现引导页
- android引导页viewpager实现
- Android ViewPager实现引导页
- Android进阶篇之引导页系列之ViewPager实现Animation动画引导页
- Android进阶篇之引导页系列之ViewPager实现Animation动画引导页
- Android进阶篇之引导页系列之ViewPager实现Animation动画引导页
- Android实现带Tab页引导的ViewPager
- Android实现带Tab页引导的ViewPager
- Android实现带Tab页引导的ViewPager
- Android实现带Tab页引导的ViewPager
- android进阶篇之引导页系列之viewpager实现Animation动画效果
- android通过viewpager实现引导页效果
- android使用ViewPager实现欢迎引导页
- android使用ViewPager实现引导页效果
- ViewPager实现引导页
- 微信小程序春天来了 安卓程序员进入冬眠?
- [Android 知识点] RxAndroid的使用(五)(待更新)
- DirectShow学习笔记总结
- kafka扩容
- [IO系统]01 IO子系统
- Android引导页动画的基本实现方法—ViewPager
- Laravel研究笔记一(Laravel的安装)
- ADB server didn't ACK * failed to start daemon *
- iptables 命令 源代码分析
- 多线程锁升级解决方案(JDK1.5及以后)
- 【BZOJ 2563】 阿狸和桃子的游戏 脑洞+贪心
- 计算机网络第五版谢希仁答案
- nyoj-亡命逃窜(queue函数的使用)
- 移动端调试利器