android启动第一个界面时即闪屏的核心代码(3种方式)

原创 2016年08月29日 16:44:09
闪屏,就是SplashScreen,也可以说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后,自动关闭。

 第一种方式:

android的实现非常简单,使用Handler对象的postDelayed方法就可以实现。在这个方法里传递一个Runnable对象和一个延迟的时间。该方法实现了一个延迟执行的效果,延迟的时间由第2个参数指定,单位是毫秒。第一个参数是Runnable对象,里面包含了延迟后需要执行的操作。

具体的实现步骤为:
1.实现一个闪屏窗体,设置背景图片等。
2.实现主窗体,当闪屏结束后会启动该窗体。
2.在闪屏窗体里的onCreate方法重载里,处理一个延迟执行页面跳转的操作。方法如上面的代码所示。在这里跳转到程序的主窗体。

这里只给出核心代码,ui很简单就不给了

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;

public class StarActivity extends Activity {

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

    // 闪屏的核心代码
    new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {
        Intent intent = new Intent(StarActivity.this,
            MainActivity.class); // 从启动动画ui跳转到主ui
        startActivity(intent);
        overridePendingTransition(R.anim.in_from_right,
            R.anim.out_to_left);
        StarActivity.this.finish(); // 结束启动动画界面

      }
    }, 4000); // 启动动画持续3秒钟
  }

}


第二种方式:

通过AlphaAnimation 动画,窗口的动画效果,淡入淡出,有些游戏的欢迎动画,logo的淡入淡出效果就使用AlphaAnimation。 

【基本语法】public AlphaAnimation (float fromAlpha, float toAlpha)

fromAlpha:开始时刻的透明度,取值范围0~1。
toAlpha:结束时刻的透明度,取值范围0~1。

案例描述:由浅入深的显示一张logo图片,显示3秒钟后跳转到登录页面。

准备的素材:一张logo图片,一张按钮背景图片

logo布局文件logo.xml如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:gravity="center"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <ImageView  
  9.         android:id="@+id/logo"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:src="@drawable/splash" />  
  13.   
  14. </LinearLayout>  

LogoActivity代码如下:

  1. public class LogoActivity extends Activity {  
  2.   
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         // 取消标题  
  7.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  8.         // 取消状态栏  
  9.         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  10.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  11.         setContentView(R.layout.logo);  
  12.         ImageView logoImage = (ImageView) this.findViewById(R.id.logo);  
  13.         AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);  
  14.         alphaAnimation.setDuration(3000);  
  15.         logoImage.startAnimation(alphaAnimation);  
  16.         alphaAnimation.setAnimationListener(new AnimationListener() {  
  17.   
  18.             @Override  
  19.             public void onAnimationStart(Animation animation) {  
  20.   
  21.             }  
  22.   
  23.             @Override  
  24.             public void onAnimationRepeat(Animation animation) {  
  25.   
  26.             }  
  27.   
  28.             @Override  
  29.             public void onAnimationEnd(Animation animation) {  
  30.                 Intent intent = new Intent();  
  31.                 intent.setClass(LogoActivity.this, LoginActivity.class);  
  32.                 startActivity(intent);  
  33.                 finish();  
  34.             }  
  35.         });  
  36.     }   

第三种方式:

 Observable.timer(2000, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread()).
                subscribe(new Action1<Long>() {
                    @Override
                    public void call(Long aLong) {
                        startActivity(new Intent(SplashActivity.this, MainActivity.class));
                        overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
                        finish();
                    }
                });

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android Logo,闪屏界面小结

几乎所有软件启动时都会有几秒钟的logo页面的等待时间,这个时间并不是我一开始认为的那样,仅仅是用来展示自己app的标志和宣传语句等 QQ空间,ES浏览器等,将logo页面改变为,展示广告的地方,为...

Android进阶篇之引导页系列之Splash闪屏Log

最近比较闲,所以会陆续出很多基础型Demo和高级点的Demo,,小伙伴们肯定又要骂了,孙子又来装B了 在android应用中,其实闪屏是一个很重要的前期 先上效果图:就是一个页面,没有Logo和公...

如何实现Android应用的启动画面(闪屏)?

Android的启动画面通常用来显示用户的某种形式的进度,在应用程序加载完全之前。有些人使用应用程序的启动动画,只是为了在几秒钟内显示其程序应用和公司的LOGO。不幸的是,和IOS相比,在Androi...

Android app启动闪屏主题设置

以农行掌上银行为例我们来谈谈应用启动后闪白屏,若干秒之后进入Splash界面(欢迎页面)的问题。 其实这种问题不只是农行APP的专利,其它很多APP都有这种问题,默认不对SplashActivity(...

【Android】android开发之splash闪屏页的四种实现方式,启动页的实现教程。

package xiaobingsplashmoremethod.qq986945193.xiaobingsplashmoremethod.xiaobingsplashmoremethod; imp...

Android集成银联支付,跳过大坑,快速运行官方给的demo

最近公司涉及到银联的相关支付,没办法,弄吧。于是我到他们官网上下载了开发包,下面是地址: https://open.unionpay.com/ajweb/product/detail?id=3,根据...

Android开发之闪屏实现

案例描述:由浅入深的显示一张logo图片,显示3秒钟后跳转到登录页面。 准备的素材:一张logo图片,一张按钮背景图片 logo布局文件logo.xml如下: <LinearLayout xml...

Activity切换时,可能出现的白色闪屏解决方案

今天在app上发现activity在切换的时候,背景的图片顶部出现了白色的闪烁,起初还认为是actionbar的设置的背景图片引起的,后来网上搜索了一番,发现不少人也遇到了问题。最后定位就是activ...

Android合理的使用闪屏

说起闪屏就会莫名的引爆我的小暴脾气,为什么这么说呢? 每次启动一个App我都要盯着手机屏幕傻不拉几的待上几秒钟,即使我知道了这个App的功能到底是TMD是做什么的。因此从内心深处,我对闪屏是抵触的。我...

Android 正确的闪屏方式。

From  https://www.bignerdranch.com/blog/splash-screens-the-right-way/ The very idea of the s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)