从零开始学Android (4)

来源:互联网 发布:淘宝网上窗帘 编辑:程序博客网 时间:2024/05/01 05:17

有了前面说到的代码,貌似已经可以显示一个横向滑动的画面了,但是距离我得要求还有一定的距离,因为subpage的xml源码如下

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:background="#0000" >         <ImageView     android:id="@+id/mainpage_promotion_1_image"    android:layout_width="fill_parent"    android:layout_height="fill_parent" android:src="@drawable/p_1"/>        </LinearLayout>

 

通过代码可以看出,这里的ImageView中显示的image是静态的,也就是说,在构建工程的时候就要将image放到工程文件里,这样显然不能满足从网上动态取得图片并且显示的要求,于是,新的挑战又来了。

从网上download图片

经过多番查找,发现下面的这段代码可以支持从网上download图片并显示

ImageProxy extends AsyncTask<String, Integer, Bitmap> {        ImageView bmImage;        LinearLayout progressBar;        public ImageProxy(ImageView bmImage) {            this.bmImage = bmImage;        }        protected Bitmap doInBackground(String... urls) {            String urldisplay = urls[0];            Bitmap mIcon11 = null;            try {                InputStream in = new java.net.URL(urldisplay).openStream();                mIcon11 = BitmapFactory.decodeStream(in);            } catch (Exception e) {                Log.e("Error", e.getMessage());                e.printStackTrace();            }            return mIcon11;        }                        protected void onPostExecute(Bitmap result) {            // HIDE THE SPINNER AFTER LOADING FEEDS            bmImage.setImageBitmap(result);        }

虽然后来事实证明这段代码确实可用,但是最开始的时候,在模拟器调试的时候仍然遇到了问题,代码始终出现permission的问题,上网查资料发现,需要在manifast文件中添加internet的user-permission

 <uses-permission android:name="android.permission.INTERNET" />

添加后,仍然报其他的网络相关的错误,查了大把的资料,仍然不得解。终于,本系列博文的第一章提到的那个developer.android.com网站发挥了关键性作用。如果你的计算机使用了带密码的wifi或者需要代理服务器的话,android模拟器要设定apn才您能够通过电脑的网络上网。具体如下:

第一步,设定->更多->移动网络->接入点名称(APN),进入APN页面

第二步,按Menu键,选择“新建APN”

第三步,添上上对应的内容(如下图),然后按Menu键,选择“保存”

终于,图片可以正常download。

 

在画面Layout中通过id找到指定的控件

接下来,就是如何把这个图片更新到画面上。也就是ImageProxy构造的时候应该如何从当前的画面布局中找到ImageView并作为参数传递进去。如果大家还记得我们前面的代码,会发现,ImageView并没有定义在activity_main.xml中,而是定义在activity_subpage.xml中,然后在MainActivity.java中通过后台代码加载进Main视图

//将要分页显示的View装入数组中  LayoutInflater inflater = getLayoutInflater();  pageViews = new ArrayList<View>();  pageViews.add(inflater.inflate(R.layout.activity_sub_page,null));  

如此一来,如果直接通过

inflater.inflate(R.layout.activity_sub_page,null).findViewById(R.id.mainpage_promotion_1_image);

是无法取得Main视图中的imageview控件的,而需要通过pageViews才能正确取得,代码如下

(ImageView)pageViews.get(0).findViewById(R.id.mainpage_promotion_1_image);


好了,到此大功告成,从网上download的图片可以正常显示在main activity中了。

 

 


 


 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩被蝎子蜇了怎么办 孕妇被蝎子蛰了怎么办 怀孕被蝎子蜇了怎么办 孩子被蝎子蛰了怎么办 手被蝎子蛰了怎么办 被东亚钳蝎蛰了怎么办 孕37周羊水过多怎么办 孕38周羊水过多怎么办 孕39周羊水过多怎么办 生完孩子腿关节疼怎么办 手指上长了倒刺怎么办 肥肉吃多了恶心怎么办 大便粘稠怎么回事还便秘怎么办 狗狗大便次数多怎么办 宝宝拉白色稀便怎么办 5个月宝宝流鼻涕怎么办 5个月婴儿流鼻涕怎么办 五个月宝宝流鼻涕鼻塞怎么办 4个月宝宝流鼻涕怎么办 大便经常是稀的怎么办 拉黑色的稀大便怎么办 孕晚期半夜饿了怎么办 肠胃不好大便不成型怎么办 螃蟹吃多了过敏怎么办 吃螃蟹过敏很痒怎么办 吃螃蟹喝啤酒了怎么办 1个月宝宝拉肚子怎么办 被雨林蝎子蛰了怎么办 在家被蜈蚣咬了怎么办 宝宝被蝎子蜇了怎么办 仓鼠只吃面包虫怎么办 套装但是装等低怎么办 被香港人骗了钱怎么办 被红头蛇咬了怎么办 爸妈吵架闹离婚怎么办 包包用酒精擦了怎么办 灰色泰迪毛发白怎么办 手被野猫抓伤了怎么办 想去香港玩两天怎么办 受凉了一直想吐怎么办 受寒后头晕想吐怎么办