دانلود عکس با استفاده از progressbar در اندروید
یکشنبه 11 تیر 1396در این مقاله قصد داریم یک سری عکس را با استفاده از یک دکمه از سرور دانلود نماییم به این صورت است که کاربر با زدن دکمه عکس ها را دانلود می کند و بعد از دانلود کردن آن را مایش می دهد.
در این مقاله با استفاده از یک دکمه آدرس مورد نظر را که برای دانلود عکس است پیدا می کند البته حتما باید گوشی به نت وصل باشد بعد از آن با یک نوار پیشرفت درصد دانلود را نمایش می دهد و عکس مورد نظر را نمایش می دهد
ابتدا باید مجوز های دسترسی را قرار دهید:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
کلاس جاوا به صورت زیر خواهد بود:
import java.io.BufferedInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { Button button; ProgressDialog progressdialog; public static final int Progress_Dialog_Progress = 0; String ImageURL = "http://www.android-examples.com/wp-content/uploads/2016/04/demo_download_image.jpg" ; URL url; URLConnection urlconnection ; int FileSize; InputStream inputstream; OutputStream outputstream; byte dataArray[] = new byte[1024]; long totalSize = 0; ImageView imageview; String GetPath ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button1); imageview = (ImageView)findViewById(R.id.imageView1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub new ImageDownloadWithProgressDialog().execute(ImageURL); } }); } public class ImageDownloadWithProgressDialog extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); showDialog(Progress_Dialog_Progress); } @Override protected String doInBackground(String... aurl) { int count; try { url = new URL(aurl[0]); urlconnection = url.openConnection(); urlconnection.connect(); FileSize = urlconnection.getContentLength(); inputstream = new BufferedInputStream(url.openStream()); outputstream = new FileOutputStream("/sdcard/demo_photo1.jpg"); while ((count = inputstream.read(dataArray)) != -1) { totalSize += count; publishProgress(""+(int)((totalSize*100)/FileSize)); outputstream.write(dataArray, 0, count); } outputstream.flush(); outputstream.close(); inputstream.close(); } catch (Exception e) {} return null; } protected void onProgressUpdate(String... progress) { progressdialog.setProgress(Integer.parseInt(progress[0])); } @Override protected void onPostExecute(String unused) { dismissDialog(Progress_Dialog_Progress); GetPath = Environment.getExternalStorageDirectory().toString() + "/demo_photo1.jpg"; imageview.setImageDrawable(Drawable.createFromPath(GetPath)); Toast.makeText(MainActivity.this, "Image Downloaded Successfully", Toast.LENGTH_LONG).show(); } } @Override protected Dialog onCreateDialog(int id) { switch (id) { case Progress_Dialog_Progress: progressdialog = new ProgressDialog(MainActivity.this); progressdialog.setMessage("Downloading Image From Server..."); progressdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressdialog.setCancelable(false); progressdialog.show(); return progressdialog; default: return null; } } }
لایه ی xml به صورت زیر خواهد بود:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.downloadimageshowinghorizontalprogressbar_android_examples.com.MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="250dp" android:text="Click here to Download image by showing horizontal progress bar dialog android programmatically" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout>
خروجی کار به صورت زیر است:
- Android
- 2k بازدید
- 5 تشکر