gpt4 book ai didi

android - 如何从 SD 卡加载图像到 coverview

转载 作者:行者123 更新时间:2023-11-30 03:52:29 25 4
gpt4 key购买 nike

我正在做一个包含封面流程的应用程序。目前我正在尝试从 sd 卡中获取封面流图像。但我不太确定应该如何显示图像。

这是图像适配器:

    public class ImageAdapter extends BaseAdapter {

int mGalleryItemBackground;
private Context mContext;

private FileInputStream fis;
private Integer[] mImageIds = {

//Instead of using r.drawable,
i need to load the images from my sd card instead

R.drawable.futsing,
R.drawable.futsing2

};

private ImageView[] mImages;

public ImageAdapter(Context c) {
mContext = c;
mImages = new ImageView[mImageIds.length];
}

public int getCount() {
return mImageIds.length;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}


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

int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;

ImageView i = new ImageView(mContext);
i.setImageResource(mImageIds[position]);

switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_XLARGE:
//Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show();
Display display4 = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation4 = display4.getRotation();
Log.d("XLarge:",String.valueOf(rotation4));

/** LANDSCAPE **/
if(rotation4 == 0 || rotation4 == 2)
{

i.setLayoutParams(new CoverFlow.LayoutParams(300, 300));
i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
drawable.setAntiAlias(true);
return i;
}

/** PORTRAIT **/
else if (rotation4 == 1 || rotation4 == 3)
{
i.setLayoutParams(new CoverFlow.LayoutParams(650, 650));
i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
drawable.setAntiAlias(true);
return i;
}
break;

default:
}
return null;

}
/** Returns the size (0.0f to 1.0f) of the views
* depending on the 'offset' to the center. */
public float getScale(boolean focused, int offset) {
/* Formula: 1 / (2 ^ offset) */
return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
}

}

这就是我下载和保存文件的方式。我需要使用保存的图像并将其上传到我的 coverflow

 // IF METHOD TO DOWNLOAD IMAGE
void downloadFile() {

new Thread(new Runnable(){ // RUN IN BACKGROUND THREAD TO AVOID FREEZING OF UI
public void run(){
Bitmap bmImg;
URL myFileUrl = null;
try {
//for (int i = 0; i < urlList.size(); i ++)
//{
//url = urlList.get(i);
myFileUrl = new URL("http://static.adzerk.net/Advertisers/d18eea9d28f3490b8dcbfa9e38f8336e.jpg"); // RETRIEVE IMAGE URL
//}
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream in = conn.getInputStream();
Log.i("im connected", "Download");
bmImg = BitmapFactory.decodeStream(in);

saveFile(bmImg);
} catch (IOException e) {
e.printStackTrace();
}}
}).start(); // START THREAD

}

// SAVE THE IMAGE AS JPG FILE
private void saveFile(Bitmap bmImg) {
File filename;
try {
// GET EXTERNAL STORAGE, SAVE FILE THERE
File storagePath = new File(Environment.getExternalStorageDirectory(),"Covers");
storagePath.mkdirs();
filename = new File(storagePath + "/image.jpg");
FileOutputStream out = new FileOutputStream(filename);
bmImg.compress(Bitmap.CompressFormat.JPEG, 90, out);

out.flush();
out.close();
MediaStore.Images.Media.insertImage(getContentResolver(),filename.getAbsolutePath(), filename.getName(),
filename.getName());

// ONCE THE DOWNLOAD FINISHES, CLOSE DIALOG
Toast.makeText(getApplicationContext(), "Image Saved!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}

}

最佳答案

要从 SD 卡加载图像到 ImageView,请将您的代码更改为:

将图片路径放入数组中:

 String strpath=Environment.getExternalStorageDirectory();
private String[] mImageIds = {

strpath+"a.jpg",
strpath+"b.jpg",
strpath+"c.jpg",
.....
};

为了将 getView 设置为 ImageView,您需要创建 Drawable :

ImageView i = new ImageView(mContext); 
i.setImageDrawable(Drawable.createFromPath(mImageIds[position]));

关于android - 如何从 SD 卡加载图像到 coverview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com