误差在图像URL的GridView [英] error in gridview with image url
本文介绍了误差在图像URL的GridView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
林新到Android ..
IM具有图像URL面临网格布局的一个问题。
我的code ..
公共类的行为扩展活动{
静态字符串uri1 =https://i3.ytimg.com/vi/bQaWsVQSLdY/default.jpg;
静态字符串uri2 =https://i4.ytimg.com/vi/cJQCniWQdno/mqdefault.jpg;
静态字符串uri3 =https://i1.ytimg.com/vi/D8dA4pE5hEY/mqdefault.jpg;
公共静态的String [] =网址{uri1,uri2,uri3};
公共位图位图; @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
GridView控件GRD =(GridView控件)findViewById(R.id.gridView1);
grd.setAdapter(新ImageAdapter(本));
grd.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,视图V,INT POS机,
长ID){
Toast.makeText(getBaseContext(),PIC+(POS + 1)+选择,
Toast.LENGTH_SHORT).show();
}
});
} 公共类ImageAdapter延伸BaseAdapter {
私人上下文的背景下;
私人诠释itemBackground; ImageAdapter(上下文C){
上下文= C;
TypedArray A = obtainStyledAttributes(R.styleable.Gallery1);
itemBackground = a.getResourceId(
R.styleable.Gallery1_android_galleryItemBackground,0);
a.recycle();
} 公众诠释的getCount(){
返回urls.length;
} 公共对象的getItem(INT POS){
返回POS;
} 众长getItemId(INT POS){
返回POS;
} 公共查看getView(INT POS,查看简历的ViewGroup以及VG){
位图位图= DownloadImage(网址[POS]);
ImageView的ImageView的=新ImageView的(上下文);
imageview.setImageBitmap(位图);
返回简历;
} 私人位图DownloadImage(字符串URL){
最后弦乐URL1 =网址;
新的Thread(){
公共无效的run(){
在的InputStream = NULL;
消息味精= Message.obtain();
msg.what = 1;
尝试{
在= OpenHttpConnection(URL1);
位图位图= BitmapFactory.de codeStream(中);
束B =新包();
b.putParcelable(位图,位图);
msg.setData(二);
附寄();
}赶上(IOException异常E1){
// TODO自动生成catch块
e1.printStackTrace();
}
}
}。开始();
返回位图;
} 私人的InputStream OpenHttpConnection(字符串urlString)
抛出IOException
在的InputStream = NULL;
INT响应= -1;
网址URL =新的URL(urlString);
康涅狄格州的URLConnection = url.openConnection();
如果(!(康涅狄格州的instanceof HttpURLConnection类))
抛出新IOException异常(不是一个HTTP连接);
尝试{
HttpURLConnection的httpConn =(HttpURLConnection类)美国康涅狄格州;
httpConn.setAllowUserInteraction(假);
httpConn.setInstanceFollowRedirects(真);
httpConn.setRequestMethod(GET);
httpConn.connect();
响应= httpConn.getResponse code();
如果(响应== HttpURLConnection.HTTP_OK){
在= httpConn.getInputStream();
}
}赶上(例外前){
抛出新IOException异常(错误连接);
}
返回;
}
}
}
logcat的
E / AndroidRuntime(832):在
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
E / AndroidRuntime(832):在
android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
E / AndroidRuntime(832):在
android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
E / AndroidRuntime(832):在
android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E / AndroidRuntime(832):在android.view.View.measure(View.java:8313)
E / AndroidRuntime(832):在
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
E / AndroidRuntime(832):在android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E / AndroidRuntime(832):在android.view.View.measure(View.java:8313)
E / AndroidRuntime(832):在
android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
E / AndroidRuntime(832):在
android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
E / AndroidRuntime(832):在android.view.View.measure(View.java:8313)
E / AndroidRuntime(832):在
android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
E / AndroidRuntime(832):在android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
E / AndroidRuntime(832):在android.view.View.measure(View.java:8313)
E / AndroidRuntime(832):在android.view.ViewRoot.performTraversals(ViewRoot.java:839)
E / AndroidRuntime(832):在android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
E / AndroidRuntime(832):在android.os.Handler.dispatchMessage(Handler.java:99)
E / AndroidRuntime(832):在android.os.Looper.loop(Looper.java:123)
E / AndroidRuntime(832):在android.app.ActivityThread.main(ActivityThread.java:3683)
E / AndroidRuntime(832):在java.lang.reflect.Method.invokeNative(本机方法)
E / AndroidRuntime(832):在java.lang.reflect.Method.invoke(Method.java:507)
E / AndroidRuntime(832):在
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
E / AndroidRuntime(832):在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E / AndroidRuntime(832):在dalvik.system.NativeStart.main(本机方法)
块引用>解决方案我建议你阅读本:的 HTTP://xjaphx.word$p$pss.com/2011/06/12/custom-grid-view-of-applications/
Im new to android..
im facing a problem in grid layout with image url..
my code..
public class act extends Activity { static String uri1 = "https://i3.ytimg.com/vi/bQaWsVQSLdY/default.jpg"; static String uri2 = "https://i4.ytimg.com/vi/cJQCniWQdno/mqdefault.jpg"; static String uri3 = "https://i1.ytimg.com/vi/D8dA4pE5hEY/mqdefault.jpg"; public static String[] urls = { uri1, uri2, uri3 }; public Bitmap bitmap; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView grd = (GridView) findViewById(R.id.gridView1); grd.setAdapter(new ImageAdapter(this)); grd.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { Toast.makeText(getBaseContext(), "pic" + (pos + 1) + "select ", Toast.LENGTH_SHORT).show(); } }); } public class ImageAdapter extends BaseAdapter { private Context context; private int itemBackground; ImageAdapter(Context c) { context = c; TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); itemBackground = a.getResourceId( R.styleable.Gallery1_android_galleryItemBackground, 0); a.recycle(); } public int getCount() { return urls.length; } public Object getItem(int pos) { return pos; } public long getItemId(int pos) { return pos; } public View getView(int pos, View cv, ViewGroup vg) { Bitmap bitmap = DownloadImage(urls[pos]); ImageView imageview = new ImageView(context); imageview.setImageBitmap(bitmap); return cv; } private Bitmap DownloadImage(String URL) { final String URL1 = URL; new Thread() { public void run() { InputStream in = null; Message msg = Message.obtain(); msg.what = 1; try { in = OpenHttpConnection(URL1); Bitmap bitmap = BitmapFactory.decodeStream(in); Bundle b = new Bundle(); b.putParcelable("bitmap", bitmap); msg.setData(b); in.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }.start(); return bitmap; } private InputStream OpenHttpConnection(String urlString) throws IOException { InputStream in = null; int response = -1; URL url = new URL(urlString); URLConnection conn = url.openConnection(); if (!(conn instanceof HttpURLConnection)) throw new IOException("Not an HTTP connection"); try { HttpURLConnection httpConn = (HttpURLConnection) conn; httpConn.setAllowUserInteraction(false); httpConn.setInstanceFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.connect(); response = httpConn.getResponseCode(); if (response == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream(); } } catch (Exception ex) { throw new IOException("Error connecting"); } return in; } } }
Logcat
E/AndroidRuntime(832): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) E/AndroidRuntime(832): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) E/AndroidRuntime(832): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) E/AndroidRuntime(832): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) E/AndroidRuntime(832): at android.view.View.measure(View.java:8313) E/AndroidRuntime(832): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) E/AndroidRuntime(832): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) E/AndroidRuntime(832): at android.view.View.measure(View.java:8313) E/AndroidRuntime(832): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531) E/AndroidRuntime(832): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) E/AndroidRuntime(832): at android.view.View.measure(View.java:8313) E/AndroidRuntime(832): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) E/AndroidRuntime(832): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) E/AndroidRuntime(832): at android.view.View.measure(View.java:8313) E/AndroidRuntime(832): at android.view.ViewRoot.performTraversals(ViewRoot.java:839) E/AndroidRuntime(832): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) E/AndroidRuntime(832): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(832): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime(832): at android.app.ActivityThread.main(ActivityThread.java:3683) E/AndroidRuntime(832): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(832): at java.lang.reflect.Method.invoke(Method.java:507) E/AndroidRuntime(832): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) E/AndroidRuntime(832): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) E/AndroidRuntime(832): at dalvik.system.NativeStart.main(Native Method)
解决方案I recommend to you to read this : http://xjaphx.wordpress.com/2011/06/12/custom-grid-view-of-applications/
这篇关于误差在图像URL的GridView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文