佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2628|回复: 9

Android Splash Screen 教学

[复制链接]
发表于 13-5-2017 01:31 AM | 显示全部楼层 |阅读模式
本帖最后由 jenlong 于 26-7-2017 10:59 PM 编辑

回顾上次,已经教大家怎么New  Project了。
还不会的可以回去看看才过来
https://cn.cari.com.my/forum.php ... d=3970604&fbshare=1


这次,不需要New Project了。因为上次你已经New了


第1步,上网找找你要的闪屏图画然后下载到你的电脑。
(PS : 不可以超过1920px,不要找太大的不然你的App会out of memory。)
我下载了这张。有件事要在这边提醒下,照片需要rename,不可以出现大字母,“-”,空格,因为这样Android Studio会出错。
11.PNG




第2步,copy & paste 在我们的drawable里面。
顺便介绍,drawable里面都是存照片的。
12.png




第3步,你将会看在这样的东西。
这边我把照片rename成mysplash。
13.PNG





第4步,接下来要创建一个叫SplashActivity的JavaClass,叫SplashActivity我们比较容易记着。
选我们的com.android.splashscreen 然后按右键 New --> Java Class
14.png




第5步,接是我第4步说的,名字叫SplashActivity,因为这样比较清楚也不会乱。
你可以跟我或者你写你喜欢的,不过也是不可以有空格。
15.PNG





第6步,你将会看到这样的画面出现,真真敲代码时间到了。
16.PNG




第7步,回到我们已经有的MainActivity里面去Copy这样字。
(PS : MainActivty是一创建Project就会在里面了的)
17.PNG




第8步,Paste在我们刚刚创建的SplashActivity里面。
看好来Paste,不要Paste错地方。
18.PNG
如果出现红色的情况就是说你的Code有事情,不能运行了。
不要怕,这只不过是小事来的。
如下图:
19.PNG


解决方法 :


把鼠标放在AppCompatActivity里面不要动,就会出现这样的东西,你只需要按Alt+Enter就好了 。
没出现这东西,可以重复那个动作。
20.png


或是点击这个红色的灯泡,然后再选import class
21.png


又或者最简单粗暴的方法,把这样代码直接打进去里面。
(PS : 如果使用这方法,注意不要打错地方,看好好我打在哪里再打)
import android.support.v7.app.AppCompatActivity;
22.PNG




第9步,选择layout再点击右键,New --> layout resource file
这货我们也叫xml
(PS : 如果找不到layout这东西的人可以双击res, 因为layout这TM的家伙藏在里面)
23.png




第10步,我们命名那东西叫activity_splash吧。
(PS : layout 名字也是不可以有大字母,空格,还有 "-" ) 心累啊,那么多规定
完成后点OK吧,你点cancel信不信我打你。
24.PNG


插曲 : 如果出现这样的画面,请选最下面的text按钮
9.PNG






第11步,你将会看到这样的东西出现。
左边可以算是目录吧,中间就是用来写UI的代码,右边呢就是Preview。
如果你的没有preview,可以点击在右边的preview。
(PS : preview 也就是用户能看到的东西 )
25.PNG




第12步,我们需要写一个ImageView来放我们刚刚下载好也copy在我们drawable里面的照片。
代码如下:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/mysplash" />

简单的解释下 :
layout_width 就是 ImageView 的宽度
layout_height 就是 ImageView 的高度
src 就是照片的 path ,因为照片是在drawable 里面,所以我们要 @drawable/你照片的名字
我的照片叫mysplash , 所以我要这样写 @drawable/mysplash

26.PNG


OK , 到这边我们看到preview很奇怪,因为手机是长(直)的,我的照片也是长(横)的。
这边我们要做的东西就是加
android:scaleType="centerCrop"
这东东在里面,就是叫程序去Crop这张照片来适应我们手机的荧幕大小。
(PS : 这边补充下,为什么我们不用drag & drop的方法来做UI,我要说的是谁叫我们Android这样多不同大小的screen size,干尼玛的厂家。用drag & drop 符合不了每个荧幕的需求,所以只能用match_parent在我们的width,也就是说荧幕多大我们就match罢了。)


