新浪微博开放平台开发-android客户端(3)
2011-08-05 18:37 Virus-BeautyCode 阅读(2743) 评论(3) 编辑 收藏 举报引言
最近不是太忙,花了一些时间学习android的应用开发。经过两个星期的学习,学习的同时还写了很多的demo示例,可以从基本控件及基本动画效果等示例demo集合大放送,持续更新下载。
从这个星期开始,准备拿新浪微博开放平台做个实践,开发一个功能简单的android客户端,会尽可能的完善功能。
今天的内容
上图是这个客户端的主要界面。今天增加的功能。
- 简单的样式和皮肤,只是添加了按钮。
运行的系统是android2.2.
使用到的技术点包括ListView,自定义ListAdapter,多线程相关的Message,Handler,验证相关的OAuth,用户图片的异步加载。
新浪微博的验证使用的是signpost的OAuth组件,没有使用微博的SDK。
源码下载:
源码下载之后,将后缀改为rar,使用压缩软件解压即可。
Style and Themey样式和皮肤
通过样式和皮肤可以美化我们的UI,经过美化的UI会更加吸引用户,至少让我们的应用看起来不至于很丑陋(当然了,也需要合理的样式和皮肤,否则可能会更丑陋)。
样式和皮肤有下面几种使用场景:
1 给一个控件添加独立的样式
- 定义一个样式
1234<style name=
"Text"
>
<item name=
"android:textSize"
>20sp</item>
<item name=
"android:textColor"
>#00dd9a</item>
</style>
- 然后在布局文件的控件中使用style=""设置样式
12<TextView android:text=
"新浪微博V2"
style=
"@style/Text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
2 给几个控件添加同种样式
- 定义一个样式
1234<style name=
"Text"
>
<item name=
"android:textSize"
>20sp</item>
<item name=
"android:textColor"
>#00dd9a</item>
</style>
- 在几个控件中都是用style=""设置样式
1234<TextView android:text=
"新浪微博V2"
style=
"@style/Text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<TextView android:text=
"欢迎使用"
style=
"@style/Text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
3 修改相同种类的控件的样式,例如所有的button的样式,想实现这个效果,有两个方法。
- 方法1:定义一个样式,然后在每个button中使用style属性应用这个样式。
1234567891011121314<style name=
"Button"
parent=
"@android:style/Widget.Button"
>
<item name=
"android:gravity"
>center_vertical|center_horizontal</item>
<item name=
"android:textColor"
>#FFFFFFFF</item>
<item name=
"android:shadowColor"
>#FF000000</item>
<item name=
"android:shadowDx"
>
0
</item>
<item name=
"android:shadowDy"
>-
1
</item>
<item name=
"android:shadowRadius"
>
0.2
</item>
<item name=
"android:textSize"
>16dip</item>
<item name=
"android:textStyle"
>bold</item>
<item name=
"android:background"
>
@drawable
/com_sinaweibo2_list_button_selector</item>
</style>
1234<Button android:text=
"Add"
android:id=
"@+id/com_sinaweibo2_list_btnAdd"
style=
"@style/Button"
android:layout_toRightOf=
"@id/com_sinaweibo2_list_btnRefresh"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
/>
- 方法2:定义为皮肤,然后再manifest文件中应用在application,或者是activity上。
1234567891011121314151617<style name=
"Button"
parent=
"@android:style/Widget.Button"
>
<item name=
"android:gravity"
>center_vertical|center_horizontal</item>
<item name=
"android:textColor"
>#FFFFFFFF</item>
<item name=
"android:shadowColor"
>#FF000000</item>
<item name=
"android:shadowDx"
>
0
</item>
<item name=
"android:shadowDy"
>-
1
</item>
<item name=
"android:shadowRadius"
>
0.2
</item>
<item name=
"android:textSize"
>16dip</item>
<item name=
"android:textStyle"
>bold</item>
<item name=
"android:background"
>
@drawable
/com_sinaweibo2_list_button_selector</item>
</style>
<style name=
"CustomButton"
parent=
"@android:style/Theme.NoTitleBar"
>
<item name=
"android:buttonStyle"
>
@style
/Button</item>
</style>
12<application android:icon=
"@drawable/icon"
android:label=
"@string/app_name"
android:theme=
"@style/CustomButton"
>
显然使用第二种的好处是修改样式,甚至是样式的名字,只需要修改style的定义就可以了,不用在使用style的地方修改任何地方。第二种方法中样式的应用范围是一个activity或者是整个application,如果想做某几个button的控制就只能用第一种方法了。
需要注意的地方
如果只是给文字用的话,直接定义一个一个样式就可以了。
如果是给控件用的话,就需要继承一个基类的样式,然后进行自己的修改,要不然控件会只剩下你定义的样式,其他的都没有了,甚至一个button都可能不能点击了,就是因为样式定义的不完整。为了确保定义完整,你需要继承系统的控件样式,然后进行自己的修改。
<item name="android:buttonStyle">@style/Button</item> 中的buttonStyle代表这个样式或者皮肤应用在所有的button上面。每一种控件都有这几的style,例如listViewStyle、textViewStyle等等。可以在系统自带的皮肤中查找。另外样式和皮肤的使用和系统自带的样式也是不错的学习资源。
更多功能
接下来可能会支持的功能:
- 上下文菜单,删除,添加关注,取消关注,查看某个用户的微博等等。
- 发表博文支持图片。
- UI的美化,性能的优化。
总结
学习的过程中看过两本书,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不错的入门书籍。书我没有全看完,看完大部分吧,边看边写demo。
同时每天泡论坛http://www.eoeandroid.com/forum.php,eoe的开发者门户。回答问题,解决问题,提出问题,发帖子,总之就是锻炼自己,强迫自己锻炼基础和思考。
在论坛上,有很多的中文pdf教程,但是发现大多都是翻译android developer center的Dev Guide和Resources中的内容。所以觉得,如果英文不是很差,建议直接阅读上面的两个板块,同时练习其中的示例,保证两个星期,你会有很大的进步。
参考资料
http://developer.android.com/index.html
http://www.cnblogs.com/hll2008/archive/2011/01/03/1923674.html
http://open.weibo.com/wiki/Oauth
http://blog.csdn.net/lihenair/article/details/6010026
http://www.cnblogs.com/liangxing/archive/2010/10/19/1855938.html
http://code.google.com/p/oauth-signpost/wiki/GettingStarted
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2010-08-05 用微软.NET架构企业解决方案 学习笔记(一)
2008-08-05 中文,分词,搜索,引擎
2008-08-05 简单的,分词算法