关于这个Demo的写法很多 我也献上一段 效果图如下

上代码

MainActivity

public class MainActivity extends Activity {

  // public List<File> Localphotos_List = new ArrayList<File>();
private static final int[] pics = { R.drawable.guide1, R.drawable.guide2, R.drawable.guide3, R.drawable.guide4, R.drawable.guide5 }; private ViewPager mViewPager;
private ImageView mPage0;
private ImageView mPage1;
private ImageView mPage2;
private ImageView mPage3;
private ImageView mPage4;
private Button start_bn; private boolean isFirste; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main); // getPhotos(); // isFirste =
// SharedPreferencesUtils.getFirstLoginState(this.getApplicationContext()); mViewPager = (ViewPager) findViewById(R.id.whatsnew_viewpager);
start_bn = (Button) findViewById(R.id.start_bn);
start_bn.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { }
}); mViewPager.setOnPageChangeListener(new MyOnPageChangeListener()); mPage0 = (ImageView) findViewById(R.id.page0);
mPage1 = (ImageView) findViewById(R.id.page1);
mPage2 = (ImageView) findViewById(R.id.page2);
mPage3 = (ImageView) findViewById(R.id.page3);
mPage4 = (ImageView) findViewById(R.id.page4); final ArrayList<ImageView> list = new ArrayList<ImageView>();
// 初始化引导图片列表
for (int i = 0; i < pics.length; i++) {
ImageView iv = new ImageView(this);
iv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
iv.setImageResource(pics[i]);
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
list.add(iv);
} /*
* if (isFirste) { mPage3.setVisibility(View.VISIBLE); list.add(view4); }
* else { mPage3.setVisibility(View.GONE); }
*/ PagerAdapter adapter = new PagerAdapter() { @Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
} @Override
public int getCount() {
return list.size();
} @Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(list.get(position));
} @Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(list.get(position));
return list.get(position);
}
}; mViewPager.setAdapter(adapter);
} public class MyOnPageChangeListener implements OnPageChangeListener { @Override
public void onPageScrollStateChanged(int arg0) { } @Override
public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override
public void onPageSelected(int arg0) {
switch (arg0) {
case 0:
display();
mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
break; case 1:
display();
mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
break; case 2:
display();
mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page));
break; case 3:
display();
mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page_now));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page)); /* mPage3.setVisibility(View.GONE);
mPage0.setVisibility(View.GONE);
mPage1.setVisibility(View.GONE);
mPage2.setVisibility(View.GONE);*/ /*
* SharedPreferencesUtils.saveFirstLoginState(Activity_WhatsNew.this.
* getApplicationContext()); File dbFile = new
* File(ResourceManager.DBDIR_PATH + "/userprofiledb.db"); if
* (!dbFile.exists()) { UserProfileDB.instance().createNew(); } new
* Handler().postDelayed(new Runnable() { public void run() {
* startActivity(new Intent(Activity_WhatsNew.this,
* Activity_LoginForFirst.class)); finish(); } }, 500);
*/
break; case 4:
/* mPage0.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage1.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage3.setImageDrawable(getResources().getDrawable(R.drawable.page));
mPage4.setImageDrawable(getResources().getDrawable(R.drawable.page_now));*/
hide();
break;
}
}
} private void hide() {
mPage0.setVisibility(View.GONE);
mPage1.setVisibility(View.GONE);
mPage2.setVisibility(View.GONE);
mPage3.setVisibility(View.GONE);
mPage4.setVisibility(View.GONE);
start_bn.setVisibility(View.VISIBLE);
} private void display() {
mPage0.setVisibility(View.VISIBLE);
mPage1.setVisibility(View.VISIBLE);
mPage2.setVisibility(View.VISIBLE);
mPage3.setVisibility(View.VISIBLE);
mPage4.setVisibility(View.VISIBLE);
start_bn.setVisibility(View.GONE);
} }

activity_main

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical" > <android.support.v4.view.ViewPager
android:id="@+id/whatsnew_viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
</android.support.v4.view.ViewPager> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="30dp"
android:gravity="center_horizontal" > <ImageView
android:id="@+id/page0"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="@drawable/page_now" /> <ImageView
android:id="@+id/page1"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="10dp"
android:background="@drawable/page" /> <ImageView
android:id="@+id/page2"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="10dp"
android:background="@drawable/page" /> <ImageView
android:id="@+id/page3"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="10dp"
android:background="@drawable/page" /> <ImageView
android:id="@+id/page4"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="10dp"
android:background="@drawable/page" />
</LinearLayout>
</LinearLayout> <Button
android:id="@+id/start_bn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="40dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:text="马上开始"
android:visibility="gone"
/> </FrameLayout>