不吐槽了,最后我们的代码会变这样
<ImageView
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/mysplash" />而我们的preview会这样。看了热血澎湃,KICK都来了。
27.PNG




第13步,回到我们的SplashActivity来,这货在你的com.xxx.splashscreen里面。
setContentView(R.layout.activity_main);
看到这行吧,把activity_main换成 activity_splash
(PS : 如果谁跟我的名字不一样的,你就要写你刚刚取得名字,因为我不会知道你取什么名字叻)
setContentView(R.layout.activity_splash);

完成后,我们写个Handler handler;
28.PNG


我猜到这货在有些人电脑肯定又变成红色了的。
一样,Alt + Enter 你会发现这次有两个东西。
我们要选 android.os 的那个,不要选错。
29.png


最简单粗暴的方法import android.os.Handler;
加这行在上面


OK,最后应该是这样的东西。照理说不可能还有红色,如果还有红色的东西,你就要看回上面的步骤,哪里错了。
30.PNG




第14步,我们刚创建了handler,现在我们要new Handler
像这样。
handler = new Handler();
setContentView(R.layout.activity_splash); 的下面。

还是不明白,我上图给你们看 (懂的直接跳去15)
31.PNG


再不懂我上代码给你们看 (懂的直接跳去15)
public class SplashActivity extends AppCompatActivity {

    Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        handler = new Handler();
    }

}
再不懂的我也不知道了




第15步,创建我们的Runnable,名字叫 Splash。在onCreate下面。
(PS : 什么都东西都会有名字,好像你我都有名字,现在是你帮你的孩子(代码)去名字 )
private Runnable Splash = new Runnable() {
    @Override
    public void run() {

    }
};
还是上图保险点。到这里应该就是这样。
原来这样截图,解释是很费力的
32.PNG




第16步,把这堆代码Copy & Paste 进去你的代码里面。
位子的话参考我的图。
33.PNG
@Override
protected void onResume() {
    super.onResume();
    if (handler != null) {         //注意我变我的名字叫Splash,如果有更改名字的人,改成自己的名字        
         handler.postDelayed(Splash, 1500);
    }
}

@Override
protected void onPause() {
    super.onPause();
    if (handler != null) {
        //注意我变我的名字叫Splash,如果有更改名字的人,改成自己的名字
        handler.removeCallbacks(Splash);
    }
}
这里面那个1500的意思是指,Delay多久时间,1000也就是一秒,1500自然就是1.5秒。
应该解释的很清楚了。




