2012-11-20 5 views
1

Je suis nouveau sur Android et Java. J'ai travaillé sur ma tâche, c'est-à-dire, Image Downloader. Où je dois télécharger des images avec la barre de progression et les afficher dans la grille Voir. J'ai créé deux classes 1. URLImageAdapter 2. CacheActivity. Tout fonctionne bien mais maintenant je veux que ces images s'ouvrent en plein écran quand on clique dessus Une aide? Je vous remercie. Toute méthode simple.Android Image pour afficher en plein écran

public class URLImageAdapter extends BaseAdapter { 
private File sdImageMainDirectory; 
private Context myContext; 
private class Image { 
    String url; 
    Bitmap thumb; 
} 

private Image[] images; 
private LoadThumbsTask thumbnailGen; 
private Object previousList; 

public URLImageAdapter(Context c) { 
    myContext = c; 
    thumbnailGen = new LoadThumbsTask(); 

    if (previousList != null) { 
     images = (Image[]) previousList; 
     thumbnailGen.execute(images); 
     return; 
    } 

    images = new Image[imageURLs.length]; 

    for (int i = 0, j = imageURLs.length; i < j; i++) { 
     images[i] = new Image(); 
     images[i].url = imageURLs[i]; 

    } 

    thumbnailGen.execute(images); 

} 

private void saveDataInSdCard(Bitmap bt,int i) { 
    OutputStream fOut = null; 
    Uri outputFileUri; 
    try { 
     File root = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "urFlodername" + File.separator); 
     root.mkdirs(); 
     sdImageMainDirectory = new File(root,i+"myPicName.jpg"); 
     outputFileUri = Uri.fromFile(sdImageMainDirectory); 
     fOut = new FileOutputStream(sdImageMainDirectory); 
    } catch (Exception e) { 

    } 

    Bitmap bm =bt; 
    try { 
     bm.compress(Bitmap.CompressFormat.PNG, 100, fOut); 
     fOut.flush(); 
     fOut.close(); 
    } catch (Exception e) { 
    }  

} 

public int getCount() { 
    return images.length; 
} 

public Object getItem(int position) { 
    return images[position].url; 
} 

public long getItemId(int position) { 
    return position; 
} 

public Object getData() { 
    if (thumbnailGen != null 
      && thumbnailGen.getStatus() != AsyncTask.Status.FINISHED) { 
     thumbnailGen.cancel(true); 
    } 

    return images; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 

    ImageView imgView; 

    Image cached = images[position]; 

    if (convertView == null) { 

     imgView = new ImageView(myContext); 
     imgView.setLayoutParams(new GridView.LayoutParams(100, 100)); 

    } else { 

     imgView = (ImageView) convertView; 

    } 

    if (cached.thumb == null) { 

     imgView.setImageResource(R.drawable.ic_action_search); 
     imgView.setScaleType(ScaleType.CENTER); 

    } else { 

     imgView.setScaleType(ScaleType.FIT_CENTER); 
     imgView.setImageBitmap(cached.thumb); 
     saveDataInSdCard(cached.thumb,position); 

    } 

    return imgView; 
} 

private void cacheUpdated() { 
    this.notifyDataSetChanged(); 
} 


private Bitmap loadThumb(String url) { 

    Bitmap thumb = null; 

    BitmapFactory.Options opts = new BitmapFactory.Options(); 
    opts.inSampleSize = 4; 

    try { 

     URL u = new URL(url); 
     URLConnection c = u.openConnection(); 
     c.connect(); 

     BufferedInputStream stream = new BufferedInputStream(
       c.getInputStream()); 

     thumb = BitmapFactory.decodeStream(stream, null, opts); 


     stream.close(); 

    } catch (MalformedURLException e) { 
     Log.e("ERROR", "malformed url: " + url); 
    } catch (IOException e) { 
     Log.e("ERROR", "An error has occurred downloading the image: " 
       + url); 
    } 

    return thumb; 
} 

private class LoadThumbsTask extends AsyncTask<Image, Void, Void> { 

    /*private ProgressDialog dialog; 
     @Override 
     protected void onPreExecute() { 
     this.dialog = ProgressDialog.show(myContext, "Please wait", 
      "Downloading.....", true); 
       } 

      @Override 
      protected void onPostExecute(Void unused) { 
    //Intent for next activity 
    this.dialog.dismiss(); 
    }*/ 

    @Override 
    protected Void doInBackground(Image... cache) { 

     BitmapFactory.Options opts = new BitmapFactory.Options(); 
     opts.inSampleSize = 4; 

     for (Image i : cache) { 

      if (isCancelled()) 
       return null; 

      if (i.thumb != null) 
       continue; 

      SystemClock.sleep(500); 

      i.thumb = loadThumb(i.url); 

      publishProgress(); 
     } 

     return null; 

    } 

