Android中闪屏实现方法小结(普通闪屏、倒计时闪屏、倒计时+动画闪屏)

一、项目目录结构

二、activity_main.xml代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context="com.zgs.SplashScreenByXml.MainActivity" >
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="主页面" />
</RelativeLayout> 

三、activity_splashscreen.xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/splash"
  android:orientation="vertical"
  android:id="@+id/ll_splashActivity">
  <TextView
    android:id="@+id/tv_countDown"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:layout_marginEnd="20dp"
    android:layout_marginTop="20dp"
    android:textColor="@android:color/white"
    android:textSize="20sp" />
</LinearLayout> 

四、SplashScreenActiviy.java代码

package com.zgs.SplashScreenByXml;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.zgs.CommonlySplashScreen.R;
public class SplashScreenActiviy extends Activity {
  private TextView tv_countDown;
  private LinearLayout ll_splashActivity;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 通过下面两行代码也可实现全屏无标题栏显示activity
    // getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    // this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_splashscreen);
    tv_countDown = (TextView) findViewById(R.id.tv_countDown);
    ll_splashActivity = (LinearLayout) findViewById(R.id.ll_splashActivity);
    /********************************************************************************
     *
     * 普通闪屏实现方式
     *
     * ******************************************************************************/
    /*new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(intent);
        finish();
      }
    }, 1000*4);*/
    /********************************************************************************
     *
     * 倒计时闪屏实现方式
     *
     * ******************************************************************************/
    /*MyCountDownTimer mc = new MyCountDownTimer(4000, 1000);
    mc.start();
    new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(intent);
        finish();
      }
    }, 1000*4);*/
    /********************************************************************************
     *
     * 倒计时+动画闪屏实现方式
     *
     * ******************************************************************************/
    MyCountDownTimer mc = new MyCountDownTimer(4000, 1000);
    mc.start();
    new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {
        //左移动画
        TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, -1, Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0);
        ta.setDuration(2000); //设置动画执行的时间
        ta.setFillAfter(true);//当动画结束后 动画停留在结束位置,然后等启动主界面后将其销毁
        ll_splashActivity.startAnimation(ta);
        ta.setAnimationListener(new AnimationListener() {
          @Override
          public void onAnimationStart(Animation arg0) {
          }
          @Override
          public void onAnimationRepeat(Animation arg0) {
          }
          @Override
          public void onAnimationEnd(Animation arg0) {
            Intent intent = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(intent);
            finish();
          }
        });
      }
    }, 1000*4);
  }
  class MyCountDownTimer extends CountDownTimer {
    //millisInFuture:倒计时的总数,单位毫秒
    //例如 millisInFuture=1000;表示1秒
    //countDownInterval:表示间隔多少毫秒,调用一次onTick方法()
    //例如: countDownInterval =1000;表示每1000毫秒调用一次onTick()
    public MyCountDownTimer(long millisInFuture, long countDownInterval) {
      super(millisInFuture, countDownInterval);
    }
    public void onFinish() {
      tv_countDown.setText("开始跳转……");
    }
    public void onTick(long millisUntilFinished) {
      tv_countDown.setText("倒计时(" + millisUntilFinished / 1000 + ")");
    }
  }
} 

五、MainActivity.java代码

package com.zgs.SplashScreenByXml;
import android.app.Activity;
import android.os.Bundle;
import com.zgs.CommonlySplashScreen.R;
public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //为了让闪屏结束后更自然的过度到主界面,去除主界面的启动动画,将下面函数的第一个参数设为0即可
    overridePendingTransition(0, 0);
  }
} 

六、操作演示

