启动界面  先记一下  

代码报错:SegmentFault


参考文章:http://blog.csdn.net/shaoduo/article/details/48351585  

安卓判断是否首次进入app,通过判断跳转欢迎引导界面和主界面

http://www.jb51.net/article/36190.htm

Android笔记之:App应用之启动界面SplashActivity的使用


http://blog.csdn.net/xueshanhaizi/article/details/51262528

 Android应用启动界面分析(Starting Window)


http://blog.csdn.net/qq_25047355/article/details/55260980

详解安卓从图表icon点击到APP启动界面加载流程

http://www.jb51.net/article/36190.htm

Android笔记之:App应用之启动界面SplashActivity的使用


https://www.cnblogs.com/xiongbo/archive/2011/05/17/splash.html

创建Android启动界面


https://www.jianshu.com/p/33a798ac3298  你所不知道的。。。


贴:

 MainActivity

public class MainActivity extends Activity {

    private ImageView imageView;

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

        imageView = findViewById(R.id.image);

        Intent intent = getIntent();

        if (intent!=null) {
            //注意Intent传递对象的方式
            Bitmap bitmap = intent.getParcelableExtra("Image");
            imageView.setImageBitmap(bitmap);
        }
    }
}
ancivity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    tools:context="net.lm.fire_controller.MainActivity">

    <ImageView
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

SplashScreenActivity
package net.lm.fire_controller;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Created by Administrator on 2018/1/11.
 */

public class SplashScreenActivity extends Activity {

    private static final String url = "http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1304/30/c0/20394669_1367251284721_320x480.jpg";

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

        new FetchDataTask().execute(url);
    }

    public class FetchDataTask extends AsyncTask<String,Void,Bitmap> {


        //执行前调用
        protected  void onPreExecut(){
            super.onPreExecute();
        }

        //执行后台任务
        @Override
        protected Bitmap doInBackground(String... strings) {
            Bitmap bitmap = null;

            try {
                //通过传入的图片地址,获取图片
                HttpURLConnection connection = (HttpURLConnection) (new URL(strings[0])).openConnection();
                InputStream is = connection.getInputStream();
                bitmap = BitmapFactory.decodeStream(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        //任务完成时调用

        @Override
        protected void onPostExecute(Bitmap result) {
            super.onPostExecute(result);

            //讲获取的数据通过Intent传送给MainActivity
            Intent intent = new Intent(SplashScreenActivity.this,MainActivity.class);
            //注意,intent传递图片时,图片对象大小不应该超过40k
            intent.putExtra("Image",result);
            startActivity(intent);

            //启动MainActivity后销毁自身
            finish();
        }
    }
}

splash_screen.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:gravity="center"
    android:orientation="vertical">


    <ImageView

        android:id="@+id/appImage"
        android:src="@mipmap/personal_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:gravity="center"
        android:text="Welcome to MS_Movie"
        android:layout_marginTop="15dp"
        android:textSize="30sp"
        android:textColor="#00ACED"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

项目清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.lm.fire_controller" >

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这里附一张,老师给的提醒:

/**  
 * 包名:net.hw.driver_test.ui
 * 类名:SplashScreenActivity
 * 描述:启动界面
 * 作者:华卫  
 * 日期:2017年1月4日  
 */
package net.hw.driver_test.ui;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import net.hw.driver_test.R;

public class SplashScreenActivity extends Activity {	
	/**
	 * 图标标签
	 */
	private ImageView ivIcon;
	/**
	 * 延迟时间
	 */
	private static final int DELAY_TIME = 4000;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 利用布局资源文件设置用户界面
		setContentView(R.layout.activity_splash_screen);
		
		// 通过资源标识获得控件实例
		ivIcon = (ImageView) findViewById(R.id.iv_icon);
		
		// 加载动画配置文件,启动动画
		ivIcon.startAnimation(AnimationUtils.loadAnimation(this, R.anim.animator));		

		// 利用消息处理器实现延迟跳转到登录窗口		
		new Handler().postDelayed(new Runnable() {
			@Override
			public void run() {
				// 启动登录窗口
				startActivity(new Intent(SplashScreenActivity.this, LoginActivity.class));
				// 关闭启动画面
				finish(); 
			}
		}, DELAY_TIME);
	}
}

后续(过了一个下午):

查看了一些资料,如果按照原本计划,应该是一个启动页面后再弹出登录注册框。。 为了多方面的考虑,想了一下,如果今后有类似的app做引导页,其实也是可以采用  三张图片滚动的形式,再跳转主界面,这样也是可以的。

一张启动页面用Splash Screen可以做出来,控制持续的时间 再跳转可以的。

我找到了简书上用RxJava做的引导页,尝试了一下,感觉用户体验应该相对来说也是可以,只是再加长了进入主界面的时间,多了缓冲和视觉上的效果。


这是现在做的一个实训项目,但是目前来说写这篇文章意义不大,只是一个拓展吧。以作今后开发之需。

RxJava实践之打造酷炫启动页

两步打造华丽丽的Android引导页(用到RxJava)

Android启动页优化,去黑屏实现秒启动

这是代码地址


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