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

来源:互联网 发布:苏州cae软件培训 编辑:程序博客网 时间:2024/05/02 17:16

版权声明:本文为 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 0