0

Webサービスからリストビューの画像とタイトルを読み込んでいますテキストはf9ですが、画像が大きすぎます。サイズを変更する方法と、リストビューの各行の右側にテキストを設定し、左側に画像を設定したいです。この方法を使用していますサイズ変更されたビットマップ=Bitmap.createScaledBitmap(bitmap、70、70、true); しかし、エミュレータには何も表示されませんこれは私が画像をロードしている私の高価なクラスです

public static Bitmap loadPhotoBitmap(URL url) {
Bitmap bitmap = null ;
InputStream in = null;
BufferedOutputStream out = null;
BufferedOutputStream bfs = null;

try {
FileOutputStream fos = new FileOutputStream("/sdcard/photo-tmp.jpg");
bfs = new BufferedOutputStream(fos);

in = new BufferedInputStream(url.openStream(),8192);

final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
out = new BufferedOutputStream(dataStream, 8192);
copy(in, out);                    
out.flush();
final byte[] data = dataStream.toByteArray();

bfs.write(data, 0, data.length);
bfs.flush();

BitmapFactory.Options opt = new BitmapFactory.Options();
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opt);

//System.out.println(resized);
Bitmap resized = Bitmap.createScaledBitmap(bitmap, 70,70, true);
    return  resized;
} catch (IOException e) {
// android.util.Log.e("message", "Could not load photo: " + this, e);
System.out.println("Exception while loading image");
} finally {
closeStream(in);
closeStream(out);
closeStream(bfs);
}
System.out.println("returning");
return  bitmap;
}

LazyAdapter.class

public View getView(int position, View convertView, ViewGroup parent) {

System.out.println("Exception before..");
String strUrl = Constants.vctrImagePath.elementAt(counter).toString();// getting imgurl  
System.out.println("Urls...." + strUrl);
URL url =null;
try {
url = new URL(strUrl);
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
e.printStackTrace();
}

Bitmap bitmap = Constants.loadPhotoBitmap(url);
//Bitmap resized = Bitmap.createScaledBitmap(bitmap, 70, 70, true);


RelativeLayout layout = new RelativeLayout(mContext);
RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);        

TextView text1 = new TextView(mContext);
text1.setText(Constants.vctrCategory.elementAt(counter).toString());
LayoutParams params1 = new       LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
text1.setLayoutParams(params1);
text1.setTextSize(20);
text1.setGravity(Gravity.RIGHT);
layout.addView(text1);
ImageView img = new ImageView(mContext);
img.setImageBitmap(bitmap);

layout.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout.addView(img);
counter++;
return layout;
}

private void setContentView(ImageView image) {
// TODO Auto-generated method stub

}
4

2 に答える 2

2

それ以外の

BitmapFactory.Options opt = new BitmapFactory.Options();
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opt);

それを

BitmapFactory.Options opts = new BitmapFactory.Options();               
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opts);
于 2012-11-12T19:19:59.323 に答える
0

この bitmapfactory クラスには問題はありませんでした。問題を解決しました。怠惰なアダプター クラスのコードを変更するだけです。

Bitmap bitmap = Constants.DownloadImage(strUrl);
    Bitmap resized=null;
    if(bitmap!=null){
    resized = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
}else{
    System.out.println(strUrl+ "no image here");
}

リストビューで画像のサイズを変更する前に、リストビューのアダプタークラスでサイズを変更します。

于 2012-11-30T18:51:13.457 に答える