第17步,我们要在我们的Splash里面敲代码了。
Intent 的用法就是叫程序换面,现在我们从SplashActivity换取MainActivity
Intent intent = new Intent(XY
X 就是你现在的Activity,也就是SplashActivity (有换名字的,不跟我一样的,自己改)
Y 就是你要去的Activity,也就是MainActivity
跟我这样写就不会有错。
startActivity是启动这个Actvity。
finish的意思就是结束当前的Activity,也就是说结束SplashScreen。
完整的代码,如下:
private Runnable Splash = new Runnable() {
    @Override
    public void run() {
        Intent intent = new Intent(SplashActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
    }
};



插曲 : 如果出现红色,按Alt + Enter。 (没问题的直接跳过去18步)
34.PNG


还是不能的话,简单粗暴
import android.content.Intent;
Paste 这行在你的上面:在这位子
35.PNG




第18步,双击我们的mainfefts开启AndroidManifest。
如下图 :
36.PNG




第19步,注意这边:
这是APP一开始会运行的Activity,默认是MainActiivty,我们要把它改成SplashActivty。
意思就是说我们不要APP一开启就显示MainActvity我们要显示我们的SplashScreen先后在显示MainActivity。
37.PNG


更改成SplashActivity后,如图下:
38.PNG


( PS : 有点要注意的是每一个activity都要在AndroidManifest里面注册。怎么注册呢,看下面。)
就是这行。
<activity android:name=".MainActivity"></activity>
这样我们的,SplashActivity和MainActivity两个Actiivty都注册了。没注册的话你的APP报错会停止运行。
最后的代码样子应该就是这样了
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.splashscreen">
    <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity"></activity>
    </application>
</manifest>
应该不需要上图了。就快结束了。




第20步,找你的 Play 按键,我的在右上角
39.PNG
点 Play 按键选择自己的手机,再点OK就完事了。
40.PNG
见证奇迹的发生,全神贯注的看着你的手机,APP将会自动的在你手机里面启动。


你将会看到你的SplashScreen停留1.5秒,然后就启动MainActivity了。
Screenshot_20170513-014448.png Screenshot_20170512-231422.png

谢谢程序狗万岁。

有什么不明白的,可以在下面留言,我尽量的回复,也可以在FB上Inbox我。

FB : https://www.facebook.com/Guitar.LonG


FB GROUP : https://www.facebook.com/groups/941792849229141/




下一遍 :Android App 移除不太美观的 ActionBar。
https://cn.cari.com.my/forum.php?mod=viewthread&tid=3970729&fbshare=1




























回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 13-5-2017 01:36 AM | 显示全部楼层
保留
回复

使用道具 举报

发表于 13-5-2017 08:18 AM | 显示全部楼层
感谢LZ的无私分享。如果LZ肯付出免费教学,建议开个Blog让有上进心的学生可以学到。
感恩。
回复

使用道具 举报

 楼主| 发表于 13-5-2017 09:44 AM 来自手机 | 显示全部楼层
PPPTee 发表于 13-5-2017 08:18 AM
感谢LZ的无私分享。如果LZ肯付出免费教学,建议开个Blog让有上进心的学生可以学到。
感恩。

哪个平台好用?
回复

使用道具 举报

发表于 15-5-2017 08:24 AM | 显示全部楼层

好比如: Facebook 是免费又有大量的用者,如果得到很多的支持者和跟随者,赞多,很多赞助者都会。。。。。。。
LZ可否考虑考虑。
开了可以在这里添链接让大家有兴趣者可以知道哦。。。谢谢
回复

使用道具 举报

 楼主| 发表于 15-5-2017 11:38 AM | 显示全部楼层
PPPTee 发表于 15-5-2017 08:24 AM
好比如: Facebook 是免费又有大量的用者,如果得到很多的支持者和跟随者,赞多,很多赞助者都会。。。。。。。
LZ可否考虑考虑。
开了可以在这里添链接让大家有兴趣者可以知道哦。。。谢谢

FB 不能写太长,attach 照片也有点麻烦。
回复

使用道具 举报

Follow Us
发表于 16-5-2017 08:04 AM | 显示全部楼层
jenlong 发表于 15-5-2017 11:38 AM
FB 不能写太长,attach 照片也有点麻烦。

对不起LZ,我每回如果需要学什么东东时,都会在网上搜寻那有Blog关于它的地方。
就像这篇 “5分钟 搭建免费个人博客” 也是我在网上搜寻到的。
回复

使用道具 举报

发表于 22-5-2017 12:41 AM | 显示全部楼层
跑不到hello world 那page
第一个页面跑完了直接关闭apps了
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 22-5-2017 06:41 PM | 显示全部楼层
dmmmmm0724 发表于 22-5-2017 12:41 AM
跑不到hello world 那page
第一个页面跑完了直接关闭apps了

你可以去看Android Monitor,开始你的debug路程
回复

使用道具 举报

发表于 28-11-2018 04:51 PM | 显示全部楼层
虽然很罗嗦,不过很详细,也很生动,给个赞。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 27-12-2024 11:30 AM , Processed in 0.708344 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表