android实现欢迎界面效果

现在许多流行的软件中都有欢迎界面,今天就介绍一下欢迎界面的制作,由于界面涉及到页面的滑动,因此要采用ViewPager,sdk在4.0一下的都要引入“android-support-v4.jar”这个包。

第一步:main.xml设计,其中ViewPager为多页显示控件,其中button是为了在最后一页显示开始按钮,其中android:visibility="invisible"是保证在其他页面不显示button,只有在最后一页才显示button,下面的linearlayout里的image是圆点展示当前页状态和总页数:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <android.support.v4.view.ViewPager
        android:id="@+id/guide_viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >
    </android.support.v4.view.ViewPager>
    <Button
      android:text="开始体验"
      android:id="@+id/startButton"
         android:layout_marginBottom="50dp"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="bottom|center_horizontal"
      android:visibility="invisible">
    </Button>
    <LinearLayout
            android:layout_width="fill_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="wrap_content"
          android:layout_height="wrap_content"
          android:scaleType="matrix"
          android:src="@drawable/page_now" />
            <ImageView
             android:id="@+id/page1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="10dp"
          android:scaleType="matrix"
          android:src="@drawable/page" />
            <ImageView
             android:id="@+id/page2"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginLeft="10dp"
          android:scaleType="matrix"
          android:src="@drawable/page" />
        </LinearLayout>

</FrameLayout>

第二步:创建MyPagerAdapter 继承PagerAdapter这个适配器比较简单,如下:

package com.crtk.adapter;

import java.util.ArrayList;

import android.R;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class PageviewAdapter extends PagerAdapter{
 private ArrayList<View> views;

 public PageviewAdapter(ArrayList<View> views){
  this.views = views;

 }
 //页面view
 public Object instantiateItem(View container, int position) {
  ((ViewPager)container).addView(views.get(position));

  return views.get(position);
 }

 @Override
 public int getCount() {
  return this.views.size();
 }
 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  return arg0 == arg1;
 }
 public void destroyItem(View container, int position, Object object) {
  ((ViewPager)container).removeView(views.get(position));
 }
 @Override
 public void finishUpdate(View arg0) {
  // TODO Auto-generated method stub

 }
 @Override
 public void restoreState(Parcelable arg0, ClassLoader arg1) {
  // TODO Auto-generated method stub

 }
 @Override
 public Parcelable saveState() {
  // TODO Auto-generated method stub
  return null;
 }
 @Override
 public void startUpdate(View arg0) {
  // TODO Auto-generated method stub

 }
}

第三步:写Activity,如下:

package com.crtk.main;

import java.util.ArrayList;
import java.util.List;

import com.crtk.adapter.PageviewAdapter;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class GuideActivity extends Activity implements OnPageChangeListener{

 static final int PAGE_NUM = 3;//欢迎界面共3页
 private ArrayList<View> views;//保存viewpager的各个view
 private ViewPager viewPager;
 private LayoutInflater inflater;
 private ImageView []dots; //小点数组

    private Intent intent ;
    private Button startButton;

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guide);
        inflater = LayoutInflater.from(this);  

        intent = new Intent(GuideActivity.this, MainActivity.class);
        //初始化page
        initPage();
        //初始化小点。。。
        initDots();

    }
    private void initPage(){     

         views = new ArrayList<View>(); 

 //guide_01,guide_02,guide_03 为3个欢迎页面,将其加入views数组中
         views.add(inflater.inflate(R.layout.guide_01, null));
         views.add(inflater.inflate(R.layout.guide_02, null));
         views.add(inflater.inflate(R.layout.guide_03, null));

         PageviewAdapter pageAdapter = new PageviewAdapter(views);
         viewPager = (ViewPager)findViewById(R.id.guide_viewpager);
        //绑定adapter
 viewPager.setAdapter(pageAdapter);

         //重要!!!绑定pageseleted等函数
         viewPager.setOnPageChangeListener(this);

         //绑定开始键,开始使用,只有在最后一页button才能显示
         startButton = (Button)findViewById(R.id.startButton);

         startButton.setOnClickListener(new  OnClickListener(){

   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    GuideActivity.this.startActivity(intent); //跳转activity
    GuideActivity.this.finish();
   }

         });

    }
    private void initDots(){
     dots = new ImageView[3];//底部小圆点数组
     //View guidePage = (View)findViewById();
     dots[0] = (ImageView) findViewById(R.id.page0);
     dots[1] = (ImageView) findViewById(R.id.page1);
     dots[2] = (ImageView) findViewById(R.id.page2);

    }

 @Override
 public void onPageScrollStateChanged(int arg0) {
  // TODO Auto-generated method stub

 }
 @Override
 public void onPageScrolled(int arg0, float arg1, int arg2) {
  // TODO Auto-generated method stub

 }
 @Override
 public void onPageSelected(int arg0) {
  // TODO Auto-generated method stub
  System.out.println("the page now is " + arg0);

  dots[arg0].setImageDrawable(getResources().getDrawable(R.drawable.page_now));
 //选中的页面设置小圆点为亮点,其余的都为暗点
  for (int i = 0; i < 3 ;i ++)
  {
   if (i == arg0) {continue;}
   else
   {
    dots[i].setImageDrawable(getResources().getDrawable(R.drawable.page));

   }
  }

  //如果切换到最后一页,显示开始button,其余的都隐藏
  if(arg0 == PAGE_NUM -1)
  {
   startButton.setVisibility(View.VISIBLE);//.setVisibility();
  }
 }
}

