2016-02-26 53 views
0

我有一個android應用程序,我需要實現一個包含imageview和TextView的Gridview,也有一個按鈕來添加新的視圖gridview.When我點擊這個按鈕時,一個文件選擇器會來,並可以從我的設備中選擇任何文檔,如PDF,文檔,圖像等。然後我想要顯示這個文檔作爲一個圖像在gridview中的名稱。如何我是這麼做的嗎?如果我們收到帶附件的郵件(圖片,pdf,docs,..),那麼我們可以在打開該郵件時將其視爲圖片。這就是我們可以看到的預覽圖像該文件之前,我們點擊每個文件如下。我需要在我的GridView完全相同的功能。 Attachment 下面是我用來顯示文件選擇器的代碼。Android:如何動態添加選定的文檔到ImageView作爲預覽/縮略圖在Gridview中

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    try { 
     startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"),FILE_SELECT_CODE); 
    } catch (Exception ex) { 
     System.out.println("browseClick :"+ex); 
    } 

,我已經實現了

onActivityResult(int requestCode, int resultCode, Intent data){} 

選擇file.After這麼多的研究,我得到了創建如下視頻文件的縮略圖的方法後做的工作。

ThumbnailUtils.createVideoThumbnail(filePath, kind); 

但是沒有找到任何東西來獲取其他文件的縮略圖。

我不知道如何在gridview像images.Please幫助我顯示文檔。

+0

的文檔通常的郵件客戶端顯示PDF,Word文件等,並縮略圖圖像的圖標。 當你選擇文件檢查mimeType如果它是圖像在圖像上顯示縮略圖 如果它是PDF然後顯示PDF圖標(把圖標放在可繪製文件夾中),並顯示與其他文件相同的情況。 –

+0

但在郵件中,我認爲我們可以在打開pdf之前看到PDF的內容就像一張小圖片。 – KJEjava48

+0

不,我們可以把pdf的名稱在textView –

回答

0

要創建這樣的縮略圖,當然需要首先創建pdf的縮略圖。你在網上看到的提供開箱即用的解決方案,將PDF內容顯示爲縮略圖,但對於android來說並不那麼順利。我可以建議你創建轉換圖像格式的任何頁面,並將轉換後的圖像顯示爲PDF的縮略圖。在android中沒有直接的方法來做到這一點,所以你必須依賴像this這樣的第三方庫,它是可用於java的pdfbox的移植版本,或者你可以嘗試使用this庫。有this另一個庫只是可用於Java不知道它是否也適用於Android(我還沒有嘗試過)。 如果不是最大的必要條件,我建議你只顯示pdf指示器,因爲只是爲了顯示PDF,增加apk大小並不是一個明智的決定,包括這些庫。還有一些複雜和高圖形包含PDF,可能會通過增加Java堆大小而導致應用程序崩潰。

0

有「.pdf」文件的PdfRenderer庫。

Android文檔在這裏,PDF Renderer Library。不幸的是,這個庫添加API 21

有很好的例子爲這個圖書館Create and Display PDF within Android Application

這段代碼在這個網站。您可以使用此代碼創建縮略圖。

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    private void generateImageFromPdf(String filePath) { 

// filePath must be like : Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()+"/42080.pdf" 

     File file = new File(filePath); 
// FileDescriptor for file, it allows you to close file when you are 
// done with it 
     ParcelFileDescriptor mFileDescriptor = null; 
     try { 
      mFileDescriptor = ParcelFileDescriptor.open(file, 
        ParcelFileDescriptor.MODE_READ_ONLY); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
// PdfRenderer enables rendering a PDF document 
     PdfRenderer mPdfRenderer = null; 
     try { 
      mPdfRenderer = new PdfRenderer(mFileDescriptor); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

// Open page with specified index 
     PdfRenderer.Page mCurrentPage = mPdfRenderer.openPage(0); 
     Bitmap bitmap = Bitmap.createBitmap(mCurrentPage.getWidth(), 
       mCurrentPage.getHeight(), Bitmap.Config.ARGB_8888); 

// Pdf page is rendered on Bitmap 
     mCurrentPage.render(bitmap, null, null, 
       PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY); 
// Set rendered bitmap to ImageView (pdfView in my case) 
     ImageView pdfView = (ImageView) findViewById(R.id.bitmap); 
     pdfView.setImageBitmap(bitmap); 


     mCurrentPage.close(); 
     mPdfRenderer.close(); 
     try { 
      mFileDescriptor.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
相關問題