2011-10-24 8 views
1

リストビューをクリックすると、その場所のイメージが外部メモリに保存され、ファイルパス文字列が表示されますデフォルトギャラリの画像。唯一の問題は、それが真剣に時間がかかることです(私は雷鳴に10秒以上話しています)。私が試したhaved何デフォルトのギャラリーでキャッシュされたビットマップをより速く開く方法

@Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
        if(position>0){ 
         Bitmap bmp =adapter.getBitmap(adapter.getData(position-1)); 
         if(bmp!=null){ 
          //String path = context.getCacheDir().getAbsolutePath() + "/view.png"; 
          //File f = new File(context.getCacheDir().getAbsolutePath(),"MemeCache"); 
          //if(!f.exists()) 
          // f.mkdirs(); 
          String path = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/view.png"; 
          Toast.makeText(context, "opening in gallery", Toast.LENGTH_SHORT).show(); 
          File file = new File(path); 
          FileOutputStream fos = null; 
          try { 
           fos = new FileOutputStream(file); 
           bmp.compress(CompressFormat.PNG, 100, fos); 
           fos.close(); 
          } catch (FileNotFoundException e) { 
           e.printStackTrace(); 
          } catch (IOException e) { 
           e.printStackTrace(); 
          } 
          Intent intent = new Intent(); 
          intent.setAction(android.content.Intent.ACTION_VIEW); 
          intent.setDataAndType(Uri.fromFile(new File(path)), "image/png"); 
          //intent.setDataAndType(Uri.fromFile(f), "image/png"); 
          activity.startActivity(intent); 
         }else{ 
          Toast.makeText(context, arg0.getItemAtPosition(position).toString() +"is HaAAACkSS!!!!", Toast.LENGTH_SHORT).show(); 
         } 
        } 
       } 
      }); 
+0

画像の最初の場所はどこですか?ギャラリーを元の画像にパスしたり、SDカードに保存したりすることは可能ですか? – Craigy

+0

投稿した機能のどの部分が実行に時間がかかりますか?デバッガを使用して、ステップオーバーに長い時間がかかる行を確認してください。 –

答えて

0

役立つかもしれないいくつかのもの: 内部メモリ上のビットマップを保存する1. 2.ここでは、ビットマップ

の品質を下げるには、コードです

1)いくつかのタイマーや計測器をコードに追加して、いつもどこで過ごしているかを正確に確認します。ビットマップをsdcardに保存したり、インテントを開始したり、完全に何かを実行します。

2)タイマーを追加してパフォーマンスを測定できたら、イメージを縮小したり、別の場所にイメージを保存したりすると役立ちます。一部のデバイスでは、内部ストレージはsdcard自体にあります。

3)あなたのプログラムに応じて、ユーザが(おそらく)に保存されるように、ファイルをsdcard(おそらくバックグラウンド)に保存することを検討するとよいでしょう。ギャラリー。

関連する問題