Android新浪微博開發(四)主UI的完善

來源:互聯網
上載者:User
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;}

看看效果:

就是背景黑了點,字型大了點.......但該有的倒是都有了啊!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.