From 75a9c51a178269fc0649242c07629b9b1c413f74 Mon Sep 17 00:00:00 2001 From: CeuiLiSA Date: Mon, 20 May 2019 11:01:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=8A=A0=E5=8A=9B=E7=87=83?= =?UTF-8?q?=E7=83=A7=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/Project.xml | 29 ------ app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 1 + .../ceui/lisa/activities/CoverActivity.java | 5 +- .../ceui/lisa/activities/MainActivity.java | 2 +- .../ceui/lisa/activities/ShaftActivity.java | 19 ++++ .../ceui/lisa/adapters/IllustStagAdapter.java | 12 ++- .../ceui/lisa/fragments/FragmentHotTag.java | 81 +++++----------- .../ceui/lisa/fragments/FragmentLeft.java | 93 +++++++++++++++++++ .../lisa/fragments/FragmentRecmdIllust.java | 14 +-- .../lisa/fragments/FragmentSearchResult.java | 2 +- .../main/java/ceui/lisa/network/Retro.java | 5 + app/src/main/res/layout/fragment_hot_tag.xml | 66 ------------- app/src/main/res/layout/fragment_left.xml | 43 +++++++++ .../main/res/layout/recy_illust_stagger.xml | 67 ++++++++----- app/src/main/res/values/colors.xml | 2 + build.gradle | 2 +- 17 files changed, 252 insertions(+), 192 deletions(-) delete mode 100644 .idea/codeStyles/Project.xml create mode 100644 app/src/main/java/ceui/lisa/activities/ShaftActivity.java create mode 100644 app/src/main/java/ceui/lisa/fragments/FragmentLeft.java create mode 100644 app/src/main/res/layout/fragment_left.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626c2..000000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db181faa5..d5514fe83 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,6 +50,7 @@ dependencies { implementation 'com.sackcentury:shinebutton:0.2.0' implementation 'de.hdodenhof:circleimageview:3.0.0' implementation 'com.github.ybq:Android-SpinKit:1.2.0' + implementation 'com.github.Yalantis:Context-Menu.Android:1.1.4' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5dfcbe023..2d12735a2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,6 +38,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/ceui/lisa/activities/CoverActivity.java b/app/src/main/java/ceui/lisa/activities/CoverActivity.java index 247062ede..e039a4996 100644 --- a/app/src/main/java/ceui/lisa/activities/CoverActivity.java +++ b/app/src/main/java/ceui/lisa/activities/CoverActivity.java @@ -12,6 +12,7 @@ import ceui.lisa.fragments.BaseFragment; import ceui.lisa.fragments.FragmentBlank; import ceui.lisa.fragments.FragmentHotTag; +import ceui.lisa.fragments.FragmentLeft; import ceui.lisa.fragments.FragmentRecmdIllust; import ceui.lisa.fragments.FragmentRecmdUser; import ceui.lisa.utils.Local; @@ -70,8 +71,8 @@ public void onPageScrollStateChanged(int i) { private void initFragment(){ BaseFragment[] baseFragments = new BaseFragment[]{ - new FragmentHotTag(), - new FragmentRecmdUser(), + new FragmentLeft(), + new FragmentBlank(), new FragmentBlank() }; mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { diff --git a/app/src/main/java/ceui/lisa/activities/MainActivity.java b/app/src/main/java/ceui/lisa/activities/MainActivity.java index d8fc87250..f54bdd17f 100644 --- a/app/src/main/java/ceui/lisa/activities/MainActivity.java +++ b/app/src/main/java/ceui/lisa/activities/MainActivity.java @@ -39,7 +39,7 @@ protected void initData() { Intent intent = new Intent(mContext, CoverActivity.class); startActivity(intent); finish(); - }else { + } else { Common.showToast("未登录"); Intent intent = new Intent(mContext, LoginActivity.class); startActivity(intent); diff --git a/app/src/main/java/ceui/lisa/activities/ShaftActivity.java b/app/src/main/java/ceui/lisa/activities/ShaftActivity.java new file mode 100644 index 000000000..8179d466e --- /dev/null +++ b/app/src/main/java/ceui/lisa/activities/ShaftActivity.java @@ -0,0 +1,19 @@ +package ceui.lisa.activities; + +public class ShaftActivity extends BaseActivity { + + @Override + protected void initLayout() { + + } + + @Override + protected void initView() { + + } + + @Override + protected void initData() { + + } +} diff --git a/app/src/main/java/ceui/lisa/adapters/IllustStagAdapter.java b/app/src/main/java/ceui/lisa/adapters/IllustStagAdapter.java index 994a0822b..14ece3a7c 100644 --- a/app/src/main/java/ceui/lisa/adapters/IllustStagAdapter.java +++ b/app/src/main/java/ceui/lisa/adapters/IllustStagAdapter.java @@ -61,8 +61,15 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi currentOne.title.setText(allIllust.get(position).getTitle()); Glide.with(mContext) .load(GlideUtil.getMediumImg(allIllust.get(position))) - .placeholder(R.color.dark_bg) + .placeholder(R.color.light_bg) .into(currentOne.illust); + + if(allIllust.get(position).getPage_count() == 1){ + currentOne.pSize.setVisibility(View.GONE); + }else { + currentOne.pSize.setVisibility(View.VISIBLE); + currentOne.pSize.setText(allIllust.get(position).getPage_count() + "P"); + } if(mOnItemClickListener != null){ holder.itemView.setOnClickListener(v -> mOnItemClickListener.onItemClick(v, position, 0)); } @@ -79,12 +86,13 @@ public void setOnItemClickListener(OnItemClickListener itemClickListener) { public static class TagHolder extends RecyclerView.ViewHolder { ImageView illust; - TextView title; + TextView title, pSize; TagHolder(View itemView) { super(itemView); illust = itemView.findViewById(R.id.illust_image); title = itemView.findViewById(R.id.title); + pSize = itemView.findViewById(R.id.p_size); } } } diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java b/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java index 8b0bb6ffc..4f0c03dd9 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentHotTag.java @@ -21,6 +21,7 @@ import ceui.lisa.network.Retro; import ceui.lisa.response.IllustsBean; import ceui.lisa.response.ListIllustResponse; +import ceui.lisa.response.TagsBean; import ceui.lisa.response.TrendingtagResponse; import ceui.lisa.utils.AppBarStateChangeListener; import ceui.lisa.utils.GlideUtil; @@ -29,86 +30,52 @@ import ceui.lisa.utils.SpacesItemDecoration; import io.reactivex.Observable; -import static com.bumptech.glide.request.RequestOptions.bitmapTransform; -public class FragmentHotTag extends BaseListFragment { - - private ImageView headImage; +public class FragmentHotTag extends BaseListFragment { @Override - Observable initApi() { - return Retro.getAppApi().getRecmdIllust(mUserModel.getResponse().getAccess_token(), false); + Observable initApi() { + return Retro.getAppApi().getHotTags(mUserModel.getResponse().getAccess_token()); } @Override - Observable initNextApi() { - return Retro.getAppApi().getNextIllust("Bearer " + mUserModel.getResponse().getAccess_token(), nextUrl); + Observable initNextApi() { + //热门标签没有下一页 + return null; } @Override - void initRecyclerView() { - super.initRecyclerView(); -// mRecyclerView.addItemDecoration(new GridItemDecoration(3, -// DensityUtil.dp2px(6.0f), true)); -// GridLayoutManager layoutManager = new GridLayoutManager(mContext, 3); -// mRecyclerView.setLayoutManager(layoutManager); - mToolbar.setPadding(0, Shaft.statusHeight, 0, 0); - mRecyclerView.addItemDecoration(new SpacesItemDecoration(DensityUtil.dp2px(4.0f))); + void initLayout() { + mLayoutID = R.layout.fragment_illust_list; } @Override - void initLayout() { - mLayoutID = R.layout.fragment_hot_tag; + boolean hasNext() { + return false; } @Override - View initView(View v) { - super.initView(v); - headImage = v.findViewById(R.id.head_image); - mToolbar.setPadding(0, Shaft.statusHeight, 0, 0); - CollapsingToolbarLayout collapsingToolbarLayout = v.findViewById(R.id.toolbar_layout); - AppBarLayout appBarLayout = v.findViewById(R.id.app_bar); - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { - @Override - public void onStateChanged(AppBarLayout appBarLayout, State state) { - if (state == State.EXPANDED) { - } else if (state == State.COLLAPSED) { - mToolbar.setTitle("推荐作品"); - } else { - mToolbar.setTitle(" "); - } - } - }); - return v; + void initRecyclerView() { + mRecyclerView.addItemDecoration(new GridItemDecoration(3, + DensityUtil.dp2px(8.0f), true)); + GridLayoutManager manager = new GridLayoutManager(mContext, 3); + mRecyclerView.setLayoutManager(manager); } + @Override + boolean showToolbar() { + return false; + } @Override void initAdapter() { -// mAdapter = new HotTagAdapter(allItems, mContext); -// mAdapter.setOnItemClickListener(new OnItemClickListener() { -// @Override -// public void onItemClick(View v, int position, int viewType) { -// Intent intent = new Intent(mContext, SearchResultActivity.class); -// intent.putExtra("key word", allItems.get(position).getTag()); -// startActivity(intent); -// } -// }); -// Glide.with(mContext) -// .load(GlideUtil.getLargeImage(allItems.get((int) (Math.random() * allItems.size())).getIllust())) -// //.apply(bitmapTransform(new BlurTransformation(15, 3))) -// .into(headImage); - - StaggeredGridLayoutManager layoutManager = - new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); - mRecyclerView.setLayoutManager(layoutManager); - mAdapter = new IllustStagAdapter(allItems, mContext); + mAdapter = new HotTagAdapter(allItems, mContext); mAdapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View v, int position, int viewType) { - IllustChannel.getInstance().setIllustList(allItems); - Intent intent = new Intent(mContext, ViewPagerActivity.class); - intent.putExtra("position", position); + Intent intent = new Intent(mContext, SearchResultActivity.class); + intent.putExtra("key word", allItems.get(position).getTag()); startActivity(intent); } }); diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentLeft.java b/app/src/main/java/ceui/lisa/fragments/FragmentLeft.java new file mode 100644 index 000000000..1466cdd21 --- /dev/null +++ b/app/src/main/java/ceui/lisa/fragments/FragmentLeft.java @@ -0,0 +1,93 @@ +package ceui.lisa.fragments; + +import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import com.yalantis.contextmenu.lib.ContextMenuDialogFragment; +import com.yalantis.contextmenu.lib.MenuGravity; +import com.yalantis.contextmenu.lib.MenuObject; +import com.yalantis.contextmenu.lib.MenuParams; + +import java.util.ArrayList; +import java.util.List; + +import ceui.lisa.R; +import ceui.lisa.activities.Shaft; + +public class FragmentLeft extends BaseFragment { + + public static final String[] TITLES = new String[]{"推荐作品", "热门标签"}; + + @Override + void initLayout() { + mLayoutID = R.layout.fragment_left; + } + + @Override + View initView(View v) { + Toolbar toolbar = v.findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(view -> { + initMenuFragment(); + }); + ViewPager viewPager = v.findViewById(R.id.view_pager); + viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) { + @Override + public Fragment getItem(int i) { + if(i == 0) { + return new FragmentRecmdIllust(); + }else if(i == 1){ + return new FragmentHotTag(); + }else { + //只有左右两页,所以这个else应该不会触发 + return new FragmentBlank(); + } + } + + @Override + public int getCount() { + return TITLES.length; + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + return TITLES[position]; + } + }); + TabLayout tabLayout = v.findViewById(R.id.tab_layout); + tabLayout.setupWithViewPager(viewPager); + return v; + } + + @Override + void initData() { + + } + + private void initMenuFragment() { + List objectList = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + MenuObject menuObject = new MenuObject(); + menuObject.setTitle("这是第" + i); + objectList.add(menuObject); + } + MenuParams menuParams = new MenuParams( + Shaft.toolbarHeight, + objectList, + 0L, + 175L, + 50L, + false, + true, + true, + MenuGravity.START); + ContextMenuDialogFragment contextMenuDialogFragment = ContextMenuDialogFragment.newInstance(menuParams); + contextMenuDialogFragment.show(getChildFragmentManager(), "ContextMenuDialogFragment"); + } + +} diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentRecmdIllust.java b/app/src/main/java/ceui/lisa/fragments/FragmentRecmdIllust.java index bda8faa8d..7dd8971be 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentRecmdIllust.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentRecmdIllust.java @@ -37,27 +37,19 @@ public class FragmentRecmdIllust extends BaseListFragment { @Override - void initLayout() { - mLayoutID = R.layout.activity_simple_list; - } - - @Override - String getToolbarTitle() { - return "推荐作品"; + boolean showToolbar() { + return false; } @Override void initRecyclerView() { - mToolbar.setPadding(0, Shaft.statusHeight, 0, 0); mRecyclerView.addItemDecoration(new SpacesItemDecoration(DensityUtil.dp2px(4.0f))); } - @Override Observable initApi() { - //return Retro.getAppApi().getRecmdIllust(mUserModel.getResponse().getAccess_token(), false); - return null; + return Retro.getAppApi().getRecmdIllust(mUserModel.getResponse().getAccess_token(), false); } @Override diff --git a/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java b/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java index 6eaa6e1f0..ee4d70bac 100644 --- a/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java +++ b/app/src/main/java/ceui/lisa/fragments/FragmentSearchResult.java @@ -62,7 +62,7 @@ String getToolbarTitle() { @Override Observable initApi() { - return Retro.getAppApi().searchIllust(mUserModel.getResponse().getAccess_token(), keyWord, sort, searchTarget); + return Retro.getAppApi().searchIllust(mUserModel.getResponse().getAccess_token(), keyWord + "10000", sort, searchTarget); } @Override diff --git a/app/src/main/java/ceui/lisa/network/Retro.java b/app/src/main/java/ceui/lisa/network/Retro.java index 22c631923..646f91710 100644 --- a/app/src/main/java/ceui/lisa/network/Retro.java +++ b/app/src/main/java/ceui/lisa/network/Retro.java @@ -5,7 +5,10 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import java.util.Collections; + import okhttp3.OkHttpClient; +import okhttp3.Protocol; import okhttp3.Request; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; @@ -27,6 +30,7 @@ public static AppApi getAppApi(){ OkHttpClient okHttpClient = new OkHttpClient .Builder() .addInterceptor(loggingInterceptor) + .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .addInterceptor(chain -> { Request localRequest = chain.request().newBuilder() .addHeader("User-Agent:", "PixivAndroidApp/5.0.134 (Android 6.0.1; D6653)") @@ -53,6 +57,7 @@ public static AccountApi getAccountApi(){ OkHttpClient okHttpClient = new OkHttpClient .Builder() .addInterceptor(loggingInterceptor) + .protocols(Collections.singletonList(Protocol.HTTP_1_1)) .addInterceptor(chain -> { Request localRequest = chain.request().newBuilder() .addHeader("User-Agent:", "PixivAndroidApp/5.0.134 (Android 6.0.1; D6653)") diff --git a/app/src/main/res/layout/fragment_hot_tag.xml b/app/src/main/res/layout/fragment_hot_tag.xml index 4b266432c..be71d3d5b 100644 --- a/app/src/main/res/layout/fragment_hot_tag.xml +++ b/app/src/main/res/layout/fragment_hot_tag.xml @@ -6,75 +6,9 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recy_illust_stagger.xml b/app/src/main/res/layout/recy_illust_stagger.xml index e787f2ce4..d8c8643ab 100644 --- a/app/src/main/res/layout/recy_illust_stagger.xml +++ b/app/src/main/res/layout/recy_illust_stagger.xml @@ -1,39 +1,62 @@ - - + app:cardCornerRadius="@dimen/four_dp" + app:cardElevation="2dp"> + android:orientation="vertical"> - - - - + android:layout_height="wrap_content" + android:scaleType="centerCrop" /> + + + + + + + + + + + - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 6a3eff958..5d3eab4f7 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -6,6 +6,8 @@ #56baec + #B3E5FC #f2f2f2 #999999 + #f2f2f2 diff --git a/build.gradle b/build.gradle index e11a5b354..87845ed59 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ allprojects { repositories { google() jcenter() - + maven { url 'https://jitpack.io' } } }