1 如何通过http协议从网上下载图片
通过地址构造URL对象,同过URL对象得到HttpURLConnection 对象,然后得到InputStream ,再用InputStream 构造Bitmap 对象。
public Bitmap getBitmapFromUrl(String url) {
Bitmap bitmap = null;
URL BitmapUrl=null;
try {
BitmapUrl = new URL(url);
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) BitmapUrl.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
将返回的Bitmap对象作为参数传入ImageView的setImageBitmap中,就可以在ImageView控件中显示图像了。
3 每个微博条目布局的xml文件怎么写
左边一个头标的图片,右边一堆;右边最上边是昵称加时间,然后下边是内容,有图片的话还会加上图片,然后下边是个框,框住转发的东西包括昵称,内容加图片。
转发的内容有的多有的少啊,这个框该多大呢?还好Android提供了个工具可以制作自由拉伸的图片.9.png图片
3.1 可拉伸的图片,.9.png图片的实现
在Android的sdk的tools文件夹中,有个draw9patch.bat工具,打开一个png文件,然后有鼠标在左和上方画黑线,则可以看出水平绿色的区域表示当上下拉伸时扩展的区域,垂直的表示左右拉伸时扩展的区域,没被包含的表示拉伸时保持不变
3.2 布局界面的实现
<?xml version="1.0" encoding="utf-8"?>
<!-- 全局是个LinearLayout,左边是头像,右边是一堆别的东西 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="horizontal">
<!-- 左边的头像+v认证 -->
<RelativeLayout android:layout_width="55.0dip"
android:layout_height="55.0dip" android:layout_weight="0.0">
<!--头像, android:scaleType="fitCenter",变大小居中显示 -->
<ImageView android:id="@+id/home_headicon"
android:background="@drawable/headicon" android:layout_width="45.0dip"
android:layout_height="45.0dip" android:scaleType="fitCenter" />
<!-- v认证,将其置于父窗口的右下脚 -->
<ImageView android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/vertify"
android:src="@drawable/v" android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"></ImageView>
</RelativeLayout>
<!-- 右边的一堆,如同表格似的一行一行的表示 -->
<LinearLayout android:orientation="vertical" android:id="@+id/lyRightLayout"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_margin="5.0dip">
<!-- 用来显示昵称时间的最上面一行 -->
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginRight="3.0dip">
<!--左边显示昵称 -->
<TextView android:textSize="15.0sp" android:textColor="#ffff00"
android:id="@+id/ltmUserName" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="昵称" />
<!-- 时间还有一个小图片 -->
<RelativeLayout android:gravity="right"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginRight="3.0dip" android:layout_weight="1.0">
<!--时间 -->
<TextView android:textSize="12.0sp" android:textColor="#ffff00"
android:layout_gravity="right" android:id="@+id/ltmDate"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="3.0dip" android:text="时间"
android:layout_alignParentRight="true" />
<!--时间图片 -->
<ImageView android:id="@+id/ltmtimePic"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="3.0dip" android:src="@drawable/timepic"
android:layout_toLeftOf="@id/ltmDate" android:layout_alignTop="@id/ltmDate" />
</RelativeLayout>
</LinearLayout>
<!--微博的主要内容 -->
<TextView android:textSize="20.0sp" android:textColor="#fffff0"
android:id="@+id/lsmContent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginTop="10.0dip"
android:text="这里显示微博的内容" />
<!-- 微博的图片,如果有的话 -->
<ImageView android:id="@+id/lsmweiboPic" android:visibility="gone"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<!-- 如果是转发的微博的话,源微博显示在下面,背景就是可伸缩的图片 -->
<LinearLayout android:orientation="vertical" android:id="@+id/subLayout"
android:background="@drawable/popup" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginBottom="4.0dip">
<!--源微博的内容 -->
<TextView android:textSize="18.0sp" android:textColor="#00ffff"
android:id="@+id/lsmretweedweibo" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginTop="3.0dip"
android:layout_marginBottom="3.0dip" android:text="转发微博的源微博" />
<!-- 源微博的图片,如果有的话 -->
<ImageView android:id="@+id/subweiboPic"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
将getView中的代码替换如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/*Log.i("myweibo", "listadpter--->getView position:" + position);
TextView tv1 = new TextView(ctx);
tv1.setText(adplist.get(position).getUser().getName() + ":"
+ adplist.get(position).getText() + "\npic:"
+ adplist.get(position).getBmiddle_pic());
return tv1;*/
Status tmpstu = adplist.get(position);
convertView = inflater.inflate(R.layout.homelistitem, null);
TextView tv1 = (TextView)convertView.findViewById(R.id.ltmUserName);
tv1.setText(tmpstu.getUser().getName());
TextView tv2 = (TextView)convertView.findViewById(R.id.lsmContent);
tv2.setText(tmpstu.getText());
ImageView iv1 = (ImageView)convertView.findViewById(R.id.home_headicon);
if(!(tmpstu.getUser().getProfileImageURL()).equals("")){
iv1.setImageBitmap(WeiboUtil.getBitmapFromUrl(tmpstu.getUser().getProfileImageURL()));
}
ImageView iv2 = (ImageView)convertView.findViewById(R.id.lsmweiboPic);
if(tmpstu.getThumbnail_pic()!=""){
iv2.setImageBitmap(WeiboUtil.getBitmapFromUrlString(tmpstu.getThumbnail_pic()));
iv2.setVisibility(View.VISIBLE);
}
LinearLayout sublay = (LinearLayout)convertView.findViewById(R.id.subLayout);
Status retsta = tmpstu.getRetweeted_status();
if(retsta==null){
sublay.setVisibility(View.GONE);
}
else{
TextView tv3 = (TextView)convertView.findViewById(R.id.lsmretweedweibo);
tv3.setText("@"+retsta.getUser().getName()+":"+retsta.getText());
if(retsta.getThumbnail_pic()!=""){
ImageView iv3 = (ImageView)convertView.findViewById(R.id.subweiboPic);
iv3.setImageBitmap(WeiboUtil.getBitmapFromUrlString(retsta.getThumbnail_pic()));
}
}
return convertView;
}
看看效果:
就是背景黑了点,字体大了点.......但该有的倒是都有了啊!