Introduction: Rien voulait vraiment aux fonctions d'écriture, des fonctions comptables, des routines à ce sujet.
rendus:
La participation pdfview
/**pdfView**/
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
Ici, je veux aussi utiliser WebView, mais Url ios avec .pdf peut être affiché directement, mais ne peut pas montrer directement qu'il ya également des changements au niveau du serveur, avec pdfview si facile à utiliser, si elle est officiellement libéré, il a un inconvénient, partout apk devenir grand. En regardant à travers url peut également afficher directement pdf, enfin je l'utilise encore l'ancienne, montrer après le téléchargement.
Faire participer les connaissances, l'adaptation ListView, le suivi, les applications dynamiques autorisations de lecture et d'écriture, download pdf, affichage pdf, je pense que le processus de téléchargement, une page blanche est pas très bon, a fait un film.
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>