Commit bf7cf456 by 段启岩

文章加载添加动画

parent e907fe53
...@@ -73,5 +73,5 @@ dependencies { ...@@ -73,5 +73,5 @@ dependencies {
implementation 'com.facebook.fresco:animated-webp:0.12.0' implementation 'com.facebook.fresco:animated-webp:0.12.0'
implementation 'com.facebook.fresco:webpsupport:0.12.0' implementation 'com.facebook.fresco:webpsupport:0.12.0'
implementation 'org.jsoup:jsoup:1.13.1' implementation 'org.jsoup:jsoup:1.13.1'
implementation 'me.samlss:broccoli:1.0.0'
} }
package cn.yunliyunwai.beyondclouds.ui.blog; package cn.yunliyunwai.beyondclouds.ui.blog;
import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.animation.LinearInterpolator;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
...@@ -28,6 +30,9 @@ import cn.yunliyunwai.beyondclouds.util.GlideRoundTransform; ...@@ -28,6 +30,9 @@ import cn.yunliyunwai.beyondclouds.util.GlideRoundTransform;
import cn.yunliyunwai.beyondclouds.util.HtmlUtils; import cn.yunliyunwai.beyondclouds.util.HtmlUtils;
import cn.yunliyunwai.beyondclouds.util.StatusBarUtils; import cn.yunliyunwai.beyondclouds.util.StatusBarUtils;
import cn.yunliyunwai.beyondclouds.viewmodel.BlogDetailViewModel; import cn.yunliyunwai.beyondclouds.viewmodel.BlogDetailViewModel;
import me.samlss.broccoli.Broccoli;
import me.samlss.broccoli.BroccoliGradientDrawable;
import me.samlss.broccoli.PlaceholderParameter;
public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, ActivityBlogDetailBinding> { public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, ActivityBlogDetailBinding> {
...@@ -46,6 +51,9 @@ public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, Activi ...@@ -46,6 +51,9 @@ public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, Activi
@Inject @Inject
ViewModelProvider.Factory factory; ViewModelProvider.Factory factory;
private Broccoli broccoli = new Broccoli();
@Override @Override
protected void initInject() { protected void initInject() {
ContextUtils.getAppComponent(this).inject(this); ContextUtils.getAppComponent(this).inject(this);
...@@ -70,6 +78,34 @@ public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, Activi ...@@ -70,6 +78,34 @@ public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, Activi
blogId = getIntent().getStringExtra(ARG_BLOG_ID); blogId = getIntent().getStringExtra(ARG_BLOG_ID);
initEventListenersAndObservers(); initEventListenersAndObservers();
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtTitle)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtUserNick)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtArticleCategory)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtArticleAbstract)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholders(binding.imageUserAvatar);
broccoli.show();
} }
private void initEventListenersAndObservers() { private void initEventListenersAndObservers() {
...@@ -99,6 +135,7 @@ public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, Activi ...@@ -99,6 +135,7 @@ public class BlogDetailActivity extends BaseActivity<BlogDetailViewModel, Activi
@Override @Override
public void onChanged(BlogDetailViewModel.LoadState loadState) { public void onChanged(BlogDetailViewModel.LoadState loadState) {
if (loadState.isLoadComplete()) { if (loadState.isLoadComplete()) {
broccoli.clearAllPlaceholders();
String contentHtml = viewModel.getBlog().getValue().getContentHtml(); String contentHtml = viewModel.getBlog().getValue().getContentHtml();
contentHtml = HtmlUtils.enCode(contentHtml); contentHtml = HtmlUtils.enCode(contentHtml);
webView.evaluateJavascript("javascript:loadArticleContent('" + contentHtml + "')", null); webView.evaluateJavascript("javascript:loadArticleContent('" + contentHtml + "')", null);
......
package cn.yunliyunwai.beyondclouds.ui.project; package cn.yunliyunwai.beyondclouds.ui.project;
import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.animation.LinearInterpolator;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
...@@ -28,6 +30,9 @@ import cn.yunliyunwai.beyondclouds.util.GlideRoundTransform; ...@@ -28,6 +30,9 @@ import cn.yunliyunwai.beyondclouds.util.GlideRoundTransform;
import cn.yunliyunwai.beyondclouds.util.HtmlUtils; import cn.yunliyunwai.beyondclouds.util.HtmlUtils;
import cn.yunliyunwai.beyondclouds.util.StatusBarUtils; import cn.yunliyunwai.beyondclouds.util.StatusBarUtils;
import cn.yunliyunwai.beyondclouds.viewmodel.ProjectDetailViewModel; import cn.yunliyunwai.beyondclouds.viewmodel.ProjectDetailViewModel;
import me.samlss.broccoli.Broccoli;
import me.samlss.broccoli.BroccoliGradientDrawable;
import me.samlss.broccoli.PlaceholderParameter;
public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel, ActivityProjectDetailBinding> { public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel, ActivityProjectDetailBinding> {
...@@ -46,6 +51,8 @@ public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel, ...@@ -46,6 +51,8 @@ public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel,
@Inject @Inject
ViewModelProvider.Factory factory; ViewModelProvider.Factory factory;
private Broccoli broccoli = new Broccoli();
@Override @Override
protected void initInject() { protected void initInject() {
ContextUtils.getAppComponent(this).inject(this); ContextUtils.getAppComponent(this).inject(this);
...@@ -69,6 +76,34 @@ public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel, ...@@ -69,6 +76,34 @@ public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel,
StatusBarUtils.setWindowStatusBarColor(this, R.color.colorStatusBar); StatusBarUtils.setWindowStatusBarColor(this, R.color.colorStatusBar);
blogId = getIntent().getStringExtra(ARG_PROJECT_ID); blogId = getIntent().getStringExtra(ARG_PROJECT_ID);
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtTitle)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtUserNick)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtArticleCategory)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtArticleAbstract)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholders(binding.imageUserAvatar);
broccoli.show();
initEventListenersAndObservers(); initEventListenersAndObservers();
} }
...@@ -99,6 +134,7 @@ public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel, ...@@ -99,6 +134,7 @@ public class ProjectDetailActivity extends BaseActivity<ProjectDetailViewModel,
@Override @Override
public void onChanged(ProjectDetailViewModel.LoadState loadState) { public void onChanged(ProjectDetailViewModel.LoadState loadState) {
if (loadState.isLoadComplete()) { if (loadState.isLoadComplete()) {
broccoli.clearAllPlaceholders();
String contentHtml = viewModel.getProject().getValue().getContentHtml(); String contentHtml = viewModel.getProject().getValue().getContentHtml();
contentHtml = HtmlUtils.enCode(contentHtml); contentHtml = HtmlUtils.enCode(contentHtml);
webView.evaluateJavascript("javascript:loadArticleContent('" + contentHtml + "')", null); webView.evaluateJavascript("javascript:loadArticleContent('" + contentHtml + "')", null);
......
package cn.yunliyunwai.beyondclouds.ui.question; package cn.yunliyunwai.beyondclouds.ui.question;
import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.animation.LinearInterpolator;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
...@@ -28,6 +30,9 @@ import cn.yunliyunwai.beyondclouds.util.GlideRoundTransform; ...@@ -28,6 +30,9 @@ import cn.yunliyunwai.beyondclouds.util.GlideRoundTransform;
import cn.yunliyunwai.beyondclouds.util.HtmlUtils; import cn.yunliyunwai.beyondclouds.util.HtmlUtils;
import cn.yunliyunwai.beyondclouds.util.StatusBarUtils; import cn.yunliyunwai.beyondclouds.util.StatusBarUtils;
import cn.yunliyunwai.beyondclouds.viewmodel.QuestionDetailViewModel; import cn.yunliyunwai.beyondclouds.viewmodel.QuestionDetailViewModel;
import me.samlss.broccoli.Broccoli;
import me.samlss.broccoli.BroccoliGradientDrawable;
import me.samlss.broccoli.PlaceholderParameter;
public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel, ActivityQuestionDetailBinding> { public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel, ActivityQuestionDetailBinding> {
...@@ -46,6 +51,8 @@ public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel ...@@ -46,6 +51,8 @@ public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel
@Inject @Inject
ViewModelProvider.Factory factory; ViewModelProvider.Factory factory;
private Broccoli broccoli = new Broccoli();
@Override @Override
protected void initInject() { protected void initInject() {
ContextUtils.getAppComponent(this).inject(this); ContextUtils.getAppComponent(this).inject(this);
...@@ -69,6 +76,27 @@ public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel ...@@ -69,6 +76,27 @@ public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel
StatusBarUtils.setWindowStatusBarColor(this, R.color.colorStatusBar); StatusBarUtils.setWindowStatusBarColor(this, R.color.colorStatusBar);
blogId = getIntent().getStringExtra(ARG_QUESTION_ID); blogId = getIntent().getStringExtra(ARG_QUESTION_ID);
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtTitle)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtUserNick)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
.setView(binding.txtArticleCategory)
.setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator()))
.build());
broccoli.addPlaceholders(binding.imageUserAvatar);
broccoli.show();
initEventListenersAndObservers(); initEventListenersAndObservers();
} }
...@@ -99,6 +127,7 @@ public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel ...@@ -99,6 +127,7 @@ public class QuestionDetailActivity extends BaseActivity<QuestionDetailViewModel
@Override @Override
public void onChanged(QuestionDetailViewModel.LoadState loadState) { public void onChanged(QuestionDetailViewModel.LoadState loadState) {
if (loadState.isLoadComplete()) { if (loadState.isLoadComplete()) {
broccoli.clearAllPlaceholders();
String contentHtml = viewModel.getQuestion().getValue().getContentHtml(); String contentHtml = viewModel.getQuestion().getValue().getContentHtml();
contentHtml = HtmlUtils.enCode(contentHtml); contentHtml = HtmlUtils.enCode(contentHtml);
webView.evaluateJavascript("javascript:loadArticleContent('" + contentHtml + "')", null); webView.evaluateJavascript("javascript:loadArticleContent('" + contentHtml + "')", null);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment