如何在ImageView android中加载随机图像

时间:2014-01-10 13:06:27

标签: android random bitmap imageview android-imageview

我的应用是关于点击按钮并在ViewImage中更改图像,这些图像来自服务器。我试图显示一个图像,它正在工作,但问题是我无法在我的ViewImage中显示来自服务器的随机图像。 这是从服务器显示图像的代码:

package com.example.testurl;

 import java.io.InputStream;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.app.Activity;
 import android.app.ProgressDialog;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.BitmapDrawable;
 import android.util.Log;
 import android.view.Menu;
 import android.widget.ImageView;
 import android.widget.LinearLayout;

 public class MainActivity extends Activity {

ImageView my_img;
Bitmap mybitmap;
ProgressDialog pd;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new DisplayImageFromURL((ImageView) findViewById(R.id.my_image)).execute("http://www.tmonews.com/wp-content/uploads/2012/10/androidfigure.jpg");

}

private class DisplayImageFromURL extends AsyncTask<String, Void, Bitmap> 

{
    ImageView bmImage;
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        pd = new ProgressDialog(MainActivity.this);
        pd.setMessage("Loading...");
        pd.show();
    }
    public DisplayImageFromURL(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);
            System.out.println("Success");

        }
        catch (Exception e) 
        {
            Log.e("Error", e.getMessage());
            System.out.println("Erroooooooooooor");
            e.printStackTrace();

        }

        return mIcon11;

    }
    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
        pd.dismiss();
    }
}
}

以下是activity_main.xml的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/back"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="test"
     />

<ImageView
    android:id="@+id/my_image"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

它只显示一个图像,我希望它在我点击按钮时随机显示服务器上的其他图像。 谢谢

1 个答案:

答案 0 :(得分:1)

在array.xml中创建一个数组,如下所示:

<string-array name="url-array">
    <item>http://www.tmonews.com/wp-content/uploads/2012/10/androidfigure.jpg</item>
    <item>url2</item>
    <item>url3</item>
    <item>url4</item>
    etc..
</string-array>

然后当用户单击该按钮时,使用此按钮从数组中获取随机字符串:

String[] array = context.getResources().getStringArray(R.array.url-array);
String rdmStr = array[new Random().nextInt(array.length)];

最后将rdmStr传递给你的AsyncTask而不是url。

我没有测试过,但我认为这样可行。