    @Override 
    protected void onProgressUpdate(Void... param) { 
     cacheUpdated(); 
    } 
} 

private String[] imageURLs = { 
     "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_2851.jpg", 
        "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_2944.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_2989.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3005.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3012.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3034.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3047.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3092.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3110.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3113.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3128.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3160.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3226.jpg", 
    "http://cdn.cs76.net/2011/spring/lectures/6/imgs/img_3228.jpg",}; 
} 

CacheActivity

public class CacheActivity extends Activity { 

Button btnStartProgress; 
ProgressDialog progressBar; 
private int progressBarStatus = 0; 
private Handler progressBarHandler = new Handler(); 
private GridView gridview; 
private long fileSize = 0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_cache); 
    gridview = (GridView) findViewById(R.id.grid_view); 
    addListenerOnButton(); 
} 




public void addListenerOnButton() { 

    btnStartProgress = (Button) findViewById(R.id.btnStartProgress); 
    btnStartProgress.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      progressBar = new ProgressDialog(v.getContext()); 
      progressBar.setCancelable(true); 
      progressBar.setMessage("File downloading ..."); 
      progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      progressBar.setProgress(0); 
      progressBar.setMax(100); 
      progressBar.show(); 

      progressBarStatus = 0; 

      fileSize = 0; 

      new Thread(new Runnable() { 
       public void run() { 
        while (progressBarStatus < 100) { 

         progressBarStatus = doInBackground(); 


         try { 
          Thread.sleep(7500); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 

         progressBarHandler.post(new Runnable() { 
          public void run() { 
           progressBar.setProgress(progressBarStatus); 
          } 
         }); 
        } 

        if (progressBarStatus >= 100) { 

         try { 
          Thread.sleep(450); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 

         progressBar.dismiss(); 

        } 
       } 
      }).start(); 
      try { 
       gridview.setAdapter(new URLImageAdapter(CacheActivity.this)); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

    }); 

} 

public int doInBackground() { 

    while (fileSize <= 1000000) { 

     fileSize++; 

     if (fileSize == 100000) { 
      return 10; 
     } else if (fileSize == 200000) { 
      return 20; 
     } else if (fileSize == 300000) { 
      return 30; 
     }else if (fileSize == 400000) { 
      return 40; 
     }else if (fileSize == 500000) { 
      return 50; 
     }else if (fileSize == 600000) { 
      return 60; 
     }else if (fileSize == 700000) { 
      return 70; 
     }else if (fileSize == 800000) { 
      return 80; 
     }else if (fileSize == 900000) { 
      return 90; 
     } 

    } 

    return 100; 

} 

} 
+0

http://whathaveyoutried.com? – njzk2

+0

@ njzk2 Dialogue de dialogue = nouveau dialogue (contexte, 1); dialog.setContentView (votre disposition); dialog.show(); Vous voulez commencer une nouvelle mais en pensant à essayer cela. –

+0

qui ferait l'affaire. une vue de superposition (comme dans une disposition relative ou quelque chose) qui reste cachée et devient visible peut aussi fonctionner. – njzk2

Répondre

0

mis onClickListener à votre imageView dans getView quand il obtenir une image de pouce.

else { 

      imgView.setScaleType(ScaleType.FIT_CENTER); 
      imgView.setImageBitmap(cached.thumb); 
      saveDataInSdCard(cached.thumb,position); 

      //somewhat here 

      // and start a new activity and put file path , and your next activity there is  

      imgView.setOnClickListener(new OnClickListener()) 
       { 

       @Override 
      public void onClick(View v) { 
        Intent intent =new Intent(context,FullScreenActivity.class) 
        intent.putExtra("file_path",PATH); 
        context.startActivity(intent); 
       } 

       }); 


     } 

Et dans votre prochaine activité il y a un imageView plein écran

dans onCreate

Bundle bundle=getIntent().getExtras(); 

if(bundle!=null) 
{ 
String path=bundle.getString("file_path"); 
imageView.setImageURI(Uri.parse(path)); 
} 
+0

Bro Je vais vous envoyer le code u peut modifier pour moi? J'ai essayé, mais quelques exceptions près. !! S'il vous plaît –

+0

@ WebnetMobile.com Je lui ai demandé de ne pas U. Je suppose que U VHA beaucoup mieux travail que ces commentaires boiteux. –

0

vous pouvez créer un imageview dialogue d'alerte personnalisée avec image imageview.get en taille réelle de la vue du réseau et l'afficher dans la boîte de dialogue d'alerte.