Way1:
//MainActivity.java
public class MainActivity {
private static String IMG_URL = "http://openweathermap.org/img/w/";
String imgicon;
// any inside Method / Oncreate
{
//image recived by downloadnew DownloadImageTask((ImageView) findViewById(R.id.imgIcon)) .execute(IMG_URL + imgicon + ".png");}}//endof Oncleate method//start//outside from method or outside from OnCreate
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = bmImage; } protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0]; Bitmap mIcon11 = null; try { InputStream in = new java.net.URL(urldisplay).openStream(); mIcon11 = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return mIcon11; } protected void onPostExecute(Bitmap result) { bmImage.setImageBitmap(result); } }
//end DownloadImageTask
} //end of MainActivity
Way 2:
inside retrofit
//outside from retrofit method
String imgicon;//inside in retrofit method
//start retrofit
try { IPLocData = response.body();
imgicon = IPLocData.getWeather().get(0).getIcon();
//Imagefetch by runon thread getCurrentWeather()
Thread thread = new Thread(new Runnable() { @Override public void run() { try { // https://erikflowers.github.io/weather-icons/ //imgicon recived value from api data
System.out.println("thread"+imgicon); URL url = new URL(IMG_URL + imgicon + ".png"); System.out.println(url); final Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); //UI update methodrunOnUiThread(new Runnable() { @Override public void run() { // Stuff that updates the UI //Your code goes here imgView.setImageBitmap(bmp); } }); } catch (Exception e) { e.printStackTrace(); } } }); thread.start();//end of retrofit
Way 3:
ImageLoadEfftectActivity.java
public class ImageLoadEfftectActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_load_efftect); new DownloadImageTask(getApplicationContext(), (ImageView) findViewById(R.id.imgIcon2), "https://icoconvert.com/images/logo2015.png").execute(); } public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { public static final int ANIMATION_DURATION = 250; private final ImageView mDestination, mFakeForError; private final String mUrl; private final ProgressBar mProgressBar; private Animation.AnimationListener mOutAnimationListener = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { mProgressBar.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }; private Animation.AnimationListener mInAnimationListener = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { if (isBitmapSet) mDestination.setVisibility(View.VISIBLE); else mFakeForError.setVisibility(View.VISIBLE); } @Override public void onAnimationEnd(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } }; private boolean isBitmapSet; public DownloadImageTask(Context context, ImageView destination, String url) { mDestination = destination; mUrl = url; ViewGroup parent = (ViewGroup) destination.getParent(); mFakeForError = new ImageView(context); destination.setVisibility(View.GONE); FrameLayout layout = new FrameLayout(context); mProgressBar = new ProgressBar(context); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER; mProgressBar.setLayoutParams(params); FrameLayout.LayoutParams copy = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); copy.gravity = Gravity.CENTER; copy.width = dpToPx(48); copy.height = dpToPx(48); mFakeForError.setLayoutParams(copy); mFakeForError.setVisibility(View.GONE); mFakeForError.setImageResource(android.R.drawable.ic_menu_close_clear_cancel); layout.addView(mProgressBar); layout.addView(mFakeForError); mProgressBar.setIndeterminate(true); parent.addView(layout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } protected Bitmap doInBackground(String... urls) { String urlDisplay = mUrl; Bitmap bitmap = null; try { InputStream in = new java.net.URL(urlDisplay).openStream(); bitmap = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return bitmap; } protected void onPostExecute(Bitmap result) { AlphaAnimation in = new AlphaAnimation(0f, 1f); AlphaAnimation out = new AlphaAnimation(1f, 0f); in.setDuration(ANIMATION_DURATION * 2); out.setDuration(ANIMATION_DURATION); out.setAnimationListener(mOutAnimationListener); in.setAnimationListener(mInAnimationListener); in.setStartOffset(ANIMATION_DURATION); if (result != null) { mDestination.setImageBitmap(result); isBitmapSet = true; mDestination.startAnimation(in); } else { mFakeForError.startAnimation(in); } mProgressBar.startAnimation(out); } public int dpToPx(int dp) { DisplayMetrics displayMetrics = mDestination.getContext().getResources().getDisplayMetrics(); int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); return px; } } }activity_image_load_efftect.xml
<ImageViewandroid:scaleType="fitXY"android:id="@+id/imgIcon2"android:layout_width="wrap_content"android:layout_height="wrap_content" />
Comments
Post a Comment