2013-07-17 3 views
0

У меня есть активность пейджера в приложении для Android. Мне нужно сохранить изображения в соответствии с положением в пейджер. Мне удалось сделать часть сохранения, но когда iam в первом изображении я нажимаю сохранить, он сохраняет второе изображение, то же самое для второго изображения, он сохраняет третий, я не знаю, что не так с моим кодом! `Сохранение изображения на SD-карту с пейджера android

enter code here 

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    if (item.getItemId()==R.id.menuFinale) 
    { 

     ImageView imageView = (ImageView) findViewById(R.id.image_one); 
     imageView.setDrawingCacheEnabled(true); 
     Bitmap bitmap = imageView.getDrawingCache(); 
     File root = Environment.getExternalStorageDirectory(); 
     MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "My pic" ,"Saved to gallery"); 
     File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg"); 
     try 
     { 
      file.createNewFile(); 
      FileOutputStream ostream = new FileOutputStream(file); 
      bitmap.compress(CompressFormat.JPEG, 100, ostream); 
      ostream.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 



     return true; 
    } 
     else { 
       return super.onOptionsItemSelected(item); 
      } 
    } 
+0

мой друг, новый для android, я использовал этот код в своем приложении, и он отлично работает – androidqq6

+0

вы использовали его в pagerView? –

+0

no used with gallery view – androidqq6

ответ

0

мне удалось, наконец, решить мою проблему вместо ImageView я имею в виду кэш я должен вместо этого сослаться на ViewPager кэшировать все включая ImageView вместо вот мой новый код

enter code here 

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    // Handle item selection 
    if (item.getItemId()==R.id.menuFinale) 
    { 


     pager.setDrawingCacheEnabled(true); 

     pager.buildDrawingCache(true); 
     pager.setDrawingCacheEnabled(true); 

     Bitmap b = pager.getDrawingCache(true); 
     File root = Environment.getExternalStorageDirectory(); 
     MediaStore.Images.Media.insertImage(getContentResolver(), b, "My pic" ,"Saved to gallery"); 
     File file = new File(root.getAbsolutePath()+"/DCIM/HD.jpg"); 
     try 
     { 
      file.createNewFile(); 
      FileOutputStream ostream = new FileOutputStream(file); 
      b.compress(CompressFormat.JPEG, 100, ostream); 
      ostream.close(); 

     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return true; 
    } 
     else 
      { 
       return super.onOptionsItemSelected(item); 
      }  

}

0

Попробуйте некоторые вещи, как показано ниже:

button=(Button)vi.findViewById(R.id.button_save); 

     button.setOnClickListener(new OnClickListener() { 

    private Bitmap bm; 
    private String PREFS_NAME; 
public void onClick(View arg0) { 
    String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root + "/saved_images"); 
     if(!myDir.exists()){ 
      myDir.mkdirs();} 
     bm = BitmapFactory.decodeResource(mContext.getResources(), images[itemPos]); 
     holder.image.setImageBitmap(bm); 
     SharedPreferences savedNumber = mContext.getSharedPreferences(PREFS_NAME, 0); 
     int lastSavedNumber = savedNumber.getInt("lastsavednumber",0); 
     lastSavedNumber++; 
     String fname = "Image-"+lastSavedNumber+".png"; 

     File file = new File (myDir, fname); 
     if (file.exists()) {file.delete(); } 
     try { 
     FileOutputStream out = new FileOutputStream(file); 
     bm.compress(Bitmap.CompressFormat.PNG, 100, out);//Your Bitmap from the resouce 
     out.flush(); 
     out.close(); } 
     catch (Exception e) { 
     e.printStackTrace(); 
     } 

     SharedPreferences saveNumber = mContext.getApplicationContext().getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editorset = saveNumber.edit(); 
     editorset.putInt("lastsavednumber",lastSavedNumber); 
     editorset.commit(); 
      Toast.makeText(mContext, "saved", Toast.LENGTH_SHORT). show();}}); 

надежду помочь вам.

+0

i did not bro но спасибо, кажется, он дает мне ошибки во время работы –

+0

проблема с getDrawingCache() в моем коде, не получив правильное изображение, он получает второе изображение вместо того, что неправильно с этим в моем коде? –