4

我想设置一个图像(从互联网下载)作为我的相对布局的背景透明属性。使用通用图像加载器设置RelativeLayout的下载图像的背景

下面是我在我的layout.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=".MainActivity" 
    android:id="@+id/mainLayout" 
    android:alpha="0.75" > 
.... 
</RelativeLayout> 

这就是我想从活动要做到:

 protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     initializeImageLoader(); 
     String imageUri = "http://www.laederach.com/fileadmin/img/filialen/zermatt/zermattBg.jpg"; 

     Bitmap bitmap = imageLoader.loadImageSync(imageUri1); 


     relativeLayout = (RelativeLayout)findViewById(R.id.mainLayout); 
     Drawable d =new BitmapDrawable(getResources(),bitmap); 
     relativeLayout.setBackground(new BitmapDrawable(bitmap)); 
    } 

    private void initializeImageLoader() { 
     // Create global configuration and initialize ImageLoader with this configuration 
     ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
      .build(); 
     ImageLoader.getInstance().init(config); 

    } 

但它无法正常工作。任何想法为什么这不工作或我失踪?谢谢。

回答

0

使用这个库: -

https://github.com/nostra13/Android-Universal-Image-Loader/

这里面的样本,这是相当不错的图书馆。 下面是使用它的基本思想是: - 参考库样品的更多: -

ImageLoader imageLoader = ImageLoader.getInstance(); 
DisplayImageOptions options = new DisplayImageOptions.Builder() 
         .showImageOnLoading(R.drawable.ic_stub) 
         .showImageForEmptyUri(R.drawable.ic_empty) 
         .showImageOnFail(R.drawable.ic_error) 
         .cacheInMemory(true) 
         .cacheOnDisc(true) 
         .considerExifParams(true) 
         .displayer(new RoundedBitmapDisplayer(20)) 
         .build(); 

imageview = (ImageView)findViewById(R.id.imageView1); 
imageLoader.displayImage(imageUri[position], imageView, options, animateFirstListener); 

//Inner class to animate pics to display 
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { 
static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>()); 

       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
         if (loadedImage != null) { 
           ImageView imageView = (ImageView) view; 
           boolean firstDisplay = !displayedImages.contains(imageUri); 
           if (firstDisplay) { 
             FadeInBitmapDisplayer.animate(imageView, 500); 
             displayedImages.add(imageUri); 
           } 
         } 
       } 
     } 
0

发生的事情可能是因为您要使用的主线程的网络连接。尝试使用这样的东西:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    initializeImageLoader(); 
    String imageUri = "http://www.laederach.com/fileadmin/img/filialen/zermatt/zermattBg.jpg"; 

    new AsyncTask <Void, Void, Void>() { 

     @Override 
     protected Void doInBackground(Void...params) { 
      Bitmap bitmap = imageLoader.loadImageSync(imageUri1); 

      return null; 
     } 

     protected void onPostExecute(Void result) { 

      relativeLayout = (RelativeLayout) findViewById(R.id.mainLayout); 
      Drawable d = new BitmapDrawable(getResources(), bitmap); 
      relativeLayout.setBackground(new BitmapDrawable(bitmap)); 

     }; 
    }.execute(); 
} 

private void initializeImageLoader() { 
    // Create global configuration and initialize ImageLoader with this configuration 
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
     .build(); 
    ImageLoader.getInstance().init(config); 

} 
相关问题