版权声明:本文为 WadeZhang 原创文章,可以随意转载,但必须在明确位置注明出处!!!
背景
下学期就要做毕业设计了,上学期已跟毕设老湿确定好了题目。我选择做一个文艺类的阅读App,其实这是我狠早之前就想着要
做的。上学期的时候刚接触Android开发没多久,曾试过动手做阅读类的App,后来做着做着感觉自己的能力还不够,就转去做了一个单机的工具类App。所以这个设想也就暂时搁置了。恰逢毕业设计来临,我就直接把这个当初的想法借着毕业设计实现了吧。我想趁着寒假期间就开始着手开发,到时开学后再慢慢跟那些文档周旋。
App简介
其实之所以想到要做这样一款App,是因为我自己早前在用一款挺文艺的App。一开始它是一个狠简洁的App,没有广告,每天定时推送一首歌,一段语录或诗词和一篇短文。后来发展壮大后,演变成了一款社交类型的App,有点类似微博那种形式去分享自己的动态什么的。之前每日推送的模块它还是保留了下来。虽然演变成社交形式了,但是不会像朋友圈那样喧嚣,基本上里面的用户还是在分享一些狠文艺的东西,给人的感觉还是狠小清新和有趣的。
所以,我对这款App是挺喜欢的,所以我主要就是以它为模板来进行开发。另外老湿还给我加了个些功能,主要是像传统阅读类软件那样的提供书籍阅读的功能,还有将文字转换为语音播放的功能(这个是老湿跟我说中老年人看文字阅读狠容易疲劳,而且眼睛不好使,现在有一种流行是直接听语音读文章)。
进度
今天主要初步实现了启动App时的闪屏效果,还有就是学会借助Gradle依赖开源项目并集中管理。
1.闪屏效果
核心思想就是将 闪屏Activity 作为App入口,并用Handler延迟指定时间后跳转到 主Activity。
(1)定义drawable
把闪屏所要用的图片放进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主题
<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
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
在顶部加上如下语句:
apply from: "config.gradle"
(3)修改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了。