如何在ImageView java android上设置位图

如何在ImageView java android上设置位图,java,android,bitmap,imageview,android-drawable,Java,Android,Bitmap,Imageview,Android Drawable,我有一个代码,从url获取位图,然后更改imageview,但我不知道为什么这不起作用。。我尝试了一些类似的答案,但图像仍然无法设置 这是一个位图 class picture_get extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { URL img_value = null; t

我有一个代码,从url获取位图,然后更改imageview,但我不知道为什么这不起作用。。我尝试了一些类似的答案,但图像仍然无法设置

这是一个位图

class picture_get extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        URL img_value = null;
        try {
            img_value = new URL("https://graph.facebook.com/"+id+"picture?type=large");
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            bitmap_pic = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
            Log.i("bitmap_pic_get", "ok");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //bitmap_pic = Bitmap.createScaledBitmap(bitmap_pic, 50, 50, false);
        return "Executed";
    }
}
runOnUiThread(新的Runnable(){

}))

所有代码都正常工作,但图像仍然相同。

类图片\u获取任务{
class picture_get extends AsyncTask<String, Void, Bitmap> {

@Override
protected String doInBackground(String... params) {
    URL img_value = null;
    try {
        img_value = new URL("https://graph.facebook.com/"+id+"picture?type=large");
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        bitmap_pic = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
        Log.i("bitmap_pic_get", "ok");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //bitmap_pic = Bitmap.createScaledBitmap(bitmap_pic, 50, 50, false);
    return bitmap_pic
}
@Override
void onPostExecute(Bitmap result){

   image1.setImageBitmap(bitmap_pic);
}
@凌驾 受保护的字符串doInBackground(字符串…参数){ URL img_值=null; 试一试{ img_值=新URL(“https://graph.facebook.com/“+id+”图片?类型=大“); }捕获(格式错误){ //TODO自动生成的捕捉块 e、 printStackTrace(); } 试一试{ bitmap_pic=BitmapFactory.decodeStream(img_value.openConnection().getInputStream()); Log.i(“位图图片获取”、“确定”); }捕获(IOE异常){ //TODO自动生成的捕捉块 e、 printStackTrace(); } //bitmap_pic=bitmap.createScaledBitmap(bitmap_pic,50,50,false); 返回位图图片 } @凌驾 void onPostExecute(位图结果){ image1.setImageBitmap(位图_pic); }
}
类图片\u获取任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
URL img_值=null;
试一试{
img_值=新URL(“https://graph.facebook.com/“+id+”图片?类型=大“);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
bitmap_pic=BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
Log.i(“位图图片获取”、“确定”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//bitmap_pic=bitmap.createScaledBitmap(bitmap_pic,50,50,false);
返回位图图片
}
@凌驾
void onPostExecute(位图结果){
image1.setImageBitmap(位图_pic);
}
}
类图片\u获取任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
URL img_值=null;
试一试{
img_值=新URL(“https://graph.facebook.com/“+id+”图片?类型=大“);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
bitmap_pic=BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
Log.i(“位图图片获取”、“确定”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//bitmap_pic=bitmap.createScaledBitmap(bitmap_pic,50,50,false);
返回位图图片
}
@凌驾
void onPostExecute(位图结果){
image1.setImageBitmap(位图_pic);
}
}
类图片\u获取任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
URL img_值=null;
试一试{
img_值=新URL(“https://graph.facebook.com/“+id+”图片?类型=大“);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
bitmap_pic=BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
Log.i(“位图图片获取”、“确定”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//bitmap_pic=bitmap.createScaledBitmap(bitmap_pic,50,50,false);
返回位图图片
}
@凌驾
void onPostExecute(位图结果){
image1.setImageBitmap(位图_pic);
}

}

我建议在控制ImageView的类中实现一个接口。 然后从onPostExecute(位图bmp)调用它 :

公共类ImageDownloader
{
公共界面图片下载
{
void getImage(位图bmp);
}
连接接头;
图像下载回调;
公共图像下载程序(图像下载cb)
{
conn=新连接();
this.callBack=cb;
}
公共异步任务下载文件(ObjectType ObjectType,int fileID,int width,
整数高度,整数模式)
{
AsyncTask=null;
字符串url=getURL(objectType、fileID、width、height、fitMode);
尝试
{
任务=新下载程序().executeOnExecutor(
AsyncTask.THREAD\u池\u执行器,url);
}
捕获(例外e)
{
callBack.getImage(null);
}
返回任务;
}
字符串getURL(ObjectType ObjectType,int fileID,int width,
整数高度,整数模式)
{
字符串url=conn.url+函数
+“?”+PARAM_OBJECT_TYPE+“=”+objectType.objectType()
+“&”+参数文件ID+“=”+文件ID
+“&”+参数宽度+“=”+宽度
+“&”+参数高度+“=”+高度
+“&”+参数匹配模式+“=”+匹配模式;
返回url;
}
私有类下载程序扩展异步任务
{
@凌驾
受保护的void onPostExecute(位图b)
{
super.onPostExecute(b);
getImage(b);
}
@凌驾
受保护位图doInBackground(字符串…参数)
{
//android.os.Debug.waitForDebugger();
位图bmp=null;
尝试
{
URL=新URL(参数[0]);
URLConnection conn=url.openConnection();
conn.setReadTimeout(10000/*毫秒*/);
conn.setConnectTimeout(15000/*毫秒*/);
conn.setDoInput(真);
InputStream input=conn.getInputStream();
bmp=位图工厂.decodeStream(输入);
}捕获(格式错误){
}捕获(IOE异常){
}
返回bmp;
}
}

}

我建议在控制ImageView的类中实现一个接口。 然后从onPostExecute(位图bmp)调用它 :

公共类ImageDownloader
{
公共界面图片下载
{
void getImage(位图bmp);
}
连接接头;
图像下载回调;
公共图像下载程序(图像下载cb)
{
conn=新连接
@Override
public void run() {
    textView1.setText("Id: "+ id);
    image1.setImageBitmap(bitmap_pic);
}
class picture_get extends AsyncTask<String, Void, Bitmap> {

@Override
protected String doInBackground(String... params) {
    URL img_value = null;
    try {
        img_value = new URL("https://graph.facebook.com/"+id+"picture?type=large");
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        bitmap_pic = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
        Log.i("bitmap_pic_get", "ok");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //bitmap_pic = Bitmap.createScaledBitmap(bitmap_pic, 50, 50, false);
    return bitmap_pic
}
@Override
void onPostExecute(Bitmap result){

   image1.setImageBitmap(bitmap_pic);
}
public class ImageDownloader
{
public interface ImageDownload
{
    void getImage(Bitmap bmp);
}

Connection conn;
ImageDownload callBack;

public ImageDownloader(ImageDownload cb)
{
    conn = new Connection();
    this.callBack = cb;
}

public AsyncTask<String, Void, Bitmap> downloadFile(ObjectType objectType, int fileID, int width,
                                                    int height, int fitMode)
{
    AsyncTask<String, Void, Bitmap> task = null;
    String url = getURL(objectType,fileID,width,height,fitMode);
    try
    {
            task = new Downloader().executeOnExecutor(
                    AsyncTask.THREAD_POOL_EXECUTOR, url);
    }
    catch (Exception e)
    {
        callBack.getImage(null);
    }

    return task;
}

String getURL(ObjectType objectType, int fileID, int width,
              int height, int fitMode)
{
    String url = conn.URL + FUNCTION
            + "?" + PARAM_OBJECT_TYPE + "=" + objectType.ObjectType()
            + "&" + PARAM_FILE_ID + "=" + fileID
            + "&" + PARAM_WIDTH + "=" + width
            + "&" + PARAM_HEIGHT + "=" + height
            + "&" + PARAM_FIT_MODE + "=" + fitMode;

    return url;
}

private class Downloader extends AsyncTask<String, Void, Bitmap>
{
    @Override
    protected void onPostExecute(Bitmap b)
    {
        super.onPostExecute(b);
        callBack.getImage(b);
    }

    @Override
    protected Bitmap doInBackground(String... params)
    {
        //android.os.Debug.waitForDebugger();
        Bitmap bmp = null;
        try
        {
            URL url = new URL(params[0]);

            URLConnection conn = url.openConnection();

            conn.setReadTimeout(10000 /* milliseconds */);
            conn.setConnectTimeout(15000 /* milliseconds */);
            conn.setDoInput(true);


            InputStream input = conn.getInputStream();
            bmp = BitmapFactory.decodeStream(input);
        } catch (MalformedURLException e) {

        } catch (IOException e) {

        }

        return bmp;
    }
}
class picture_get  extends AsyncTask<String, Bitmap, Bitmap> {

    @Override
    protected Bitmap doInBackground(String... params) {
        URL img_value = null;
        try {
            img_value = new URL("https://graph.facebook.com/"+id+"picture?type=large");
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            bitmap_pic = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
            Log.i("bitmap_pic_get", "ok");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //bitmap_pic = Bitmap.createScaledBitmap(bitmap_pic, 50, 50, false);
        return bitmap_pic ;
    }

    @Override
    protected void onPostExecute(Bitmap bitmap_pic) {
    image1.setImageBitmap(bitmap_pic);       
    }
}