Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds-android
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
云深项目组
beyond-clouds-android
Commits
14fe91f2
Commit
14fe91f2
authored
Mar 11, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
加入DI支持
parent
da9e6c02
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
146 additions
and
22 deletions
+146
-22
app/build.gradle
+2
-0
app/src/main/AndroidManifest.xml
+1
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/BeyondApplication.java
+8
-2
app/src/main/java/cn/yunliyunwai/beyondclouds/MainActivity.java
+5
-2
app/src/main/java/cn/yunliyunwai/beyondclouds/api/AppApi.java
+4
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/BlogRepository.java
+4
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/UserRepository.java
+19
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/local/UserLocalDataSource.java
+10
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/remote/BlogCategoryService.java
+5
-4
app/src/main/java/cn/yunliyunwai/beyondclouds/data/remote/LoginRetrofitService.java
+5
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/remote/UserRemoteDataSource.java
+10
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/di/component/ApplicationComponent.java
+13
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/di/module/NetworkModule.java
+9
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/di/scope/ActivityScope.java
+11
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/di/scope/ActivityScoped.java
+13
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/domain/Category.java
+17
-3
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/HomeFragment.java
+2
-2
app/src/main/java/cn/yunliyunwai/beyondclouds/view/CommonPagerIndicator.java
+1
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/view/ScaleTransitionPagerTitleView.java
+1
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/viewmodel/HomeFragmentViewModel.java
+6
-6
No files found.
app/build.gradle
View file @
14fe91f2
...
@@ -56,4 +56,6 @@ dependencies {
...
@@ -56,4 +56,6 @@ dependencies {
implementation
'org.jetbrains:annotations:15.0'
implementation
'org.jetbrains:annotations:15.0'
implementation
'org.projectlombok:lombok:1.16.8'
//添加lombok依赖
implementation
'org.projectlombok:lombok:1.16.8'
//添加lombok依赖
implementation
'org.glassfish:javax.annotation:10.0-b28'
//java注解
implementation
'org.glassfish:javax.annotation:10.0-b28'
//java注解
implementation
'com.google.dagger:dagger:2.26'
annotationProcessor
'com.google.dagger:dagger-compiler:2.26'
}
}
app/src/main/AndroidManifest.xml
View file @
14fe91f2
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
package=
"cn.yunliyunwai.beyondclouds"
>
package=
"cn.yunliyunwai.beyondclouds"
>
<application
<application
android:name=
"cn.yunliyunwai.beyondclouds.Application"
android:name=
"cn.yunliyunwai.beyondclouds.
Beyond
Application"
android:allowBackup=
"true"
android:allowBackup=
"true"
android:icon=
"@mipmap/ic_launcher"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/Application.java
→
app/src/main/java/cn/yunliyunwai/beyondclouds/
Beyond
Application.java
View file @
14fe91f2
...
@@ -4,11 +4,13 @@ import androidx.annotation.NonNull;
...
@@ -4,11 +4,13 @@ import androidx.annotation.NonNull;
import
androidx.lifecycle.ViewModelStore
;
import
androidx.lifecycle.ViewModelStore
;
import
androidx.lifecycle.ViewModelStoreOwner
;
import
androidx.lifecycle.ViewModelStoreOwner
;
import
cn.yunliyunwai.beyondclouds.di.component.ApplicationComponent
;
import
cn.yunliyunwai.beyondclouds.di.component.DaggerApplicationComponent
;
import
cn.yunliyunwai.beyondclouds.util.TypeFaces
;
import
cn.yunliyunwai.beyondclouds.util.TypeFaces
;
public
class
BeyondApplication
extends
android
.
app
.
Application
implements
ViewModelStoreOwner
{
public
class
Application
extends
android
.
app
.
Application
implements
ViewModelStoreOwner
{
ApplicationComponent
applicationComponent
=
DaggerApplicationComponent
.
create
();
@Override
@Override
public
void
onCreate
()
{
public
void
onCreate
()
{
...
@@ -26,4 +28,8 @@ public class Application extends android.app.Application implements ViewModelSto
...
@@ -26,4 +28,8 @@ public class Application extends android.app.Application implements ViewModelSto
}
}
return
mViewModelStore
;
return
mViewModelStore
;
}
}
public
ApplicationComponent
getApplicationComponent
()
{
return
applicationComponent
;
}
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/MainActivity.java
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
;
package
cn
.
yunliyunwai
.
beyondclouds
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.MenuItem
;
import
android.view.MenuItem
;
...
@@ -14,6 +15,8 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
...
@@ -14,6 +15,8 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
javax.inject.Inject
;
import
cn.yunliyunwai.beyondclouds.base.BaseActivity
;
import
cn.yunliyunwai.beyondclouds.base.BaseActivity
;
import
cn.yunliyunwai.beyondclouds.databinding.ActivityMainBinding
;
import
cn.yunliyunwai.beyondclouds.databinding.ActivityMainBinding
;
import
cn.yunliyunwai.beyondclouds.ui.DynamicFragment
;
import
cn.yunliyunwai.beyondclouds.ui.DynamicFragment
;
...
@@ -26,15 +29,15 @@ import cn.yunliyunwai.beyondclouds.viewmodel.MainActivityViewModel;
...
@@ -26,15 +29,15 @@ import cn.yunliyunwai.beyondclouds.viewmodel.MainActivityViewModel;
public
class
MainActivity
extends
BaseActivity
<
MainActivityViewModel
,
ActivityMainBinding
>
implements
BottomNavigationView
.
OnNavigationItemSelectedListener
{
public
class
MainActivity
extends
BaseActivity
<
MainActivityViewModel
,
ActivityMainBinding
>
implements
BottomNavigationView
.
OnNavigationItemSelectedListener
{
private
static
final
String
TAG
=
MainActivity
.
class
.
getCanonicalName
();
private
List
<
Fragment
>
fragments
;
private
List
<
Fragment
>
fragments
;
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
colorStatusBar
);
StatusBarUtils
.
setWindowStatusBarColor
(
this
,
R
.
color
.
colorStatusBar
);
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
((
BeyondApplication
)
getApplication
()).
getApplicationComponent
().
inject
(
this
);
initBottomNavigation
(
savedInstanceState
);
initBottomNavigation
(
savedInstanceState
);
}
}
@Override
@Override
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/api/AppApi.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
api
;
public
class
AppApi
{
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/BlogRepository.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
data
;
public
class
BlogRepository
{
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/UserRepository.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
data
;
import
javax.inject.Inject
;
import
javax.inject.Singleton
;
import
cn.yunliyunwai.beyondclouds.data.local.UserLocalDataSource
;
import
cn.yunliyunwai.beyondclouds.data.remote.UserRemoteDataSource
;
@Singleton
public
class
UserRepository
{
private
final
UserLocalDataSource
userLocalDataSource
;
private
final
UserRemoteDataSource
userRemoteDataSource
;
@Inject
public
UserRepository
(
UserLocalDataSource
userLocalDataSource
,
UserRemoteDataSource
userRemoteDataSource
)
{
this
.
userLocalDataSource
=
userLocalDataSource
;
this
.
userRemoteDataSource
=
userRemoteDataSource
;
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/local/UserLocalDataSource.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
data
.
local
;
import
javax.inject.Inject
;
public
class
UserLocalDataSource
{
@Inject
public
UserLocalDataSource
()
{
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/
api/BlogCategoryApi
.java
→
app/src/main/java/cn/yunliyunwai/beyondclouds/
data/remote/BlogCategoryService
.java
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
api
;
package
cn
.
yunliyunwai
.
beyondclouds
.
data
.
remote
;
import
androidx.lifecycle.LiveData
;
import
androidx.lifecycle.LiveData
;
...
@@ -7,15 +7,16 @@ import java.util.concurrent.TimeUnit;
...
@@ -7,15 +7,16 @@ import java.util.concurrent.TimeUnit;
import
cn.yunliyunwai.beyondclouds.BuildConfig
;
import
cn.yunliyunwai.beyondclouds.BuildConfig
;
import
cn.yunliyunwai.beyondclouds.adapter.LiveDataCallAdapterFactory
;
import
cn.yunliyunwai.beyondclouds.adapter.LiveDataCallAdapterFactory
;
import
cn.yunliyunwai.beyondclouds.api.ApiResponse
;
import
cn.yunliyunwai.beyondclouds.domain.Category
;
import
cn.yunliyunwai.beyondclouds.domain.Category
;
import
okhttp3.OkHttpClient
;
import
okhttp3.OkHttpClient
;
import
retrofit2.Retrofit
;
import
retrofit2.Retrofit
;
import
retrofit2.converter.gson.GsonConverterFactory
;
import
retrofit2.converter.gson.GsonConverterFactory
;
import
retrofit2.http.GET
;
import
retrofit2.http.GET
;
public
interface
BlogCategory
Api
{
public
interface
BlogCategory
Service
{
static
BlogCategory
Api
getInstance
()
{
static
BlogCategory
Service
getInstance
()
{
OkHttpClient
.
Builder
clientBuilder
=
new
OkHttpClient
.
Builder
()
OkHttpClient
.
Builder
clientBuilder
=
new
OkHttpClient
.
Builder
()
.
connectTimeout
(
60
,
TimeUnit
.
SECONDS
);
.
connectTimeout
(
60
,
TimeUnit
.
SECONDS
);
if
(
BuildConfig
.
DEBUG
)
{
if
(
BuildConfig
.
DEBUG
)
{
...
@@ -29,7 +30,7 @@ public interface BlogCategoryApi {
...
@@ -29,7 +30,7 @@ public interface BlogCategoryApi {
.
addCallAdapterFactory
(
new
LiveDataCallAdapterFactory
())
.
addCallAdapterFactory
(
new
LiveDataCallAdapterFactory
())
.
addConverterFactory
(
GsonConverterFactory
.
create
())
.
addConverterFactory
(
GsonConverterFactory
.
create
())
.
build
()
.
build
()
.
create
(
BlogCategory
Api
.
class
);
.
create
(
BlogCategory
Service
.
class
);
}
}
@GET
(
"blog/categories"
)
@GET
(
"blog/categories"
)
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/data/remote/LoginRetrofitService.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
data
.
remote
;
public
interface
LoginRetrofitService
{
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/remote/UserRemoteDataSource.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
data
.
remote
;
import
javax.inject.Inject
;
public
class
UserRemoteDataSource
{
@Inject
public
UserRemoteDataSource
()
{
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/di/component/ApplicationComponent.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
di
.
component
;
import
javax.inject.Singleton
;
import
cn.yunliyunwai.beyondclouds.MainActivity
;
import
cn.yunliyunwai.beyondclouds.di.module.NetworkModule
;
import
dagger.Component
;
@Singleton
@Component
(
modules
=
{
NetworkModule
.
class
})
public
interface
ApplicationComponent
{
void
inject
(
MainActivity
mainActivity
);
}
app/src/main/java/cn/yunliyunwai/beyondclouds/di/module/NetworkModule.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
di
.
module
;
import
dagger.Module
;
@Module
public
class
NetworkModule
{
}
app/src/main/java/cn/yunliyunwai/beyondclouds/di/scope/ActivityScope.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
di
.
scope
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
javax.inject.Scope
;
@Scope
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
ActivityScope
{
}
app/src/main/java/cn/yunliyunwai/beyondclouds/di/scope/ActivityScoped.java
0 → 100644
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
di
.
scope
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
javax.inject.Scope
;
@Scope
@Documented
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
ActivityScoped
{
}
app/src/main/java/cn/yunliyunwai/beyondclouds/domain/Category.java
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
domain
;
package
cn
.
yunliyunwai
.
beyondclouds
.
domain
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.ToString
;
@Data
//@Data
@ToString
public
class
Category
{
public
class
Category
{
private
Integer
categoryId
;
private
Integer
categoryId
;
private
String
category
;
private
String
category
;
public
Integer
getCategoryId
()
{
return
categoryId
;
}
public
void
setCategoryId
(
Integer
categoryId
)
{
this
.
categoryId
=
categoryId
;
}
public
String
getCategory
()
{
return
category
;
}
public
void
setCategory
(
String
category
)
{
this
.
category
=
category
;
}
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/HomeFragment.java
View file @
14fe91f2
...
@@ -23,8 +23,8 @@ import java.util.List;
...
@@ -23,8 +23,8 @@ import java.util.List;
import
cn.yunliyunwai.beyondclouds.R
;
import
cn.yunliyunwai.beyondclouds.R
;
import
cn.yunliyunwai.beyondclouds.base.BaseFragment
;
import
cn.yunliyunwai.beyondclouds.base.BaseFragment
;
import
cn.yunliyunwai.beyondclouds.
components
.CommonPagerIndicator
;
import
cn.yunliyunwai.beyondclouds.
view
.CommonPagerIndicator
;
import
cn.yunliyunwai.beyondclouds.
components
.ScaleTransitionPagerTitleView
;
import
cn.yunliyunwai.beyondclouds.
view
.ScaleTransitionPagerTitleView
;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentCategoryBinding
;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentCategoryBinding
;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentHomeBinding
;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentHomeBinding
;
import
cn.yunliyunwai.beyondclouds.domain.Category
;
import
cn.yunliyunwai.beyondclouds.domain.Category
;
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/
components
/CommonPagerIndicator.java
→
app/src/main/java/cn/yunliyunwai/beyondclouds/
view
/CommonPagerIndicator.java
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
components
;
package
cn
.
yunliyunwai
.
beyondclouds
.
view
;
import
android.content.Context
;
import
android.content.Context
;
import
android.graphics.Canvas
;
import
android.graphics.Canvas
;
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/
components
/ScaleTransitionPagerTitleView.java
→
app/src/main/java/cn/yunliyunwai/beyondclouds/
view
/ScaleTransitionPagerTitleView.java
View file @
14fe91f2
package
cn
.
yunliyunwai
.
beyondclouds
.
components
;
package
cn
.
yunliyunwai
.
beyondclouds
.
view
;
import
android.content.Context
;
import
android.content.Context
;
import
android.graphics.Typeface
;
import
android.graphics.Typeface
;
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/viewmodel/HomeFragmentViewModel.java
View file @
14fe91f2
...
@@ -10,22 +10,22 @@ import androidx.lifecycle.ViewModelProvider;
...
@@ -10,22 +10,22 @@ import androidx.lifecycle.ViewModelProvider;
import
java.util.List
;
import
java.util.List
;
import
cn.yunliyunwai.beyondclouds.api.ApiResponse
;
import
cn.yunliyunwai.beyondclouds.api.ApiResponse
;
import
cn.yunliyunwai.beyondclouds.
api.BlogCategoryApi
;
import
cn.yunliyunwai.beyondclouds.
data.remote.BlogCategoryService
;
import
cn.yunliyunwai.beyondclouds.domain.Category
;
import
cn.yunliyunwai.beyondclouds.domain.Category
;
public
class
HomeFragmentViewModel
extends
ViewModel
{
public
class
HomeFragmentViewModel
extends
ViewModel
{
private
static
final
String
TAG
=
HomeFragmentViewModel
.
class
.
getCanonicalName
();
private
static
final
String
TAG
=
HomeFragmentViewModel
.
class
.
getCanonicalName
();
private
BlogCategory
Api
blogCategoryApi
;
private
BlogCategory
Service
blogCategoryService
;
static
class
HomeFragmentViewModelFactory
implements
ViewModelProvider
.
Factory
{
static
class
HomeFragmentViewModelFactory
implements
ViewModelProvider
.
Factory
{
@NonNull
@NonNull
@Override
@Override
public
<
T
extends
ViewModel
>
T
create
(
@NonNull
Class
<
T
>
modelClass
)
{
public
<
T
extends
ViewModel
>
T
create
(
@NonNull
Class
<
T
>
modelClass
)
{
return
(
T
)
new
HomeFragmentViewModel
(
BlogCategory
Api
.
getInstance
());
return
(
T
)
new
HomeFragmentViewModel
(
BlogCategory
Service
.
getInstance
());
}
}
}
}
public
HomeFragmentViewModel
(
BlogCategory
Api
blogCategoryApi
)
{
public
HomeFragmentViewModel
(
BlogCategory
Service
blogCategoryService
)
{
this
.
blogCategory
Api
=
blogCategoryApi
;
this
.
blogCategory
Service
=
blogCategoryService
;
}
}
public
static
ViewModelProvider
.
Factory
factory
=
new
HomeFragmentViewModelFactory
();
public
static
ViewModelProvider
.
Factory
factory
=
new
HomeFragmentViewModelFactory
();
...
@@ -38,7 +38,7 @@ public class HomeFragmentViewModel extends ViewModel {
...
@@ -38,7 +38,7 @@ public class HomeFragmentViewModel extends ViewModel {
}
}
public
void
initCategories
()
{
public
void
initCategories
()
{
blogCategory
Api
.
getBlogCategories
().
observeForever
(
new
Observer
<
ApiResponse
<
List
<
Category
>>>()
{
blogCategory
Service
.
getBlogCategories
().
observeForever
(
new
Observer
<
ApiResponse
<
List
<
Category
>>>()
{
@Override
@Override
public
void
onChanged
(
ApiResponse
<
List
<
Category
>>
response
)
{
public
void
onChanged
(
ApiResponse
<
List
<
Category
>>
response
)
{
if
(
response
.
getCode
()
==
0
)
{
if
(
response
.
getCode
()
==
0
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment