2017-01-12 4 views
0

enter image description here enter image description hereКак разместить одно изображение с сервера в мое изображение, используя volly в android?

Я много читал о извлечения изображений с сервера и поместить его в listview подобное, но здесь для деятельности мне нужно иметь одно изображение из служить, которые должны вписываться все устройства perfectly.how я могу сделать это, поскольку я новичок в android, поэтому не знаю много о том, что ... помочь? И если может дать какой-то пример, тогда это будет очень полезно.

вот мой MainActivity.class:

import android.content.Intent; 
import android.graphics.Bitmap; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ImageView; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.widget.Toolbar; 

import android.widget.TextView; 
import android.widget.Toast; 
import com.android.volley.Response; 
import com.android.volley.RequestQueue; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.ImageRequest; 
import com.android.volley.toolbox.NetworkImageView; 
import com.android.volley.toolbox.Volley; 
import com.android.volley.Request; 

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener, FragmentOne.OnFragmentInteractionListener, 
     FragmentTwo.OnFragmentInteractionListener 

{ 
    ImageView im1, im2, im3; 
    ImageLoader mImageLoader; 
    ImageView mImageView; 
    // The URL for the image that is being loaded. 
    private static final String IMAGE_URL = 
      "http://developer.android.com/images/training/system-ui.png"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     im1 = (NetworkImageView) findViewById(R.id.ms1); 


     ImageRequest imageRequest = new ImageRequest(IMAGE_URL, new Response.Listener<Bitmap>() { 
      @Override 
      public void onResponse(final Bitmap response) { 
       im1.setImageBitmap(response); 
      } 
     }, 0, 0, ImageView.ScaleType.CENTER_INSIDE, null, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show(); 
      } 
     }); 

     RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); 
     requestQueue.add(imageRequest); 

     if (savedInstanceState == null) { 
      Fragment fragment = null; 
      Class fragmentClass = null; 
      fragmentClass = FragmentOne.class; 
      try { 
       fragment = (Fragment) fragmentClass.newInstance(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      FragmentManager fragmentManager = getSupportFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 
     } 
     im1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       startActivity(new Intent(MainActivity.this, Login.class)); 
      } 
     }); 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 



    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.action_settings: 
       // User chose the "Settings" item, show the app settings UI... 


      case R.id.action_cart: 


       Intent ibs = new Intent(MainActivity.this,AddToCart.class); 
       ibs.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(ibs); 
       finish(); 
       break; 
      // User chose the "Favorite" action, mark the current item 
      // as a favorite... 


      default: 
       // If we got here, the user's action was not recognized. 
       // Invoke the superclass to handle it. 
       return super.onOptionsItemSelected(item); 

     } 
     return true; 
    } 
    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 
     Fragment fragment = null; 
     Class fragmentClass = null; 
     if (id == R.id.br_menu) { 
      Intent i = new Intent(MainActivity.this,Login.class); 
      startActivity(i); 

     } else if (id == R.id.tr_ordr) { 
      fragmentClass = FragmentTwo.class; 
     } else if (id == R.id.pl_ordr) { 
      fragmentClass = FragmentOne.class; 
     } else if (id == R.id.profl) { 
      fragmentClass = FragmentTwo.class; 
     } else if (id == R.id.addr) { 
      fragmentClass = FragmentOne.class; 
     } else if (id == R.id.crds) { 
      fragmentClass = FragmentTwo.class; 
     } 
     try { 
      fragment = (Fragment) fragmentClass.newInstance(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     //FragmentManager fragmentManager = getSupportFragmentManager(); 
     //fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

    @Override 
    public void onFragmentInteraction(Uri uri) { 

    } 




} 

для m1 мне нужно установить ImageView ...

+0

красивые скриншоты – mklimek

ответ

0

Использование ImageRequest из Volley, чтобы загрузить изображение из URL и использовать его на ImageView.

im1 = (ImageView) findViewById(R.id.imageView_id); //add proper ImageView id not NetworkimageView id 


    ImageRequest imageRequest = new ImageRequest(IMAGE_URL, new Response.Listener<Bitmap>() { 
     @Override 
     public void onResponse(final Bitmap response) { 
      im1.setImageBitmap(response); 
     } 
    }, 0, 0, ImageView.ScaleType.CENTER_INSIDE, null, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

    RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); 
    requestQueue.add(imageRequest); 
0

Всегда используйте некоторые сторонние библиотеки для загрузки изображений, таких как Glide, fresco, picasso.

Почему?
1. Чтобы предотвратить ошибку fav Out of Memory при загрузке многих изображений, например, просмотр списка.
2. Для получения натощак изображения
3. Для использования в будущем. Эти изображения хранятся в кеше, и вы можете использовать их в будущем, не загружая их снова. Это помогает экономить данные и сокращает время ожидания для пользователя.

+0

ok..can и скажите мне через кодирование .. или любой пример u может дать так tht, я могу понять –

+0

Я бы порекомендовал Glide first: https://github.com/bum ptech/glide –

+0

Прост в использовании, просто напишите: Glide.with (this) .load («ваш url изображения»). в (imageView); –

0

Просмотрите информацию об обзоре волейбола и используйте LruCache. Вы можете найти все: here. Просто используйте LruCache. Это очень просто и мощно. Я использую во многих проектах.

шаги для реализации этого

  1. создать класс LruBitmapCache и скачать ниже файл затем скопировать код

    https://drive.google.com/file/d/0B8oLTPOweId6cnFBamhFd3pva2c/view?usp=sharing

  2. создать класс приложения с именем AppController и скопировать код из нижеприведенного файла

    https://drive.google.com/file/d/0B8oLTPOweId6T1VEdlVTeWwxUTQ/view?usp=sharing

  3. в XML включить этот вид вместо ImageView

    <com.android.volley.toolbox.NetworkImageView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/thumbnail" 
        android:layout_width="80dp" 
        android:layout_height="80dp" 
        android:layout_alignParentLeft="true" 
        android:layout_marginRight="8dp"> 
    
  4. В деятельности

    NetworkImageView thumbNail = (NetworkImageView) convertView 
          .findViewById(R.id.thumbnail); 
    
    ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
    
    thumbNail.setImageUrl(url, imageLoader); 
    
+0

Можете ли вы сказать мне, правильно ли я с моим кодом? –

+0

ImageRequest не требуется. Вместо ImageView userImageview. Затем простой сингл для загрузки изображения. im1.setImageUrl ("url", imageLoader). проверьте этот URL. http://www.androidhive.info/2014/07/android-custom-listview-with-image-and-text-using-volley/ –

+0

Я обновил свой код .. я добавил networkImageview –