启动界面 先记一下
代码报错: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
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 {
//执行前调用
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();
}
}
}
这里附一张,老师给的提醒:
/**
* 包名: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启动页优化,去黑屏实现秒启动
这是代码地址