1.項目頁面

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.zhjy.kotlinmvp">
<!-- 擷取GSM網絡資訊狀态,如目前的網絡連接配接是否有效 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 允許通路Wi-Fi網絡狀态資訊 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允許擷取Wi-Fi網絡狀态改變資訊 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 通路網絡 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 讀取手機狀态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<!-- SD 卡讀寫權限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".ui.activity.SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar.FullScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 首頁面 -->
<activity
android:name=".ui.activity.MainActivity"
android:screenOrientation="portrait" />
<!-- 視訊播放詳情頁面 -->
<activity
android:name=".ui.activity.VideoDetailActivity"
android:configChanges="orientation|keyboardHidden|screenSize" />
<!-- 分類詳情 -->
<activity
android:name=".ui.activity.CategoryDetailActivity"
android:screenOrientation="portrait" />
<!-- 搜尋頁面 -->
<activity
android:name=".ui.activity.SearchActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
<!-- 個人首頁 -->
<activity
android:name=".ui.activity.ProfileHomePageActivity"
android:screenOrientation="portrait" />
<!-- 關于 -->
<activity
android:name=".ui.activity.AboutActivity"
android:screenOrientation="portrait" />
<!-- 觀看記錄 -->
<activity android:name=".ui.activity.WatchHistoryActivity"
android:screenOrientation="portrait"
/>
</application>
</manifest>
2.項目結構
3.項目配置
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' //kapt3插件
android {
compileSdkVersion 29
defaultConfig {
applicationId "com.zhjy.kotlinmvp"
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'androidx.multidex:multidex:2.0.1'
// Support庫
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.2.0'//design
implementation 'androidx.annotation:annotation:1.1.0'
// 網絡請求庫
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:converter-gson:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0'
// RxJava2
implementation "io.reactivex.rxjava2:rxjava:2.1.5"
implementation "io.reactivex.rxjava2:rxandroid:2.0.1"
// 底部菜單
implementation('com.flyco.tablayout:FlycoTabLayout_Lib:[email protected]') {
exclude group: 'com.android.support', module: 'support-v4'
}
implementation 'com.github.bumptech.glide:glide:4.9.0'
// APT dependencies(Kotlin内置的注解處理器)
kapt 'com.github.bumptech.glide:compiler:4.9.0'
//GlideOkHttp
implementation('com.github.bumptech.glide:okhttp3-integration:4.9.0') {
exclude group: 'glide-parent'
}
//smartRefreshLayout 下拉重新整理
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.3'
//Banner
implementation 'cn.bingoogolapple:bga-banner:[email protected]'
// 視屏播放器
implementation 'com.shuyu:GSYVideoPlayer:2.1.1'
//Logger
implementation 'com.orhanobut:logger:2.1.1'
//Google開源的一個布局控件
implementation 'com.google.android:flexbox:0.3.1'
//模糊透明 View
implementation 'com.github.mmin18:realtimeblurview:1.2.1'
//leakCanary
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
//騰訊 bugly
implementation 'com.tencent.bugly:crashreport:2.6.6.1'
//運作時權限
implementation 'pub.devrel:easypermissions:1.2.0'
// 一個友善在多種狀态切換的view
implementation 'com.classic.common:multiple-status-view:1.1'
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.71'
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
maven { url "https://jitpack.io" }
mavenCentral()
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
maven { url "https://jitpack.io" }
mavenCentral()
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
4.下載下傳位址
CSDN下載下傳位址