【开发日记】初步实现闪屏效果

版权声明:本文为 WadeZhang 原创文章,可以随意转载,但必须在明确位置注明出处!!!

背景

下学期就要做毕业设计了,上学期已跟毕设老湿确定好了题目。我选择做一个文艺类的阅读App,其实这是我狠早之前就想着要
做的。上学期的时候刚接触Android开发没多久,曾试过动手做阅读类的App,后来做着做着感觉自己的能力还不够,就转去做了一个单机的工具类App。所以这个设想也就暂时搁置了。恰逢毕业设计来临,我就直接把这个当初的想法借着毕业设计实现了吧。我想趁着寒假期间就开始着手开发,到时开学后再慢慢跟那些文档周旋。

App简介

其实之所以想到要做这样一款App,是因为我自己早前在用一款挺文艺的App。一开始它是一个狠简洁的App,没有广告,每天定时推送一首歌,一段语录或诗词和一篇短文。后来发展壮大后,演变成了一款社交类型的App,有点类似微博那种形式去分享自己的动态什么的。之前每日推送的模块它还是保留了下来。虽然演变成社交形式了,但是不会像朋友圈那样喧嚣,基本上里面的用户还是在分享一些狠文艺的东西,给人的感觉还是狠小清新和有趣的。

所以,我对这款App是挺喜欢的,所以我主要就是以它为模板来进行开发。另外老湿还给我加了个些功能,主要是像传统阅读类软件那样的提供书籍阅读的功能,还有将文字转换为语音播放的功能(这个是老湿跟我说中老年人看文字阅读狠容易疲劳,而且眼睛不好使,现在有一种流行是直接听语音读文章)。

进度

今天主要初步实现了启动App时的闪屏效果,还有就是学会借助Gradle依赖开源项目并集中管理。

1.闪屏效果
核心思想就是将 闪屏Activity 作为App入口,并用Handler延迟指定时间后跳转到 主Activity。
(1)定义drawable
drawable下新建xml

把闪屏所要用的图片放进drawable文件夹。可以上tinypng网站压缩图片。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item><bitmap android:gravity="center" android:src="@drawable/splash_pic"/>
    </item>
</layer-list>

(2)自定义一个闪屏Activity主题
在styles.xml里自定义主题

    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/splash</item>
        <item name="android:windowFullscreen">true</item>
    </style>

说明:Theme.AppCompat.NoActionBar设置隐藏导航栏,android:windowBackground设置背景图片, android:windowFullscreen设置满屏。

(3)在AndroidManifest.xml中注册Activity

        <activity android:name=".SplashActivity" android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

说明:android:theme=”@style/SplashTheme”设置主题为刚才自定义的主题。

(4)Activity中用Handler实现延迟跳转主Activity

public class SplashActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Handler handler = new Handler();
        handler.postDelayed( new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                finish();
            }
        }, 3000);
    }
}

说明:亲自实测,如果不用Handler延迟执行跳转,而是直接startActivity,闪屏停留瞬间立刻调到主Activity。

2.Gradle集中管理
参考 帅比张 的博客http://stormzhang.com/android/2016/03/13/gradle-config/

(1)新建config.gradle
新建config.gradle

ext {

    android = [    compileSdkVersion : 24,
                   buildToolsVersion : "25.0.1",
                   applicationId      : "com.wadezhang.milkbottle",
                   minSdkVersion      : 15,
                   targetSdkVersion  : 24,
                   versionCode        : 1,
                   versionName        : "1.0"]

    dependencies = ["appcompat-v7"                       : 'com.android.support:appcompat-v7:24.2.1',
                    "ButterKnife"                        : 'com.jakewharton:butterknife:8.4.0',
                    "ButterKnife-AnnotationProcessor" : 'com.jakewharton:butterknife-compiler:8.4.0']
}

(2)在build.gradle中应用config.gradle
应用config.gradle

在顶部加上如下语句:

apply from: "config.gradle"

(3)修改app文件夹里的build.gradle文件
修改app文件夹里的build.gradle文件

可与自己原本的作比较:

apply plugin: 'com.android.application'

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion
    defaultConfig {
        applicationId rootProject.ext.android.applicationId
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile rootProject.ext.dependencies["appcompat-v7"]
    compile rootProject.ext.dependencies["ButterKnife"]
    annotationProcessor rootProject.ext.dependencies["ButterKnife-AnnotationProcessor"]
    testCompile 'junit:junit:4.12'
}

这样,不管依赖的开源项目怎么更新,我只要在config.gradle里改一下版本号,然后sync一下,就OK了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值