以上所述是小编给大家介绍的Android中闪屏实现方法小结(普通闪屏、倒计时闪屏、倒计时+动画闪屏),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C#双缓冲实现方法(可防止闪屏)

    本文实例讲述了C#双缓冲实现方法.分享给大家供大家参考,具体如下: // 该调用是 Windows.Forms 窗体设计器所必需的. InitializeComponent(); // TODO: 在 InitComponent 调用后添加任何初始化 this.SetStyle(ControlStyles.AllPaintingInWmPaint,true); //开启双缓冲 this.SetStyle(ControlStyles.DoubleBuffer,true); this.SetStyl

  • Android实现闪屏及注册和登录界面之间的切换效果

    在没给大家介绍正文之前先给大家说下实现思路: 先分别实现闪屏.注册界面.登录界面的活动,再用Intent将相关的活动连接起来,实现不同活动之间的跳转.此次试验代码较多,我只列出主要代码,详细的代码可用底部的下载链接下载. 一.实验效果图: 二.主要代码: (1)WelcomeActivity.Java(这部分代码实现的是第一页的欢迎页面) package com.example.flashscreendemo; import android.app.Activity; import androi

  • Android闪屏效果实现方法

    本文实例讲述了Android闪屏效果实现方法.分享给大家供大家参考,具体如下: 闪屏,就是SplashScreen,也可以说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后,自动关闭. android的实现非常简单,使用Handler对象的postDelayed方法就可以实现.在这个方法里传递一个Runnable对象和一个延迟的时间.该方法实现了一个延迟执行的效果,延迟的时间由第2个参数指定,单位是毫秒.第一个参数是Runnable对象,里面包含了延迟后需要执行的操作.demo代码如下:

  • Android实现闪屏欢迎界面

    闪屏:在打开App时,展示,持续数秒后,自动关闭,进入另外的一个界面,SplashActivity跳转到MainActivity Android中有三种实现方法 xml代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q

  • 详谈闪屏页相关处理

    根据功能模块划分(Android开发推荐此方法) - Activity   mobilesafe.activty     - 后台服务   mobilesafe.service     - 广播接受者 mobilesafe.receiver     - 数据库 mobilesafe.db.dao     - 对象(java bean) mobilesafe.domain/bean     - 自定义控件 mobilesafe.view     - 工具类 mobilesafe.utils    

  • EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)

    使用EasyUI时,有个经常遇到的问题,页面还没有渲染完成的时候,就展现了. 刚刚开始很混乱,等加载完成后,就好了. $.parser.onComplete,这个是在所有组件解析完成后执行的事件.其实这个事件很有用的.很多在布局用到easyui的时候总会出现一个问题.就是在一进入主界面的时候,页面的并不是马上就展现,而是会有一个混乱的过程,之后一闪就又好了. 其实这个就是因为easyui是在dom载入完毕之后才会对整个页面进行解析,当你们布局和组件使用的比较多的时候,完整的解析组件就需要一个过程

  • Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法

    1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有SurfaceView.结果,每次打开程序第一次进入到该Activity时都会闪屏黑一下.原因就出在SurfaceView. 详解: I think I found the reason for the black flash. In my case I'm using a SurfaceView inside a Fragment and dynamicall

  • android实现Splash闪屏效果示例

    本文实例讲述了android实现Splash闪屏效果的方法.分享给大家供大家参考,具体如下: Java代码: public class Splash extends Activity{ private final int SPLASH_DISPLAY_LENGHT = 1000; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCre

  • Android 实现闪屏页和右上角的倒计时跳转实例代码

    以前编程的时候,遇到倒计时的功能时,经常自己去写,但其实Android已经帮封装好了一个倒计时类CountDownTimer,其实是将后台线程的创建和Handler队列封装成为了一个方便的类调用. 闪屏页用到了handler和CountDownTimer类,还需配置一下Activity的主题,这里是:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 全屏主题的意思. 给大家展示下效果图: 代码如下所示: package

  • 背景,文字渐变(无闪屏)

    背景变换 2/3||c==0)&&c0) { c-- d[a]=1; } else d[a]=0; } return c } function do_it(a,c) { if ((d[a]==2&&c0)||c==255) { c--; d[a]=1; } if (a==3) { if (d[1]==0&&d[2]==0&&d[3]==0) flag=1 } return c } function disco() { if (flag==0)

随机推荐