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
410d9662
Commit
410d9662
authored
Mar 14, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
指示器优化
parent
37371771
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
174 additions
and
23 deletions
+174
-23
app/src/main/java/cn/yunliyunwai/beyondclouds/adapter/CategoryFragmentAdapter.java
+4
-3
app/src/main/java/cn/yunliyunwai/beyondclouds/adapter/HomeNavigatorAdapter.java
+6
-6
app/src/main/java/cn/yunliyunwai/beyondclouds/data/model/CommonCategory.java
+109
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/BlogRepositoryImpl.java
+5
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/IBlogRepository.java
+2
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/local/dao/BlogDao.java
+1
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/remote/BlogApiStore.java
+4
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/HomeFragment.java
+5
-4
app/src/main/java/cn/yunliyunwai/beyondclouds/view/ScaleTransitionPagerTitleView.java
+10
-2
app/src/main/java/cn/yunliyunwai/beyondclouds/viewmodel/BlogListFragmentViewModel.java
+13
-3
app/src/main/java/cn/yunliyunwai/beyondclouds/viewmodel/HomeFragmentViewModel.java
+15
-4
No files found.
app/src/main/java/cn/yunliyunwai/beyondclouds/adapter/CategoryFragmentAdapter.java
View file @
410d9662
...
...
@@ -10,12 +10,13 @@ import androidx.fragment.app.FragmentStatePagerAdapter;
import
java.util.List
;
import
cn.yunliyunwai.beyondclouds.data.model.BlogCategory
;
import
cn.yunliyunwai.beyondclouds.data.model.CommonCategory
;
import
cn.yunliyunwai.beyondclouds.ui.HomeFragment
;
public
class
CategoryFragmentAdapter
extends
FragmentStatePagerAdapter
{
private
List
<
Blog
Category
>
categories
;
private
List
<
Common
Category
>
categories
;
public
CategoryFragmentAdapter
(
@NonNull
FragmentManager
fm
,
List
<
Blog
Category
>
categories
)
{
public
CategoryFragmentAdapter
(
@NonNull
FragmentManager
fm
,
List
<
Common
Category
>
categories
)
{
super
(
fm
,
BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
);
this
.
categories
=
categories
;
}
...
...
@@ -25,7 +26,7 @@ public class CategoryFragmentAdapter extends FragmentStatePagerAdapter {
public
Fragment
getItem
(
int
position
)
{
HomeFragment
.
BlogListFragment
fragment
=
HomeFragment
.
BlogListFragment
.
newInstance
();
Bundle
bundle
=
new
Bundle
();
bundle
.
put
Int
(
"categoryId"
,
categories
.
get
(
position
).
getCategoryId
(
));
bundle
.
put
Parcelable
(
"category"
,
categories
.
get
(
position
));
fragment
.
setArguments
(
bundle
);
return
fragment
;
}
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/adapter/HomeNavigatorAdapter.java
View file @
410d9662
...
...
@@ -14,17 +14,18 @@ import java.util.List;
import
cn.yunliyunwai.beyondclouds.R
;
import
cn.yunliyunwai.beyondclouds.data.model.BlogCategory
;
import
cn.yunliyunwai.beyondclouds.data.model.CommonCategory
;
import
cn.yunliyunwai.beyondclouds.util.TypeFaces
;
import
cn.yunliyunwai.beyondclouds.view.CommonPagerIndicator
;
import
cn.yunliyunwai.beyondclouds.view.ScaleTransitionPagerTitleView
;
public
class
HomeNavigatorAdapter
extends
CommonNavigatorAdapter
{
private
List
<
Blog
Category
>
categories
;
private
List
<
Common
Category
>
categories
;
private
ViewPager
viewPager
;
public
HomeNavigatorAdapter
(
List
<
Blog
Category
>
categories
,
ViewPager
viewPager
)
{
public
HomeNavigatorAdapter
(
List
<
Common
Category
>
categories
,
ViewPager
viewPager
)
{
this
.
categories
=
categories
;
this
.
viewPager
=
viewPager
;
}
...
...
@@ -36,11 +37,10 @@ public class HomeNavigatorAdapter extends CommonNavigatorAdapter {
@Override
public
IPagerTitleView
getTitleView
(
Context
context
,
int
index
)
{
ScaleTransitionPagerTitleView
scaleTransitionPagerTitleView
=
ScaleTransitionPagerTitleView
.
createDefaultTitleView
(
context
);
ScaleTransitionPagerTitleView
scaleTransitionPagerTitleView
=
ScaleTransitionPagerTitleView
.
createDefaultTitleView
(
context
,
index
);
scaleTransitionPagerTitleView
.
setText
(
categories
.
get
(
index
).
getCategory
());
scaleTransitionPagerTitleView
.
setText
(
categories
.
get
(
index
).
getCategory
Name
());
scaleTransitionPagerTitleView
.
setTypeface
(
Typeface
.
DEFAULT
);
// TextUtils.
scaleTransitionPagerTitleView
.
setOnClickListener
(
view
->
viewPager
.
setCurrentItem
(
index
));
return
scaleTransitionPagerTitleView
;
}
...
...
@@ -53,7 +53,7 @@ public class HomeNavigatorAdapter extends CommonNavigatorAdapter {
indicator
.
setMode
(
CommonPagerIndicator
.
MODE_EXACTLY
);
indicator
.
setDrawableHeight
(
2
*
density
);
indicator
.
setDrawableWidth
(
8
*
density
);
indicator
.
setX
(
6
*
density
);
indicator
.
setX
(
2
*
density
);
return
indicator
;
}
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/data/model/CommonCategory.java
0 → 100644
View file @
410d9662
package
cn
.
yunliyunwai
.
beyondclouds
.
data
.
model
;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
lombok.Data
;
@Data
public
class
CommonCategory
implements
Parcelable
{
private
static
final
String
CATEGORY_NAME_RECOMMEND
=
"推荐"
;
private
static
final
String
CATEGORY_NAME_LATEST
=
"最新"
;
private
static
final
String
CATEGORY_NAME_HOTS
=
"热门"
;
protected
CommonCategory
(
Parcel
in
)
{
if
(
in
.
readByte
()
==
0
)
{
categoryId
=
null
;
}
else
{
categoryId
=
in
.
readInt
();
}
categoryName
=
in
.
readString
();
categoryType
=
in
.
readParcelable
(
CategoryType
.
class
.
getClassLoader
());
}
public
static
final
Creator
<
CommonCategory
>
CREATOR
=
new
Creator
<
CommonCategory
>()
{
@Override
public
CommonCategory
createFromParcel
(
Parcel
in
)
{
return
new
CommonCategory
(
in
);
}
@Override
public
CommonCategory
[]
newArray
(
int
size
)
{
return
new
CommonCategory
[
size
];
}
};
public
CommonCategory
(
Integer
categoryId
,
String
categoryName
,
CategoryType
categoryType
)
{
this
.
categoryId
=
categoryId
;
this
.
categoryName
=
categoryName
;
this
.
categoryType
=
categoryType
;
}
private
Integer
categoryId
;
private
String
categoryName
;
private
CategoryType
categoryType
;
public
static
CommonCategory
recommend
()
{
return
new
CommonCategory
(
null
,
CATEGORY_NAME_RECOMMEND
,
CategoryType
.
RECOMMEND
);
}
public
static
CommonCategory
latest
()
{
return
new
CommonCategory
(
null
,
CATEGORY_NAME_LATEST
,
CategoryType
.
LATEST
);
}
public
static
CommonCategory
hots
()
{
return
new
CommonCategory
(
null
,
CATEGORY_NAME_HOTS
,
CategoryType
.
HOTS
);
}
public
static
CommonCategory
real
(
Integer
categoryId
,
String
categoryName
)
{
return
new
CommonCategory
(
categoryId
,
categoryName
,
CategoryType
.
REAL
);
}
@Override
public
int
describeContents
()
{
return
0
;
}
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeInt
(
categoryId
);
dest
.
writeParcelable
(
categoryType
,
0
);
dest
.
writeString
(
categoryName
);
}
public
enum
CategoryType
implements
Parcelable
{
RECOMMEND
(
0
),
HOTS
(
1
),
LATEST
(
2
),
REAL
(
3
);
private
int
value
;
CategoryType
(
int
value
)
{
this
.
value
=
value
;
}
public
static
final
Creator
<
CategoryType
>
CREATOR
=
new
Creator
<
CategoryType
>()
{
@Override
public
CategoryType
createFromParcel
(
Parcel
in
)
{
return
CategoryType
.
values
()[
in
.
readInt
()];
}
@Override
public
CategoryType
[]
newArray
(
int
size
)
{
return
new
CategoryType
[
size
];
}
};
@Override
public
int
describeContents
()
{
return
0
;
}
@Override
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
}
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/BlogRepositoryImpl.java
View file @
410d9662
...
...
@@ -47,4 +47,9 @@ public class BlogRepositoryImpl implements IBlogRepository {
public
void
saveCategories
(
List
<
BlogCategory
>
categories
)
{
blogDatabase
.
blogDao
().
saveCategories
(
categories
);
}
@Override
public
LiveData
<
Result
<
Page
<
Blog
>>>
getHotBlogList
(
Integer
page
,
int
pageSize
)
{
return
blogApiStore
.
getHotBlogList
(
page
,
pageSize
);
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/IBlogRepository.java
View file @
410d9662
...
...
@@ -21,4 +21,6 @@ public interface IBlogRepository {
LiveData
<
Result
<
Page
<
Blog
>>>
getBlogList
(
Integer
categoryId
,
Integer
page
,
Integer
size
);
void
saveCategories
(
List
<
BlogCategory
>
data
);
LiveData
<
Result
<
Page
<
Blog
>>>
getHotBlogList
(
Integer
page
,
int
pageSize
);
}
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/local/dao/BlogDao.java
View file @
410d9662
...
...
@@ -12,7 +12,7 @@ import cn.yunliyunwai.beyondclouds.data.model.BlogCategory;
@Dao
public
interface
BlogDao
{
@Query
(
"SELECT * FROM BlogCategory order by priority desc, create_time
de
sc"
)
@Query
(
"SELECT * FROM BlogCategory order by priority desc, create_time
a
sc"
)
LiveData
<
List
<
BlogCategory
>>
getCategories
();
@Insert
(
onConflict
=
OnConflictStrategy
.
REPLACE
)
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/data/source/remote/BlogApiStore.java
View file @
410d9662
...
...
@@ -19,4 +19,8 @@ public interface BlogApiStore {
LiveData
<
Result
<
Page
<
Blog
>>>
getBlogList
(
@Query
(
"categoryId"
)
Integer
categoryId
,
@Query
(
"page"
)
Integer
page
,
@Query
(
"size"
)
Integer
size
);
@GET
(
"blog/hots"
)
LiveData
<
Result
<
Page
<
Blog
>>>
getHotBlogList
(
@Query
(
"page"
)
Integer
page
,
@Query
(
"size"
)
int
pageSize
);
}
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/HomeFragment.java
View file @
410d9662
...
...
@@ -30,6 +30,7 @@ import cn.yunliyunwai.beyondclouds.adapter.CategoryFragmentAdapter;
import
cn.yunliyunwai.beyondclouds.adapter.HomeNavigatorAdapter
;
import
cn.yunliyunwai.beyondclouds.base.BaseFragment
;
import
cn.yunliyunwai.beyondclouds.data.model.Blog
;
import
cn.yunliyunwai.beyondclouds.data.model.CommonCategory
;
import
cn.yunliyunwai.beyondclouds.data.model.Page
;
import
cn.yunliyunwai.beyondclouds.data.model.Result
;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentBlogListBinding
;
...
...
@@ -93,7 +94,7 @@ public class HomeFragment extends BaseFragment<HomeFragmentViewModel, FragmentHo
public
static
class
BlogListFragment
extends
BaseFragment
<
BlogListFragmentViewModel
,
FragmentBlogListBinding
>
implements
SwipeRefreshLayout
.
OnRefreshListener
{
private
Integer
categoryId
;
private
CommonCategory
category
;
private
BlogListAdapter
blogListAdapter
;
...
...
@@ -112,7 +113,7 @@ public class HomeFragment extends BaseFragment<HomeFragmentViewModel, FragmentHo
super
.
onCreate
(
savedInstanceState
);
if
(
null
!=
getArguments
())
{
category
Id
=
getArguments
().
getInt
(
"categoryId
"
);
category
=
getArguments
().
getParcelable
(
"category
"
);
}
}
...
...
@@ -162,7 +163,7 @@ public class HomeFragment extends BaseFragment<HomeFragmentViewModel, FragmentHo
blogListAdapter
.
setOnLoadMoreListener
(
new
BaseQuickAdapter
.
RequestLoadMoreListener
()
{
@Override
public
void
onLoadMoreRequested
()
{
binding
.
getViewModel
().
loadBlogPage
(
category
Id
,
viewModel
.
getCurrentPage
()
+
1
);
binding
.
getViewModel
().
loadBlogPage
(
category
,
viewModel
.
getCurrentPage
()
+
1
);
}
},
binding
.
blogRecyclerView
);
...
...
@@ -181,7 +182,7 @@ public class HomeFragment extends BaseFragment<HomeFragmentViewModel, FragmentHo
@Override
public
void
onRefresh
()
{
viewModel
.
loadBlogPage
(
category
Id
,
1
);
viewModel
.
loadBlogPage
(
category
,
1
);
}
}
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/view/ScaleTransitionPagerTitleView.java
View file @
410d9662
...
...
@@ -40,14 +40,22 @@ public class ScaleTransitionPagerTitleView extends ColorTransitionPagerTitleView
mMinScale
=
minScale
;
}
public
static
ScaleTransitionPagerTitleView
createDefaultTitleView
(
Context
context
)
{
public
static
ScaleTransitionPagerTitleView
createDefaultTitleView
(
Context
context
,
int
index
)
{
float
density
=
context
.
getResources
().
getDisplayMetrics
().
density
;
ScaleTransitionPagerTitleView
scaleTransitionPagerTitleView
=
new
ScaleTransitionPagerTitleView
(
context
);
scaleTransitionPagerTitleView
.
setTextSize
(
18
);
scaleTransitionPagerTitleView
.
setMinScale
(
0.8f
);
int
paddingTop
=
scaleTransitionPagerTitleView
.
getPaddingTop
();
int
paddingBottom
=
scaleTransitionPagerTitleView
.
getPaddingTop
();
scaleTransitionPagerTitleView
.
setPadding
((
int
)
(
10
*
density
),
paddingTop
,
(
int
)
(
0
*
density
),
paddingBottom
);
int
paddingLeft
=
(
int
)
(
6
*
density
);
int
paddingRight
=
(
int
)
(
6
*
density
);
if
(
index
==
0
)
{
paddingLeft
=
(
int
)
(
12
*
density
);
}
if
(
index
==
0
)
{
paddingRight
=
(
int
)
(
12
*
density
);
}
scaleTransitionPagerTitleView
.
setPadding
(
paddingLeft
,
paddingTop
,
paddingRight
,
paddingBottom
);
scaleTransitionPagerTitleView
.
setNormalColor
(
context
.
getResources
().
getColor
(
R
.
color
.
colorText
));
scaleTransitionPagerTitleView
.
setSelectedColor
(
context
.
getResources
().
getColor
(
R
.
color
.
colorTextAccent
));
scaleTransitionPagerTitleView
.
setGravity
(
Gravity
.
CENTER_VERTICAL
);
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/viewmodel/BlogListFragmentViewModel.java
View file @
410d9662
...
...
@@ -8,6 +8,7 @@ import androidx.lifecycle.ViewModel;
import
javax.inject.Inject
;
import
cn.yunliyunwai.beyondclouds.data.model.Blog
;
import
cn.yunliyunwai.beyondclouds.data.model.CommonCategory
;
import
cn.yunliyunwai.beyondclouds.data.model.Page
;
import
cn.yunliyunwai.beyondclouds.data.model.Result
;
import
cn.yunliyunwai.beyondclouds.data.source.IBlogRepository
;
...
...
@@ -32,8 +33,8 @@ public class BlogListFragmentViewModel extends ViewModel {
this
.
blogRepository
=
blogRepository
;
}
public
void
loadBlogPage
(
Integer
categoryId
,
Integer
page
)
{
blogRepository
.
getBlogList
(
categoryId
,
page
,
PAGE_SIZE
).
observeForever
(
new
Observer
<
Result
<
Page
<
Blog
>>>()
{
public
void
loadBlogPage
(
CommonCategory
category
,
Integer
page
)
{
Observer
<
Result
<
Page
<
Blog
>>>
resultObserver
=
new
Observer
<
Result
<
Page
<
Blog
>>>()
{
@Override
public
void
onChanged
(
Result
<
Page
<
Blog
>>
pageResult
)
{
if
(
pageResult
.
getCode
()
==
0
)
{
...
...
@@ -41,6 +42,15 @@ public class BlogListFragmentViewModel extends ViewModel {
}
blogLoadResult
.
setValue
(
pageResult
);
}
});
};
switch
(
category
.
getCategoryType
())
{
case
REAL:
blogRepository
.
getBlogList
(
category
.
getCategoryId
(),
page
,
PAGE_SIZE
).
observeForever
(
resultObserver
);
break
;
case
RECOMMEND:
default
:
blogRepository
.
getHotBlogList
(
page
,
PAGE_SIZE
).
observeForever
(
resultObserver
);
}
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/viewmodel/HomeFragmentViewModel.java
View file @
410d9662
...
...
@@ -5,25 +5,30 @@ import androidx.lifecycle.MutableLiveData;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModel
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
javax.inject.Inject
;
import
cn.yunliyunwai.beyondclouds.data.model.BlogCategory
;
import
cn.yunliyunwai.beyondclouds.data.model.CommonCategory
;
import
cn.yunliyunwai.beyondclouds.data.source.IBlogRepository
;
public
class
HomeFragmentViewModel
extends
ViewModel
{
private
static
final
String
TAG
=
HomeFragmentViewModel
.
class
.
getCanonicalName
();
IBlogRepository
blogRepository
;
private
MutableLiveData
<
List
<
CommonCategory
>>
homeCategories
=
new
MutableLiveData
<>();
@Inject
public
HomeFragmentViewModel
(
IBlogRepository
blogRepository
)
{
this
.
blogRepository
=
blogRepository
;
homeCategories
.
setValue
(
Arrays
.
asList
(
CommonCategory
.
recommend
()));
}
private
MutableLiveData
<
List
<
BlogCategory
>>
homeCategories
=
new
MutableLiveData
<>();
public
LiveData
<
List
<
BlogCategory
>>
getHomeCategories
()
{
public
LiveData
<
List
<
CommonCategory
>>
getHomeCategories
()
{
return
homeCategories
;
}
...
...
@@ -31,7 +36,13 @@ public class HomeFragmentViewModel extends ViewModel {
blogRepository
.
loadCategoriesFromLocal
().
observeForever
(
new
Observer
<
List
<
BlogCategory
>>()
{
@Override
public
void
onChanged
(
List
<
BlogCategory
>
blogCategories
)
{
homeCategories
.
setValue
(
blogCategories
);
List
<
CommonCategory
>
commonCategories
=
new
ArrayList
<>(
50
);
commonCategories
.
addAll
(
homeCategories
.
getValue
());
for
(
BlogCategory
category
:
blogCategories
)
{
commonCategories
.
add
(
CommonCategory
.
real
(
category
.
getCategoryId
(),
category
.
getCategory
()));
}
homeCategories
.
setValue
(
commonCategories
);
}
});
}
...
...
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