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

一、实现的效果图
欢迎界面:
引导界面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;
}
}
}
下一篇将会对整个引导界面的开发专题做一个完结篇,敬请期待。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# UI
# 人人网
# 引导界面
# Android Studio设置绘制布局时的视图
# Android Studio实现帧动画
# Android Studio实现补间动画
# Android UI设计与开发之实现应用程序只启动一次引导界面
# Android UI设计之AlertDialog弹窗控件
# Android项目开发之UI设计器
# android studio 项目 :UI设计高精度实现简单计算器
# 的人
# 自定义
# 渐隐
# 详细介绍
# 重写
# 在后面
# 大和
# 的是
# 实现了
# 这一
# 在这里
# 我会
# 也就
# 有一种
# 渐现
# 给人
# 会对
# 做一个
# 我将
# 下一篇
相关文章:
如何高效搭建专业期货交易平台网站?
如何访问已购建站主机并解决登录问题?
简单实现Android验证码
北京专业网站制作设计师招聘,北京白云观官方网站?
微课制作网站有哪些,微课网怎么进?
javascript基本数据类型及类型检测常用方法小结
如何在云指建站中生成FTP站点?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
开心动漫网站制作软件下载,十分开心动画为何停播?
成都网站制作报价公司,成都工业用气开户费用?
h5网站制作工具有哪些,h5页面制作工具有哪些?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
无锡营销型网站制作公司,无锡网选车牌流程?
招贴海报怎么做,什么是海报招贴?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站之星导航菜单设置与功能模块配置全攻略
如何在Golang中引入测试模块_Golang测试包导入与使用实践
制作网站的模板软件,网站怎么建设?
如何通过FTP空间快速搭建安全高效网站?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
高防服务器租用如何选择配置与防御等级?
如何快速搭建响应式可视化网站?
建站之星伪静态规则如何设置?
如何在景安服务器上快速搭建个人网站?
网站app免费制作软件,能免费看各大网站视频的手机app?
如何用免费手机建站系统零基础打造专业网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
魔方云NAT建站如何实现端口转发?
如何确保FTP站点访问权限与数据传输安全?
黑客如何利用漏洞与弱口令入侵网站服务器?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何通过虚拟主机快速完成网站搭建?
php json中文编码为null的解决办法
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何快速搭建高效WAP手机网站吸引移动用户?
如何在万网开始建站?分步指南解析
表情包在线制作网站免费,表情包怎么弄?
如何将凡科建站内容保存为本地文件?
宝塔面板如何快速创建新站点?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
网站制作网站,深圳做网站哪家比较好?
如何快速配置高效服务器建站软件?
如何在Windows 2008云服务器安全搭建网站?
一键网站制作软件,义乌购一件代发流程?
网站制作的步骤包括,正确网址格式怎么写?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何快速生成凡客建站的专业级图册?
如何通过FTP服务器快速搭建网站?
中山网站制作网页,中山新生登记系统登记流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。