Demo见github

https://github.com/huanyi0723/NoviceGuide

Android 新手引导的更多相关文章

  1. Android新手引导库推荐

    本文同步至http://javaexception.com/archives/31 介绍一波新手引导层的库.都是star数挺高的一些库. 1.NewbieGuide(国内开发者开发) Android ...

  2. 59.Android开源项目及库 (转)

    转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...

  3. 各种Android UI开源框架 开源库

    各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...

  4. android打飞机游戏、MVP句子迷App、悬浮窗、RxJava+Retrofit、加载动画、定制计划App等源码

    Android精选源码 微信打飞机 android进度设置加载效果源码 Android新手引导库EasyGuide MVP-好看又好用的句子迷客户端 XFloatView 一个简易的悬浮窗实现方案 a ...

  5. android文件选择器、仿淘宝编辑页面、新手引导层等源码

    Android精选源码 单片机和安卓应用,传感器 文件选择器 android滑动选择的尺子view源码 android视频录制 视频压缩的源码 仿今日头条顶部导航指示器源码 Android框架+常用控 ...

  6. Android开发之ViewPager做新手引导界面

    先看一下我们要开发的界面(三张图片,滑到最后一个会出现开始体验的Button,下面的小红点会跟着一起滑动): 首先看一下布局文件: <?xml version="1.0" e ...

  7. Android开发工具之Dash

    作为一名死coder,每天最常见的动作就是查看各种API文档,你一定也有过同时打开N个窗口(HTML.PDF.CHM),不停的在编辑器与文档之间切换的感受吧?怎么说呢,其实我很讨厌这种枯燥无味的动作, ...

  8. Android主流UI开源库整理(转载)

    http://www.jianshu.com/p/47a4a7b99364 标题隐含了两个层面的意思,一个是主流,另一个是UI.主流既通用,一些常规的按钮.Switch.进度条等控件都是通用控件,因此 ...

  9. android 项目学习随笔二(引导页 )

    1.引导页 1.定义灰色.红色圆点的shape XML文件 2.定义布局文件,利用相对布局文件定位,利用线性布局加载灰色圆点,imageview加载红色圆点 3.android.support.v4. ...

随机推荐

  1. 杭电1009-FatMouse' Trade

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. easyui tab 关闭

    <div id="mm" class="easyui-menu" style="width:150px;">        &l ...

  3. 如何生成excel文件作为图像识别结果

    如何生成excel文件作为图像识别结果 在进行大规模图像处理的时候,如果能够以表格的形式生成结果文件,将非常的直观.这个时候,选择excel作为结果输出文件,将是合适的. 查询相关资料,有很多关于ex ...

  4. 证码识别--type1

                                                                                 证码识别--type1 ​从最简单的开始.主要 ...

  5. 新蒂下午茶体基本版SentyTEA-Basic

    一.目前的最新版新蒂下午茶体包含了7600+常用汉字,每个字都是手写而成,是一套充满手写感的中文字体,轻松.惬意,如同慢饮一杯下午茶.SentyTEA-Basic.ttf  这个一个新蒂下午茶体基本版 ...

  6. django下的ckeditor 5.0 文本编辑器上传功能。

    完整的后台界面怎么可以没有文本编辑器,但是django的admin界面很疑惑,没有自带文本编辑器,好在网上有不少成型的库可以用 我用的是ckeditor编辑器,安装和配置我引用别人的博客 这篇博客配置 ...

  7. thinkphp nginx 配置

    thinkphp convention配置:'URL_MODEL' => '2', //URL模式 nginx rewrite配置: if (!-e $request_filename) { r ...

  8. SqlSever基础 len函数 计算前后都有空格的字符串的长度时

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  9. 【leetcode❤python】342. Power of Four

    #-*- coding: UTF-8 -*- class Solution(object):    def isPowerOfFour(self, num):        ""& ...

  10. 滤镜模糊效果,利用了文字阴影和透明。其实是抄的iSlider官网的

    <!DOCTYPE html> <html> <meta charset="UTF-8"> <meta name="viewpo ...