Titanium android远程图像未显示

时间:2015-03-14 16:08:32

标签: android image imageview titanium

我正在使用Titanium构建一个跨平台的移动应用程序,我主要使用iOS模拟器进行测试,并且我已经完成了所有功能。现在我想让Android上的应用程序也无错误。我现在面临的一个问题是远程图像不再显示(当它们在iOS上时)。来自远程图像的URL可以从服务器检索并且应该是正确的,因为我在iOS上看到了图像。这是图片网址之一: http://elgg.masaer.com/mod/profile/icondirect.php?joindate=1426024336&guid=47&size=large 这是我用来显示图像的代码:

var profilePic = Titanium.UI.createImageView({
        image: post.User.avatar,
        width: '60px',
        height: '60px',
        borderRadius: 5
    });

有谁知道可能是什么问题。也许是因为网址没有图片文件的扩展名?提前谢谢!

2 个答案:

答案 0 :(得分:0)

可能的答案是this

import java.net.URLConnection;
import android.os.Bundle;
import android.os.StrictMode;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

public class MainActivity extends Activity {

ImageView mImgView1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .permitAll().build();
    StrictMode.setThreadPolicy(policy);

    mImgView1 = (ImageView) findViewById(R.id.mImgView1);
    String url = "https://www.morroccomethod.com/components/com_virtuemart/shop_image/category/resized/Trial_Sizes_4e4ac3b0d3491_175x175.jpg";
    BitmapFactory.Options bmOptions;
    bmOptions = new BitmapFactory.Options();
    bmOptions.inSampleSize = 1;
    Bitmap bm = loadBitmap(url, bmOptions);
    mImgView1.setImageBitmap(bm);
}

public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
    Bitmap bitmap = null;
    InputStream in = null;
    try {
        in = OpenHttpConnection(URL);
        bitmap = BitmapFactory.decodeStream(in, null, options);
        in.close();
    } catch (IOException e1) {
    }
    return bitmap;
}

private static InputStream OpenHttpConnection(String strURL)
        throws IOException {
    InputStream inputStream = null;
    URL url = new URL(strURL);
    URLConnection conn = url.openConnection();

    try {
        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setRequestMethod("GET");
        httpConn.connect();

        if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
            inputStream = httpConn.getInputStream();
        }
    } catch (Exception ex) {
    }
    return inputStream;
}
}

答案 1 :(得分:0)

经过一番搜索,我发现android不够智能,不能使用图片网址,你必须自己检索图像数据。这可用于下载远程图像。

function loadImage(imageView,url) {
   var http = Titanium.Network.createHTTPClient();

    http.onload = function() {
     imageView.image=this.responseData;
    };

    http.open('GET',url);

    http.send();
};