5.6(冲刺八)
第八天
package com.example.myactivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.example.myactivity.comm.GlideSimpleLoader;
import com.example.myactivity.view.imagewatcher.ImageWatcherHelper;
import com.example.myactivity.ui.BaseActivity;
import com.example.myactivity.db.bean.Group;
import com.example.myactivity.db.bean.Note;
//import com.example.myactivity.comm.GlideSimpleLoader;
import com.example.myactivity.db.GroupDao;
import com.example.myactivity.util.CommonUtil;
import com.example.myactivity.util.ImageUtils;
import com.example.myactivity.util.StringUtils;
//import com.github.ielse.imagewatcher.ImageWatcherHelper;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.widget.Toolbar;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class NoteActivity extends BaseActivity {
private static final String TAG = "NoteActivity";
private RichTextView tv_note_content;
//private ScrollView scroll_view;
private Note note;
private String myTitle;
private String myContent;
private String myGroupName;
private ProgressDialog loadingDialog;
private Disposable mDisposable;
private ImageWatcherHelper iwHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note);
initView();
}
private void initView() {
Toolbar toolbar = findViewById(R.id.toolbar_note);
toolbar.setTitle("详情");
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
//toolbar.setNavigationIcon(R.drawable.ic_dialog_info);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
FloatingActionButton fab = findViewById(R.id.fab_note);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
iwHelper = ImageWatcherHelper.with(this, new GlideSimpleLoader());
GroupDao groupDao = new GroupDao(this);
loadingDialog = new ProgressDialog(this);
loadingDialog.setMessage("数据加载中...");
loadingDialog.setCanceledOnTouchOutside(false);
loadingDialog.show();
//标题
TextView tv_note_title = findViewById(R.id.tv_note_title);//标题
tv_note_title.setTextIsSelectable(true);
tv_note_content = findViewById(R.id.tv_note_content);//内容
//创建时间
TextView tv_note_time = findViewById(R.id.tv_note_time);
//选择分类
TextView tv_note_group = findViewById(R.id.tv_note_group);
try {
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("data");
note = (Note) bundle.getSerializable("note");
if (note != null) {
myTitle = note.getTitle();
myContent = note.getContent();
Group group = groupDao.queryGroupById(note.getGroupId());
if (group != null) {
myGroupName = group.getName();
tv_note_group.setText(myGroupName);
}
tv_note_title.setText(myTitle);
tv_note_content.post(new Runnable() {
@Override
public void run() {
dealWithContent();
}
});
tv_note_time.setText(note.getCreateTime());
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void dealWithContent(){
//showEditData(myContent);
tv_note_content.clearAllLayout();
showDataSync(myContent);
// 图片点击事件
tv_note_content.setOnRtImageClickListener(new RichTextView.OnRtImageClickListener() {
@Override
public void onRtImageClick(View view, String imagePath) {
try {
ArrayList<String> imageList = StringUtils.getTextFromHtml(myContent, true);
int currentPosition = imageList.indexOf(imagePath);
showToast("点击图片:"+currentPosition+":"+imagePath);
List<Uri> dataList = new ArrayList<>();
for (int i = 0; i < imageList.size(); i++) {
dataList.add(ImageUtils.getUriFromPath(imageList.get(i)));
}
iwHelper.show(dataList, currentPosition);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* 异步方式显示数据
*/
private void showDataSync(final String html){
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) {
showEditData(emitter, html);
}
})
//.onBackpressureBuffer()
.subscribeOn(Schedulers.io())//生产事件在io
.observeOn(AndroidSchedulers.mainThread())//消费事件在UI线程
.subscribe(new Observer<String>() {
@Override
public void onComplete() {
if (loadingDialog != null){
loadingDialog.dismiss();
}
}
@Override
public void onError(Throwable e) {
if (loadingDialog != null){
loadingDialog.dismiss();
}
showToast("解析错误:图片不存在或已损坏");