其他:上述只是简单实现了欢迎界面,有的blog里建议最后一页的开始button放在viewpager里,本人试了一下不是太好用,如果功能要求不是特别多,上述做法还是挺简单的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android设计登录界面、找回密码、注册功能

    本文实例为大家分享了Android 登录.找回密码.注册功能的实现代码,供大家参考,具体内容如下 1.数据库的设计 我在数据库中添加了两张表,一张表用来存储用户信息,诸如用户名,密码,手机号等,可任意添加.另一张表用来存储上一个登录用户的账户信息,我是为了方便才另外创建了一张表去存储,而且这张表我设计了它只能存储一条信息,每次的存储都是对上一条记录的覆盖.事实上,我尝试过在存储用户信息的那张表内添加一个标识,用来标记上一次登录的是哪一个帐号,但是这样做的话,每次改变标识都需要遍历整张表,十分的麻

  • 功能强大的登录界面Android实现代码

    前言 一个好的应用需要一个有良好的用户体验的登录界面,现如今,许多应用的的登录界面都有着用户名,密码一键删除,用户名,密码为空提示,以及需要输入验证码的功能.看着csdn上的大牛们的文章,心里想着也写一个登录界面学习学习,许多东西都是参考别的文章,综合起来的.废话少说,接下来看看是如何实现的. ps:由于懒得抠图.所以程序的图标很难看. 程序运行时的图示: 首先是布局文件没有什么难度. <RelativeLayout xmlns:android="http://schemas.androi

  • Android开发实例之登录界面的实现

    本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面.        miniTwitter登录界面效果图 先贴上最终要完成的效果图:   miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearLayout布局,关于背景渐变色就不再贴代码了,效果如下图所示: 第二部分,红色线区域内,

  • Android用户注册界面简单设计

    本文实例为大家分享了Android用户注册界面的设计,供大家参考,具体内容如下 I. 实例目标 设计一个用户注册界面,在其中要使用到一些基础控件,如 文本框.编辑框.按钮.复选框等控件 II. 技术分析 首先在布局文件中使用控件的标记来配置所需要的各个控件,然后在 主Activity中获取到该控件,给其添加监听器来监听其操作,最后在控制台输出所操作的内容. III. 实现步骤 在Eclipse中创建 Android项目,名称为 TestUserRegister .设计一个用户注册界面,在其中要使

  • Android实现简洁的APP登录界面

    今天需求要做一个所有app都有的登录界面,正好巩固一下我们之前学的基础布局知识. 先来看下效果图 1.布局的xml文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent&qu

  • android 引导界面的实现方法

    复制代码 代码如下: /** * 实现 * @author dujinyang * */ 顺序是: OneAcitivity  -->MainActivity -> TwoActivity 然后第2次进去就是:OneActivity -> TwoActivity 代码里都有注释的了,这里就不多说了.OneActivity的代码如下: [java] 复制代码 代码如下: package cn.djy.activity; import android.app.Activity; import

  • android开发之欢迎界面的小例子

    首先你得写好xml文件,这也是最主要的. 然后,在activity中加入一个线程,延时2秒,用来跳转到主界面. activity中线程代码如下:(顺便检测一下网络是否打开) [java] 复制代码 代码如下: @Override     protected void onStart() {         super.onStart();         if(<SPAN style="COLOR: #ff0000">isNetworkConnected()</SPA

  • Android登录界面的实现代码分享

    最近由于项目需要,宝宝好久没搞Android啦,又是因为项目需要,现在继续弄Android,哎,说多了都是泪呀,别的不用多说,先搞一个登录界面练练手,登录界面可以说是Android项目中最常用也是最基本的,如果这个都搞不定,那可以直接去跳21世纪楼啦. 废话不多说,先上效果图了,如果大家感觉还不错,请参考实现代码吧. 相信这种渣渣布局对很多人来说太简单啦,直接上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk

  • Android ListView仿微信聊天界面

    Android ListView仿聊天界面效果图的具体代码,供大家参考,具体内容如下 1.首先页面总布局(ListView + LinearLayout(TextView+Button)) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="

  • Android实现友好崩溃界面

    Android 的默认崩溃机制是 APP 闪退,然后显示一个[xxx 已停止运行]的对话框或 Toast,而崩溃的详情只有开发者在 Logcat 里才能看到,用户看到发生了这样的情况肯定一头雾水,的确,这样默认的异常处理方式很不友好,容易造成用户流失.我们现在要做的是,程序发生异常时,新开一个 Activity 向用户致歉,输出详细的异常信息,并提供将异常信息提交给开发者的功能. 首先,在 BaseActivity 里封装方法: /** * BaseActivity: 该抽象类定义所有活动均拥有

随机推荐