examen pratique Android (fichier PDF à télécharger, affichage)

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>

 

Publié 28 articles originaux · louange gagné 22 · vues 20000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_39131246/article/details/105376239
conseillé
Classement