Android examen práctico (archivo PDF para descargar, pantalla)

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>

 

Publicado 28 artículos originales · ganado elogios 22 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_39131246/article/details/105376239
Recomendado
Clasificación