Android UI设计与开发之仿人人网V5.9.2最新版引导界面

这一篇我将会以人人网的引导界面为实例来展开详细的讲解,人人网的引导界面比较的新颖,不同于其他应用程序千篇一律的靠滑动来引导用户,而是以一个一个比较生动形象的动画效果展示在用户们的面前,有一种给人眼前一亮的感觉,话不多说,进入正题。

一、实现的效果图

欢迎界面:

引导界面1

引导界面 2

引导界面 3

二 、项目的目录结构

三、具体的编码实现

1、欢迎界面的xml布局,activity_welcome:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/v5_6_2_welcome"
 android:orientation="vertical" />

2、引导界面的xml布局,activity_guide.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" > 

 <ImageView
  android:id="@+id/iv_guide_picture"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1.0"
  android:scaleType="fitXY" /> 

 <LinearLayout
  android:id="@+id/ll_bottom_action_bar"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:orientation="horizontal"
  android:padding="7dip" > 

  <Button
   android:id="@+id/btn_register"
   android:layout_width="fill_parent"
   android:layout_height="45dip"
   android:layout_weight="1.5"
   android:background="@drawable/guide_btn_blue"
   android:gravity="center"
   android:singleLine="true"
   android:text="注 册"
   android:textColor="#FFFFFF"
   android:textSize="15.0sp" /> 

  <Button
   android:id="@+id/btn_look_at_the_people_i_know"
   android:layout_width="fill_parent"
   android:layout_height="45dip"
   android:layout_marginLeft="8dip"
   android:layout_marginRight="8dip"
   android:layout_weight="1.0"
   android:background="@drawable/guide_btn_white"
   android:gravity="center"
   android:singleLine="true"
   android:text="看看我认识的人"
   android:textColor="#000000"
   android:textSize="15.0sp" /> 

  <Button
   android:id="@+id/btn_login"
   android:layout_width="fill_parent"
   android:layout_height="45dip"
   android:layout_weight="1.5"
   android:background="@drawable/guide_btn_blue"
   android:gravity="center"
   android:singleLine="true"
   android:text="登 录"
   android:textColor="#FFFFFF"
   android:textSize="15.0sp" />
 </LinearLayout>
</RelativeLayout>

3、在这里还要创建两个xml资源文件文件来实现自定义按钮的效果,关于自定义按钮的效果实现我会在后面的UI专题详细介绍,这里就不在赘述,guide_btn_blue.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

 <item android:drawable="@drawable/v5_0_1_guide_blue_default" android:state_focused="true" android:state_pressed="false"/>
 <item android:drawable="@drawable/v5_0_1_guide_blue_press" android:state_pressed="true"/>
 <item android:drawable="@drawable/v5_0_1_guide_blue_default"/> 

</selector> 

guide_btn_white:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

 <item android:drawable="@drawable/v5_0_1_guide_black_default" android:state_focused="true" android:state_pressed="false"/>
 <item android:drawable="@drawable/v5_0_1_guide_black_press" android:state_pressed="true"/>
 <item android:drawable="@drawable/v5_0_1_guide_black_default"/> 

</selector>

4、然后是动画效果的xml资源文件,关于自定义动画效果的实现我也会在后面的UI专题中详细介绍,这里也就不再赘述渐入动画资源文件,guide_fade_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

 <alpha android:fromAlpha="0.0"
   android:toAlpha="1.0" /> 

</set>

渐隐动画资源文件,guide_fade_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

 <scale
  android:fillAfter="false"
  android:fromXScale="1.1"
  android:fromYScale="1.1"
  android:interpolator="@android:anim/decelerate_interpolator"
  android:pivotX="50.0%"
  android:pivotY="50.0%"
  android:toXScale="1.1"
  android:toYScale="1.1" /> 

 <alpha
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:fromAlpha="1.0"
  android:toAlpha="0.0" /> 

</set>

放大动画资源文件,guide_fade_in_scale:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

 <scale
  android:fillAfter="false"
  android:fromXScale="1.0"
  android:fromYScale="1.0"
  android:interpolator="@android:anim/decelerate_interpolator"
  android:pivotX="50.0%"
  android:pivotY="50.0%"
  android:toXScale="1.1"
  android:toYScale="1.1"/> 

</set>

5、开始启动的欢迎界WelcomeActivity.java:

package com.yangyu.myguideview03; 

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer; 

