Android 将图像从URL加载到库中
我正在尝试将网站中的图像加载到图库中。图像无法加载到库中。第一个(主)映像不加载Android 将图像从URL加载到库中,android,Android,我正在尝试将网站中的图像加载到图库中。图像无法加载到库中。第一个(主)映像不加载 public class viewimages extends Activity { private Gallery gallery; private ImageView imgView; private Integer[] Imgid = { R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4 }; @Over
public class viewimages extends Activity {
private Gallery gallery;
private ImageView imgView;
private Integer[] Imgid = {
R.drawable.a_1, R.drawable.a_2, R.drawable.a_3, R.drawable.a_4
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewimages);
try {
URL url = new URL("http://www.mysite.com/images/1000298/pics/1.jpg");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
imgView = (ImageView)findViewById(R.id.ImageView01);
imgView.setImageBitmap(bmp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
gallery = (Gallery) findViewById(R.id.examplegallery);
gallery.setAdapter(new AddImgAdp(this));
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
imgView.setImageResource(Imgid[position]);
}
});
}
public class AddImgAdp extends BaseAdapter {
int GalItemBg;
private Context cont;
public AddImgAdp(Context c) {
cont = c;
TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme);
GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0);
typArray.recycle();
}
public int getCount() {
return Imgid.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = new ImageView(cont);
List<String> imageNames = new ArrayList<String>();
imageNames.add("1.jpg");
imageNames.add("2.jpg");
//etc. until you've added all images
for (int i = 0; i < imageNames.size(); i++){
URL url;
try {
url = new URL("http://www.mysite.com/images/1000298/pics/" + imageNames.get(i));
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
imgView.setImageBitmap(bmp);
imgView.setLayoutParams(new Gallery.LayoutParams(80, 70));
imgView.setScaleType(ImageView.ScaleType.FIT_XY);
imgView.setBackgroundResource(GalItemBg);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return imgView;
}
}
}
公共类viewimages扩展活动{
私人画廊;
私有图像视图imgView;
私有整数[]Imgid={
R.drawable.a_1,R.drawable.a_2,R.drawable.a_3,R.drawable.a_4
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.viewimages);
试一试{
URL=新URL(“http://www.mysite.com/images/1000298/pics/1.jpg");
位图bmp=BitmapFactory.decodeStream(url.openConnection()
.getInputStream());
imgView=(ImageView)findViewById(R.id.ImageView01);
设置图像位图(bmp);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
gallery=(gallery)findViewById(R.id.examplegallery);
gallery.setAdapter(新AddImgAdp(本));
gallery.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
imgView.setImageResource(Imgid[position]);
}
});
}
公共类addimgapp扩展BaseAdapter{
int GalItemBg;
私人语境控制;
公共AddImgAdp(上下文c){
cont=c;
TypedArray typArray=获取StyledAttributes(R.styleable.GalleryTheme);
GalItemBg=typArray.getResourceId(R.styleable.GalleryTheme\u android\u galleryItemBackground,0);
typArray.recycle();
}
public int getCount(){
返回Imgid.length;
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView imgView=新的ImageView(续);
List imageNames=新建ArrayList();
imageNames.add(“1.jpg”);
imageNames.add(“2.jpg”);
//等等,直到您添加了所有图像
对于(int i=0;i
问题似乎出在AddimGapp类的getView()中。我不确定这是否是尝试从网站加载图像的正确位置?您需要首先加载所有图像。基本上,你要做的是当适配器加载时,你会循环,试图加载所有的图像。创建一个异步任务来下载您的图像(我建议只将它们加载到另一个arraylist中,直到您对缓存之类的事情感到更舒服为止)。然后,设置适配器时,抓住要使用的图像的位置。 例如:
今天已经存在许多android图像加载库,尝试使用它们来简化开发。比如说
"imgView.setImageBitmap(imageArray.get(position))";