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中的代碼替換如下:
@Overridepublic 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;}
看看效果:
就是背景黑了點,字型大了點.......但該有的倒是都有了啊!