/**
 * @author yangyu
 * 功能描述:欢迎界面Activity(Logo)
 */
public class WelcomeActivity extends Activity { 

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_welcome); 

  /**
   * millisInFuture:从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数
   * countDownInterval:接收onTick(long)回调的间隔时间
   */
  new CountDownTimer(5000, 1000) {
   @Override
   public void onTick(long millisUntilFinished) {
   } 

   @Override
   public void onFinish() {
    Intent intent = new Intent(WelcomeActivity.this, GuideActivity.class);
    startActivity(intent);
    WelcomeActivity.this.finish();
   }
  }.start();
 }
}

6、引导界面,GuideActivity.java:

package com.yangyu.myguideview03; 

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast; 

/**
 * @author yangyu
 * 功能描述:导引界面(每张图片都执行的动画顺序,渐现、放大和渐隐,结束后切换图片和文字
 * 又开始执行 渐现、放大和渐隐,当最后一张执行完渐隐,切换到第一张,从而达到循环效果)
 */
public class GuideActivity extends Activity implements OnClickListener{
 //定义注册、登录和看看我认识的人按钮
 private Button btnRegister,btnLogin,btnIKnowPeople; 

 //显示图片的ImageView组件
 private ImageView ivGuidePicture; 

 //要展示的一组图片资源
 private Drawable[] pictures; 

 //每张展示图片要执行的一组动画效果
 private Animation[] animations; 

 //当前执行的是第几张图片(资源索引)
 private int currentItem = 0; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_guide); 

  initView(); 

  initData();
 } 

 /**
  * 初始化组件
  */
 private void initView(){
  //实例化ImageView引导图片
  ivGuidePicture = (ImageView) findViewById(R.id.iv_guide_picture); 

  //实例化按钮
  btnRegister = (Button) findViewById(R.id.btn_register);
  btnIKnowPeople = (Button) findViewById(R.id.btn_look_at_the_people_i_know);
  btnLogin = (Button) findViewById(R.id.btn_login); 

  //实例化引导图片数组
  pictures = new Drawable[] { getResources().getDrawable(R.drawable.v5_3_0_guide_pic1),getResources().getDrawable(R.drawable.v5_3_0_guide_pic2),
         getResources().getDrawable(R.drawable.v5_3_0_guide_pic3)}; 

  //实例化动画效果数组
  animations = new Animation[] { AnimationUtils.loadAnimation(this, R.anim.guide_fade_in),
          AnimationUtils.loadAnimation(this, R.anim.guide_fade_in_scale),
          AnimationUtils.loadAnimation(this, R.anim.guide_fade_out) };
 } 

 /**
  * 初始化数据
  */
 private void initData(){
  //给按钮设置监听
  btnRegister.setOnClickListener(this);
  btnIKnowPeople.setOnClickListener(this);
  btnLogin.setOnClickListener(this); 

  //给每个动画效果设置播放时间
  animations[0].setDuration(1500);
  animations[1].setDuration(3000);
  animations[2].setDuration(1500); 

  //给每个动画效果设置监听事件
  animations[0].setAnimationListener(new GuideAnimationListener(0));
  animations[1].setAnimationListener(new GuideAnimationListener(1));
  animations[2].setAnimationListener(new GuideAnimationListener(2)); 

  //设置图片动画初始化默认值为0
  ivGuidePicture.setImageDrawable(pictures[currentItem]);
  ivGuidePicture.startAnimation(animations[0]);
 } 

 /**
  * 实现了动画监听接口,重写里面的方法
  */
 class GuideAnimationListener implements AnimationListener {
  private int index; 

  public GuideAnimationListener(int index) {
   this.index = index;
  } 

  @Override
  public void onAnimationStart(Animation animation) {
  } 

  //重写动画结束时的监听事件,实现了动画循环播放的效果
  @Override
  public void onAnimationEnd(Animation animation) {
   if (index < (animations.length - 1)) {
    ivGuidePicture.startAnimation(animations[index + 1]);
   } else {
    currentItem++;
    if (currentItem > (pictures.length - 1)) {
     currentItem = 0;
    }
    ivGuidePicture.setImageDrawable(pictures[currentItem]);
    ivGuidePicture.startAnimation(animations[0]);
   }
  } 

  @Override
  public void onAnimationRepeat(Animation animation) { 

  } 

 } 

 @Override
 public void onClick(View v) {
   switch (v.getId()) {
   case R.id.btn_register:
    Toast.makeText(this, "点击了注册按钮", Toast.LENGTH_SHORT).show();
    break;
   case R.id.btn_look_at_the_people_i_know:
    Toast.makeText(this, "点击了我认识的人按钮", Toast.LENGTH_SHORT).show();
    break;
   case R.id.btn_login:
    Toast.makeText(this, "点击了登录按钮", Toast.LENGTH_SHORT).show();
    break;
   default:
    break;
   }
 }
}

