Android控制群組合應用一

來源:互聯網
上載者:User

        Android在UI部分為應用程式開發人員提供了極大的便利和靈活性,在此就不一一列舉了,本文擬通過一個小例子窺見一斑。

    很多用過新浪微博手機用戶端Android版本的童鞋想必都對其主介面的效果印象深刻,見下左圖:

     

 

    可以看到,主體的列表框是個很複雜的部分,既要能顯示頭像、微博內容,又要能在微博內容中顯示表情、圖片、@某人、URL,這些元素混雜在一起,對於某些平台(你懂的J)的UI開發來講,簡直太難了。但在Android上來開發,確實很容易實現,右圖就是本程式的運行結果,重點展現了列表框部分的仿照。當然,所用的圖片都是來自於新浪的了。

 

    下面,我們就一起來看一下這個效果的代碼實現。

    首先,需要定義資料模型,主要的資料抽象是Site、Blog、User,分別代表網站、博文、使用者,資料模型如所示:

 

 

    具體成員的含義就不解釋了。如果你沒用過新浪微博,建議去用一下,或者可以參考http://open.weibo.com/中的開發文檔。(其實本文的源碼來源於一個彙總了新浪微博和搜狐微博兩家網站的Android應用,裡面利用了兩家網站的開放API實現了一些功能,這裡已經把網路通訊和商務邏輯全去掉了,原諒我吧)。

 

    這幾個類的代碼如下:

 

package com.wenbin.test.site;</p><p>public class User{<br />private String profileImageUrl="http://tp3.sinaimg.cn/1500460450/50/1289923764/0";<br />private String screenName="測試";<br />private boolean verified=false;</p><p>public User(){</p><p>}</p><p>public String getProfileImageUrl(){<br />return profileImageUrl;<br />}</p><p>public String getScreenName(){<br />return screenName;<br />}</p><p>public void setProfileImageUrl(String profileImageUrl) {<br />this.profileImageUrl = profileImageUrl;<br />}</p><p>public void setScreenName(String screenName) {<br />this.screenName = screenName;<br />}</p><p>public void setVerified(boolean verified) {<br />this.verified = verified;<br />}</p><p>public boolean isVerified(){<br />return verified;<br />}<br />}

 

package com.wenbin.test.site;</p><p>import java.util.Date;</p><p>public class Blog implements Comparable<Blog>{</p><p>private Date createAt=new Date(System.currentTimeMillis());<br />private Blog retweetedBlog;<br />private String text="就算把我打的遍體鱗傷也見不得會[淚]?http://blog.csdn.net/caowenbin @移動雲_曹文斌 。";<br />private String smallPic="";<br />private String source="IE9";<br />private User user;<br />private Site site;</p><p>public Blog(){</p><p>}</p><p>public Blog(Site site){<br />this.site=site;<br />}</p><p>public boolean isHaveRetweetedBlog(){<br />return retweetedBlog!=null;<br />}</p><p>public Blog getRetweetedBlog(){<br />return retweetedBlog;<br />}</p><p>public String getText(){<br />return text;<br />}</p><p>public User getUser(){<br />return user;<br />}</p><p>public String getSmallPic(){<br />return smallPic;<br />}</p><p>public void setRetweetedBlog(Blog retweetedBlog) {<br />this.retweetedBlog = retweetedBlog;<br />}</p><p>public void setText(String text) {<br />this.text = text;<br />}</p><p>public String getInReplyUserScreenName(){<br />if (retweetedBlog!=null && retweetedBlog.getUser()!=null)<br />return retweetedBlog.getUser().getScreenName();<br />else<br />return "";<br />}</p><p>public String getInReplyBlogText(){<br />if (retweetedBlog!=null)<br />return retweetedBlog.getText();<br />else<br />return "";<br />}</p><p>public void setPic(String smallPic){<br />this.smallPic=smallPic;<br />}</p><p>public void setUser(User user) {<br />this.user = user;<br />}</p><p>public int compareTo(Blog another) {<br />int ret=0;</p><p>if (this.createAt.before(another.createAt)){<br />ret=-1;<br />}<br />else if (this.createAt.after(another.createAt)){<br />ret=1;<br />}<br />else{<br />ret=0;<br />}</p><p>return ret;<br />}</p><p>public void setSource(String source) {<br />this.source = source;<br />}</p><p>public String getSource() {<br />return source;<br />}</p><p>public void setSite(Site site) {<br />this.site = site;<br />}</p><p>public Site getSite() {<br />return site;<br />}</p><p>}

 

package com.wenbin.test.site;</p><p>import java.util.HashMap;<br />import java.util.Iterator;<br />import java.util.Map;<br />import java.util.Set;<br />import java.util.TreeSet;</p><p>public abstract class Site{</p><p>protected Set<Blog> blogs=new TreeSet<Blog>();<br />protected String name;<br />protected Map<String,String> faceMap=new HashMap<String,String>();</p><p>public Site() {<br />onConstruct();<br />}</p><p>protected abstract void onConstruct();</p><p>public Map<String, String> getFaceMap() {<br />return faceMap;<br />}</p><p>public Set<Blog> getBlogs(){<br />return blogs;<br />}</p><p>public long getBlogsCount(){<br />return blogs.size();<br />}</p><p>public void addBlog(Blog blog){<br />blogs.add(blog);<br />}</p><p>public void removeBlog(Blog blog){<br />blogs.remove(blog);<br />}</p><p>public Iterator<Blog> getBlogsIterator(){<br />return blogs.iterator();<br />}</p><p>public void clearBlogs(){<br />blogs.clear();<br />}</p><p>public String getName(){<br />return name;<br />}<br />}

 

package com.wenbin.test.site;</p><p>public class SinaSite extends Site {</p><p>protected void onConstruct(){<br />name="新浪微博";<br />initFaceMap();<br />}</p><p>private void initFaceMap(){<br />faceMap.put("[呵呵]", "hehe");<br />faceMap.put("[嘻嘻]", "xixi");<br />faceMap.put("[哈哈]", "haha");<br />faceMap.put("[愛你]", "aini");<br />faceMap.put("[暈]", "yun");<br />faceMap.put("[淚]", "lei");<br />}<br />}

 

    先熟悉一下這些代碼,下次就利用這些資料來製作基本的列表框。

 

——歡迎轉載,轉載請註明出處 http://blog.csdn.net/caowenbin ——

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.