Introducción: Nada realmente quería funciones de escritura, las funciones de contabilidad, rutinas al respecto.
representaciones:
PDFView que implica
/**pdfView**/
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
Aquí también quiero usar vista web, pero ios dirección URL con .pdf se puede visualizar directamente, pero no puede demostrar directamente que también hay cambios en el servidor, con PDFView aunque fácil de usar, si es lanzado oficialmente tiene un inconveniente, apk todas partes llegar a ser grande. Mirando a través de URL también puede mostrar directamente pdf, finalmente, todavía utilizo la vieja manera, mostrar después de la descarga.
La participación de los conocimientos, la adaptación ListView, monitoreo, aplicaciones dinámicas de leer y escribir, download pdf, pdf pantalla, creo que el proceso de descarga, una página en blanco no es muy buena, hizo una película.
public class QuestionBankFragment extends BaseFragment {
@BindView(R.id.list_object)
ListView sujectListView;
List<Subject> mSubjectList = new ArrayList<>();
SubjectAdapter mSubjectAdapter;
public static Fragment getInstance() {
Fragment fragment = new QuestionBankFragment();
return fragment;
}
@Override
protected int contentViewID() {
return R.layout.fragment_question_bank;
}
@Override
protected void initialize() {
querySubject();
OnItemClick();
}
private void OnItemClick() {
sujectListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (mSubjectList == null){
return;
}
Subject subject = mSubjectList.get(i);
Bundle bundle = new Bundle();
bundle.putSerializable("subject",subject);
startActivity(PdfViewActivity.class, bundle);
}
});
}
private void querySubject() {
BmobQuery<Subject> subjectBmobQuery = new BmobQuery<Subject>();
subjectBmobQuery.findObjects(new FindListener<Subject>() {
@Override
public void done(List<Subject> object, BmobException e) {
if (e == null) {
mSubjectList = object;
mSubjectAdapter = new SubjectAdapter(getContext(),R.layout.item_subject, mSubjectList);
sujectListView.setAdapter(mSubjectAdapter);
} else {
ToastUtils.showShort(getContext(), getContext().getString(R.string.query_failure));
}
}
});
}
}
public class SubjectAdapter extends ArrayAdapter<Subject> {
private int resourceId;
public SubjectAdapter(@NonNull Context context, int resource, @NonNull List<Subject> objects) {
super(context, resource, objects);
resourceId = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
Subject subject = getItem(position);
SubjectViewHolder viewHolder;
View view;
if (convertView == null){
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
viewHolder = new SubjectViewHolder();
viewHolder.titleSuject = view.findViewById(R.id.title_subject);
viewHolder.rescSuject = view.findViewById(R.id.subject_desc);
viewHolder.imgSubject = view.findViewById(R.id.img_subject);
view.setTag(viewHolder);
}else {
view = convertView;
viewHolder = (SubjectViewHolder) view.getTag();
}
viewHolder.titleSuject.setText(subject.getTitle());
viewHolder.rescSuject.setText(subject.getDesc());
viewHolder.imgSubject.setImageURI(subject.getImages().getFileUrl());
return view;
}
class SubjectViewHolder {
TextView titleSuject;
TextView rescSuject;
SimpleDraweeView imgSubject ;
}
}
PdfViewActivity.java
public class PdfViewActivity extends BaseActivity {
public static final String TAG = "PdfViewActivity";
@BindView(R.id.pdfView)
PDFView mPDFView;
@BindView(R.id.img_pgbar)
ImageView imgPgbar;
private AnimationDrawable ad;
private static int REQUEST_CODE_CONTACT = 101;
private Subject subject;
OkGo mOkGo = OkGo.getInstance();
String[] permissions = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
@Override
protected int contentViewID() {
return R.layout.activity_pdf_view;
}
@Override
protected void initialize() {
setLeftBtnFinish();
ad = (AnimationDrawable) imgPgbar.getDrawable();
imgPgbar.postDelayed(new Runnable() {
@Override
public void run() {
ad.start();
}
}, 100);
Intent intent = getIntent();
subject = (Subject) intent.getSerializableExtra("subject");
setTopTitle(subject.getTitle(), true);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE_CONTACT);
}
}
showPdfView(subject);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE_CONTACT) {
for (int i = 0; i < permissions.length; i++) {
Log.i(TAG, "申请的权限为:" + permissions[i] + ",申请结果:" + grantResults[i]);
}
showPdfView(subject);
}
}
private void showPdfView(Subject subject) {
if (subject == null){
return;
}
try {
final File file = new File(Environment.getExternalStorageDirectory() + File.separator + subject.getTitle());
if (!file.exists()) {
file.mkdirs();
}
String target = Environment.getExternalStorageDirectory() + File.separator + subject.getDesc() + ".pdf";
mOkGo.<File>get(subject.getPdfUrl().getFileUrl())
.execute(new FileCallback(target, subject.getDesc()) {
@Override
public void onSuccess(Response<File> response) {
LogUtils.d(TAG, "报告下载成功..." + response.body());
try {
mPDFView.fromFile(response.body())
.defaultPage(0)//默认展示第一页
.load();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFinish() {
super.onFinish();
imgPgbar.setVisibility(View.GONE);
}
@Override
public void onError(Response<File> response) {
super.onError(response);
LogUtils.e("下载失败", response.message());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mOkGo.cancelTag(this);
}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/color_ffffff"
tools:context=".activity.PdfViewActivity">
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:id="@+id/img_pgbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:src="@drawable/amin_pgbar"/>
</FrameLayout>