下一篇将会对整个引导界面的开发专题做一个完结篇,敬请期待。

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

(0)

相关推荐

  • 很赞的引导界面效果Android控件ImageSwitcher实现

    本文实例为大家分享了Android控件ImageSwitcher实现引导界面的代码,供大家参考,具体内容如下 效果图: 布局代码: <?xml version="1.0" encoding="UTF-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent&

  • android 引导界面的实现方法

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

  • Android UI设计与开发之实现应用程序只启动一次引导界面

    这篇文章算是对整个引导界面开发专题的一个终结了吧,个人觉得大部分的引导界面基本上都是千篇一律的,只要熟练掌握了一个,基本上也就没什么好说的了,要是在今后的开发中遇到了更好玩,更有趣的引导界面,博主也会在这里及时的跟大家分享,今天的内容主要是教大家的应用程序只有在第一次启动的时候显示引导界面,以后在启动程序的时候就不再显示了. 其实要想实现这样的效果,只要使用SharedPreferences类,就会让程序变的非常简单,下面来详细介绍一下这个类的使用方法 一.SharedPreferences的详

  • Android UI设计与开发之ViewPager仿微信引导界面以及动画效果

    基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧.好的,话不多说,回归正题. 这篇要实现的是一个仿微信的动画效果,虽然这种效果的实现在网上到处都有,但是我还是想站在中低端开发者的角度去告诉大家是如何实现的,当然实现的方式有很多,我也只是列出了我认为实现起来比较方便的一种方法,希望大家能够受用. 一.实现的效果图 有图才有真相,上图先: 点击按钮后

  • Android UI设计与开发之ViewPager介绍和简单实现引导界面

    做Android开发加起来差不多也有一年多的时间了,总是想写点自己在开发中的心得体会与大家一起交流分享.共同进步,刚开始写也不知该如何下手,仔细想了一下,既然是刚开始写,那就从一个软件给人最直观的感受--UI设计开始写起吧,循序渐进,娓娓道来.博主在这里和大家一起学习,希望能多多支持,话不多说,下面就开始讲解UI设计的第一篇. 在讲解如何实现引导界面的效果之前,我想先详细介绍一下ViewPager类的使用和说明,因为这是开发引导界面最重要的类,没有之一. 一.ViewPager实现的效果图 二.

  • Android绘制炫酷引导界面

    一个超炫的引导界面,分享给大家 代码: MainActivity.java package com.bzu.gxs.webview1; import android.app.Activity; import android.os.Build; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Men

  • Android利用ViewPager实现用户引导界面效果的方法

    本文实例讲述了Android利用ViewPager实现用户引导界面效果.分享给大家供大家参考,具体如下: 我相信有很多朋友在装完软件首次打开时,有很多软件都有一个软件功能介绍, 例如刚装完微信打开它,有很多介绍微信功能的图片,并且在屏幕下方有很多小圆点提示你当前图片的位置. 今天我就来实现这么个功能 所实现的功能: 1.可以左右滑动功能图片. 2.图片的索引 看出当前图片所在的位置. 3.可循环滑动. 4.图片的索引带有动画效果. 本次学习主要是利用ViewPager实现用户引导界面 在这里,我

  • Android绘制炫酷的引导界面

    先看一下我们要开发的界面(三张图片,滑到最后一个会出现开始体验的Button,下面的小红点会跟着一起滑动): 首先看一下布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and

  • Android UI设计与开发之仿人人网V5.9.2最新版引导界面

    这一篇我将会以人人网的引导界面为实例来展开详细的讲解,人人网的引导界面比较的新颖,不同于其他应用程序千篇一律的靠滑动来引导用户,而是以一个一个比较生动形象的动画效果展示在用户们的面前,有一种给人眼前一亮的感觉,话不多说,进入正题. 一.实现的效果图 欢迎界面: 引导界面1 引导界面 2 引导界面 3 二 .项目的目录结构 三.具体的编码实现 1.欢迎界面的xml布局,activity_welcome: <?xml version="1.0" encoding="utf-

  • Android UI设计与开发之使用ViewPager实现欢迎引导页面

    本系列文章都会以一个程序的实例开发为主线来进行讲解,以求达到一个循序渐进的学习效果,这样更能加深大家对于程序为什么要这样写的用意,理论加上实际的应用才能达到事半功倍的效果,不是吗? 最下方有源码的下载地址,几乎源码的每一行都有注释,写的通俗易懂,非常清晰,如有不懂的可以留言,本博主一定尽心尽力,为大家答题解惑,希望大家多多支持,好的,话不多说,让我们回归到今天的正题. 一.实现的效果图 也许是养成了这样一个习惯,每次看别人的代码前,必须要先看实现的效果图达到了一个什么样的效果,是不是跟自己想要实

  • Android UI设计系列之自定义ListView仿QQ空间阻尼下拉刷新和渐变菜单栏效果(8)

    好久没有写有关UI的博客了,刚刚翻了一下之前的博客,最近一篇有关UI的博客:Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7) ,实现各种风格效果的对话框,在那篇博客写完后由于公司封闭开发封网以及其它原因致使博客中断至今,中断这么久很是惭愧,后续我会尽量把该写的都补充出来.近来项目有个需求,要做个和QQ空间类似的菜单栏透明度渐变和下拉刷新带有阻尼回弹的效果.于是花点时间动手试了试,基本上达到了QQ空间的效果,截图如下: 通过观察QQ空间的运行效果,发现当往上滚动时菜单

  • Android UI设计系列之自定义ViewGroup打造通用的关闭键盘小控件ImeObserverLayout(9)

    转载请注明出处:http://blog.csdn.net/llew2011/article/details/51598682 我们平时开发中总会遇见一些奇葩的需求,为了实现这些需求我们往往绞尽脑汁有时候还茶不思饭不香的,有点夸张了(*^__^*)--我印象最深的一个需求是在一段文字中对部分词语进行加粗显示.当时费了不少劲,不过还好,这个问题最终解决了,有兴趣的童靴可以看一下:Android UI设计之<六>使用HTML标签,实现在TextView中对部分文字进行加粗显示. 之前产品那边提了这样

  • Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7)

    虽然Android给我们提供了众多组件,但是使用起来都不是很方便,我们开发的APK都有自己的风格,如果使用了系统自带的组件,总是觉得和应用的主题不着边际并且看起来也不顺心,那我们就需要自定义了,为了方便大家对自定义组件的学习,我接下来准备了几遍有关自定义的Dialog的文章,希望对大家有帮助. 在开发APK中最常见的估计就数弹出对话框了,这种对话框按照按钮数量来分大致是三种:一个按钮,两个按钮,三个按钮.现在要讲的就是按照按钮数量分为以上三类吧(当然了可以有更多的按钮,只要你愿意). 自定义Di

  • Android UI设计系列之自定义TextView属性实现带下划线的文本框(4)

    在Android开发过程中,如果Android系统自带的属性不能满足我们日常开发的需求,那么就需要我们给系统控件添加额外的属性了.假如有个需求是实现带下划线的文本显示(下划线),如果不使用自定义属性的话实现起来也不太难(起码我认为的实现方式是有许多种的),今天就讲解一下如何使用自定义属性来实现上述带下划线的文本框吧.还好Android中自定义属性不是很复杂,也可以归纳为三步走吧. 老规矩,还是先贴出工程目录吧: 一.添加属性文件 在values文件夹中新建attrs.xml文件,在文件中新建属性

  • Android UI设计系列之自定义SwitchButton开关实现类似IOS中UISwitch的动画效果(2)

    做IOS开发的都知道,IOS提供了一个具有动态开关效果的UISwitch组件,这个组件很好用效果相对来说也很绚丽,当我们去点击开关的时候有动画效果,但遗憾的是Android上并没有给我们提供类似的组件(听说在Android4.0的版本上提供了具有动态效果的开关组件,不过我还没有去看文档),如果我们想实现类似的效果那该怎么办了呢?看来又得去自定义了. 公司的产品最近一直在做升级,主要做的就是把界面做的更绚丽更美观给用户更好的体验(唉,顾客是上帝......),其中的设置功能中就有开关按钮,原来的开

随机推荐