android SDK中提供了TabHost使用起来很方便, 但是当tab比较多的时候,就会挤在一起,而不能横向的滚动比较麻烦.
于是我尝试的制作了一个简单的使用Gallery来代替TabHost的例子, 确实够简单的,自娱自乐.....仅供参考
使用BroadcastReceiver来切换不同的Tab
public class ChangeTabBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int index = intent.getExtras().getInt(CURRENT_TAB_INDEX);
Log.i(TAG, "onReceive index = " + index);
// setCurrentTab(index);
topBar.setSelection(index);
startGroupActivity(titleList.get(index).toString(),
(Intent) intentList.get(index));
}
}
没有详细研究SDK中的TabHost实现机制, 使用起来还是有些不方便的地方
public class GalleryTabActivityDemo extends GalleryTabactivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setDelegate(new SliderBarActivityDelegateImpl());
for (int i = 0; i < 14; i++) {
Intent intent;
if (i % 2 == 0)
intent = new Intent(this, DemoActivity1.class);
else
intent = new Intent(this, DemoActivity2.class);
this.addTab("title" + i, android.R.drawable.star_on, intent);
}
//必须在addTab后调用commit, 有点麻烦, 将来会找更好的办法
super.setup();
}
//可自定义切换tab时触发的操作
private class SliderBarActivityDelegateImpl extends
SliderBarActivityDelegate {
protected void onTabChanged(int tabIndex) {
Log.d("onTabChanged", "" + tabIndex);
}
}
}
最近工作比较忙,没太多时间学习android,将来会慢慢改善, 先凑合用, 抛块砖先, 各位有玉的使劲砸, 金条也行
下载
posted @
2010-05-13 15:46 小强 阅读(2146) |
评论 (0) |
编辑 收藏
学习android的练习小软件.
制作文件管理器的初衷是发现G1上并没有随系统附带文件浏览软件,
考虑到电子书,媒体播放器或其它一些软件会使用到文件浏览,选择文件或文件夹, 所以先做了这个文件管理工具并封装一些参数供第三方程序调用
应用很简单, 只是把手机和SD卡中的文件列出来, 支持图片和mp3的简单预览. 未来会有更多的功能扩充进来. 欢迎大家试用并提出意见.
--------------------------------------------------------4月更新0.3版
--------------------------------------------------------------------
自从上次更新后工作太忙,半年没玩儿ANDROID了, 最近刚刚闲下来, 继续完善文件管理器
顺便封装了一些其它的widget, 整理后再发上来
看着网上铺天盖地的各种android应用, 再看看我这个小破软件, 实在有点拿不出手, 但既然做了就得不断完善下去
目标是做一个封装widget的集合, 方便开发者使用
1, 使用线程和handler message机制读取文件列表, 提升软件性能
2, 解决文件列表多次滚动后速度下降的问题
3, 打开文件使用手机关联的应用
4, 增加文件缩略图显示
--------------------------------------------------------10月27日更新0.2版
--------------------------------------------------------------------
1. 0.2版主要增加了一些使用者的功能, 增加了收藏夹功能, 方便用户快速的浏览到经常访问的文件或文件夹
2. 修改了一些for developer的bug
-------------------------------------------------------- 0.1版
--------------------------------------------------------------------
-------------------------------------------------------------------- for
developer
--------------------------------------------------------------------
G1上并没有随系统附带文件浏览软件, 考虑到电子书,媒体播放器或其它一些软件会使用到文件浏览,选择文件或文件夹,
所以先做了这个文件管理工具并封装一些参数供第三方程序调用,可以做为插件形式使用
把文件管理器封装起来并使用intent机制设置浏览参数和调用
目前暂不支持多文件选择, 将在下一版中发布
调用程序示例
1
Button button2
=
(Button) findViewById(R.id.but2);
2
button2.setOnClickListener(testFileManager);
1
private
OnClickListener testFileManager
=
new
OnClickListener() {
2
public
void
onClick(View v) {
3
Intent intent
=
new
Intent(
"
net.uiiang.android.alkaid.FILEMANAGER
"
);
4
5
//
参数root_directory, 设置浏览的根目录, 例如设置
/sdcard则只允许程序浏览sd卡中的内容, 当程序回退上层文件夹到/sdcard后不再向上回退
6
//
参数类型为字符串, 默认为"/"(根目录)
7
intent.putExtra(
"
root_directory
"
,
"
/
"
);
8
9
//
参数exclude_directory, 设置不显示的目录, 例如设
置"/data", "/dev", 则"/data", "/dev"这两个目录不会显示给用户
10
//
参数类型为字符串数组, 默认不排除任何文件夹
11
intent.putExtra(
"
exclude_directory
"
,
12
new
String[] {
"
/data
"
,
"
/dev
"
});
13
14
//
参数thrid_party_call, 当第三方程序调用时, 必须设置
此参数为true, 否则下面几个参数不起作用
15
//
参数类型为boolean, 默认为false, 会显示以下参数可设置的
所有菜单(除 选择菜单)
16
intent.putExtra(
"
thrid_party_call
"
,
true
);
17
18
//
参数directory_show_type, 目录浏览方式
19
//
参数类型为 int, 默认为0
20
//
0 : 显示文件和文件夹(默认)
21
//
1 : 只显示文件
22
//
3 : 只显示文件夹
23
intent.putExtra(
"
directory_show_type
"
,
0
);
24
25
//
参数use_menu_items, 设置显示的预置菜单
26
//
参数类型为:int数组
27
//
菜单列表:
28
//
1 : 上下文菜单-打开 (文件夹)
29
//
2 : 上下文菜单-删除
30
//
3 : 上下文菜单-详细信息
31
//
4 : 上下文菜单-复制
32
//
5 : option菜单-粘贴
33
//
6 : option菜单-新建文件夹
34
//
99: 上下文菜单-选择 , 若需要文件管理器返回一个选中的文件路
径, 则必须设置此菜单
35
//
当用户点击此菜单后, 文件管理器退出并返回给调用程序一个字符串数
组, 数组中包含文件路径信息
36
intent.putExtra(
"
use_menu_items
"
,
new
int
[] {
99
});
37
38
//
参数show_info_in_list, 是否在浏览文件中显示简单的
信息, 如文件夹中包含多少子文件夹和文件
39
//
默认为true
40
intent.putExtra(
"
show_info_in_list
"
,
false
);
41
42
//
参数show_file_extension, 是否显示文件后缀名
43
//
默认为 true
44
intent.putExtra(
"
show_file_extension
"
,
false
);
45
46
//
参数use_simple_view, 是否使用简单文件预览
47
//
用户单击文件后可以简单的预览文件内容, 目前支持图片和音乐文件
48
//
默认为 true
49
intent.putExtra(
"
use_simple_view
"
,
false
);
50
51
//
参数animation_show_list, 是否使用动态效果显示文
件列表, 目前只支持向下卷帘式的效果
52
//
默认为true
53
intent.putExtra(
"
animation_show_list
"
,
true
);
54
55
//
参数mutiple_select, 是否支持多选, 为true可以一次
性选择多个文件或目录
56
//
默认为false
57
intent.putExtra(
"
mutiple_select
"
,
false
);
58
59
startActivityForResult(intent, SELECT_FILE);
60
}
61
};
通过startActivityForResult调用文件管理器, 并使用上下文菜单选择文件或文件夹
点击"选择"后, 返回到调用程序
1
@Override
2
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
3
super
.onActivityResult(requestCode, resultCode, data);
4
if
(requestCode
==
SELECT_FILE) {
5
if
(resultCode
==
RESULT_OK) {
6
//
参数名为selected_uri, 得到字符串数组中包含文件路径
7
String[] selectArr
=
data.getExtras().getStringArray(
8
"
selected_uri
"
);
9
if
(selectArr
!=
null
) {
10
String selectFile
=
""
;
11
for
(String string : selectArr) {
12
System.out.println(
"
you select =
"
13
+
data.getExtras().getStringArray(
14
"
selected_uri
"
));
15
}
16
}
17
18
}
19
}
20
}
posted @
2010-05-05 17:10 小强 阅读(329) |
评论 (0) |
编辑 收藏
摘要: 1. 0.2版主要增加了一些使用者的功能, 增加了收藏夹功能, 方便用户快速的浏览到经常访问的文件或文件夹
2. 修改了一些for developer的bug
阅读全文
posted @
2009-10-27 16:05 小强 阅读(1630) |
评论 (2) |
编辑 收藏
摘要: 为文件将来做电子书或媒体播放器等程序时浏览文件
把文件管理器封装起来并使用intent机制设置浏览参数和调用
阅读全文
posted @
2009-10-17 20:21 小强 阅读(2660) |
评论 (2) |
编辑 收藏
摘要: 练习作品 一个简单的 android 文件管理器, 支持第三方程序调用
阅读全文
posted @
2009-10-17 19:50 小强 阅读(1922) |
评论 (1) |
编辑 收藏
摘要: 为了体现出android强大的网络功能 写了一个小爬虫程序, 通过网络直接从网站上下载电子书
阅读全文
posted @
2008-06-30 12:00 小强 阅读(1371) |
评论 (0) |
编辑 收藏
摘要: 晚上等着看欧洲杯,闲来无赖接着研究android , 更新了一下uReader
阅读全文
posted @
2008-06-18 12:46 小强 阅读(1498) |
评论 (4) |
编辑 收藏
摘要: 闲来无事, 研究了一下android. 做一个小应用练手.
阅读全文
posted @
2008-06-17 17:31 小强 阅读(1876) |
评论 (4) |
编辑 收藏
摘要:
阅读全文
posted @
2008-06-10 17:34 小强 阅读(404) |
评论 (0) |
编辑 收藏
摘要: 删除ANDROID数据库
阅读全文
posted @
2008-06-10 17:30 小强 阅读(1892) |
评论 (0) |
编辑 收藏
摘要: android 技巧一, 快速显示修改结果
阅读全文
posted @
2008-06-03 17:44 小强 阅读(350) |
评论 (0) |
编辑 收藏
摘要: device commands:
adb update DATAOPTS
- Flash the specified update file.
If file is not passed, update.zip is used.
adb push - copy file/dir to device
adb pull - copy file/dir from device
adb sync [ ] - copy host->device only if changed
(see 'adb help all')
adb shell - run remote shell interactively
阅读全文
posted @
2008-06-03 17:36 小强 阅读(1046) |
评论 (0) |
编辑 收藏
摘要: adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:
1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
2、在设备上运行shell命令;
3、管理设备或手机模拟器上的预定端口;
4、在设备或手机模拟器上复制或粘贴文件;
阅读全文
posted @
2008-06-03 17:35 小强 阅读(1500) |
评论 (0) |
编辑 收藏
摘要: Android是基于Linux内核的,对于喜欢研究底层的朋友来说,自然不会放过搞明白Linux层面上一些东西的机会。当然,最终目的还是要搞清楚Linux是如何和上层lib以及虚拟机结合的,但是这得等Google完全开源Android之后了。很多关于Linux运行的细节,都可以通过adb的shell来看到。 阅读全文
posted @
2008-06-03 17:30 小强 阅读(3572) |
评论 (1) |
编辑 收藏
大学 (一) http://www.blogjava.net/uiiang/archive/2007/05/27/120342.html
康诰曰:“克明德。”大甲曰:“顾諟天之明命。”帝典曰:“克明峻德。”皆自明也。
汤之盘铭曰:“苟日新,日日新,又日新。”康诰曰:“作新民。”诗曰:“周虽旧邦,其命惟新。”是故君子无所不用其极。
康诰说:“能够弘扬光明的品德。”太甲说:“念念不忘这上天赋予的光明禀性。”尧典说:“能够弘扬崇高的品德。”这些都是说要自己弘扬光明正大的品德。
商汤王刻在浴盆上的箴言说:“如果能够有一天自新,就应保持天天自新,永远不断自新。”康诰中说:“鼓励人们弃旧图新。”诗经中说:“周朝虽然是古老的国家,但却禀受了天命,自我更新。”所以,品德高尚的人无处不追求完善。
软件开发乃至IT行业的更新速度极快,今天出个JAVA,明天出个.net,后天又来个什么ruby。所以咱们要不断的学习,不断的进步才能跟上技术的更新速度,才能不被淘汰。
但什么叫自新,这个自新不是说今天出了JAVA,呼啦呼啦的就全买thinking in java去了,明天出了.net又呼啦呼听的全安.net 2005去了。自新是一个发掘和汲取的过程。别一天到晚的看不起struts嫌他麻烦,瞧不上hibernate嫌他浪费性能。人家的技术能在全世界流行,必然有过人之处。想想他为什么能在全世界流行,他体现的是哪种设计思想。多学学人家的优点,想办法把这些优点用在自己的代码上。
诗云:“邦畿千里,惟民所止。”诗云:“缗蛮黄鸟,止于丘隅。”子曰:“于止,知其所止,可以人而不如鸟乎!”
诗云:“穆穆文王,于缉熙敬止!”为人君,止于仁;为人臣,止于敬;为人子,止于孝;为人父,止于慈;与国人交,止于信。
诗经说:“京城及其周围,都是老百姓向往的地方。”诗经又说:“‘缗蛮’叫着的黄鸟,栖息在山丘的角落上。”孔子说:“连黄鸟都知道它该栖息在什么地方,难道人还能不如一只鸟儿吗?”
诗经说:“品德高尚的文王啊,为人光明磊落,做事始终庄重谨慎。”做国君的,要做到仁义;做臣子的,要做到恭敬;做子女的,要做到孝顺;做父亲的,要做到慈爱;与他人交往,要做到讲信用。
经常看到论坛上有人抱怨,自己的工作单调只不过是复制粘贴别人的代码。可你有没有想过为什么去复制粘贴,是因为他的代码写得太好了,放到哪里都能用?还是架构设计得不合理,需要重构。如果是好,他好在哪里,他为什么这么写。如果不好,又不好在哪里,应该怎么改,如果是你来设计,你又会怎么做来避免犯这样的错误。
很多人抱怨自己在一个小公司不得志,可有没有想过为什么在这种小公司。你有没有给IBM,google这样的公司投过简历,投了简历有没有面试,面试了这些大公司为什么不要你,而是录用了别人。要摆正心态,找到自己的位置。你可以觉得不得志,但要有真才实学。庞统那么大的才,到了刘备手下不还是先被发配去当县令。是金子终要发光的,后来刘备不也终于认识到庞统的才能并委以重任吗。可如果你啥都不会,看这个看不起,瞧那个瞧不上。一天到晚就知道上网聊天打游戏泡MM。就算到了曹营也就当个蒋干,成事不足败事有余。要本着谦虚学习的态度来对待工作对待周围的人,要学会从别人身上发现优点。
诗云:“瞻彼淇澳,菉竹猗猗。有斐君子,如切如磋,如琢如磨。瑟兮僩兮,赫兮喧兮。有斐君子,终不可諠兮!”如切如磋者,道学也;如琢如磨者,自修也;瑟兮僩兮者,恂栗也;赫兮喧兮者,威仪也;有斐君子,终不可諠兮者,道盛德至善,民之不能忘也。
诗经说:“看那淇水弯弯的岸边,嫩绿的竹子郁郁葱葱。有一位文质彬彬的君子,研究学问像加工骨器一样,不断切磋;修炼自己像打磨美玉,反复琢磨。他庄重而开朗,仪表堂堂。这样的一个文质彬彬的君子,真是令人难忘啊!”
这里所说的“加工骨器,反复琢磨”,是指做学问的态度;“像打磨美玉,反复琢磨”,是指自我修炼的精神;说他“庄重而开朗”,是指他内心谨慎而有所戒惧;说他“仪表堂堂”,是指他非常庄重;说“这样一个文质彬彬的君子,真是令人难忘啊!”是指由于他品德非常高尚,达到了最完善的境界,所以使人难以忘怀。
不要为了工作而工作,为了写代码而写代码。既然干了这行了就要干好,即使不求名扬天下,至少要也对得起自己这么多年的努力吧。我带过几个手下,我每次安排任务后都会说:认真干活,只要干完活,你去打CS我都不管。我说这话的目的是不想给大家太多压力,大家都挺辛苦都不容易。只要干完活,该聊天该上网随便你。可如果真正会学习的人,就应该明白,自己干的那些活,永远是别人安排的。要想多学东西,还得根据自己的特点和能力补充知识。自己写的代码是不是已经无懈可击了,有什么地方值得优化,实现方法是不是可以用更优雅的方式。
总之,心中要想着不断进步,要么不做,做了就要做到更好。
posted @
2007-05-29 13:05 小强 阅读(1105) |
评论 (1) |
编辑 收藏
这两三年来,生活一直被工作占据着,习惯了用工作来充实的生活,闲下来却非常无聊。即使不加班的时候,回到家里也不知道干点什么好,于是下意识的又开始写代码,学新技术。这样的生活单调乏味,人也变得无趣起来。于是决定,从今天起在家休息的时间,不再写代码。重新找回以前的兴趣,丰富业余生活。想起以前上学时住校,闲得没事做就到图书馆借书,反正呆着也是呆着,那会儿什么书都看,从古今中外概不排斥。可惜工作后再没这闲心了。
今天休息,在家翻了翻书柜,读一读大学。蓝色字是原文,红色的字是我的一些理解,如果有错的地方,还望大家指正,谢谢。
大学之道,在明明德,在亲民,在止于至善。知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始,知所先后,则近道矣。
大学的宗旨在于弘扬光明正大的品德,在于使人弃旧图新,在于使人达到最完善的境界。知道应达到的境界才能志向坚定;志向坚定才能够镇静而不骄躁;镇静而不骄躁才能够心安理得;心安理得才能够思虑周详;思虑周详才能够有所收获。每样东西都有根本和枝末,每件事都有开始和终结(还记得黑客帝国3里,先知说的那句话吗?Everything that has a beginning has an end。大概先知也读过大学)。明白了这本末始终的道理,就接近事物发展的规律了。
在软件开发过程中,我们经常会遇到很多问题。其实每一个客户需求都是一个大问题,是一堆问题的总合。这就需要我们在编程之前,明白自己要做什么(知止而后有定),要认真的分析我们的需求和目标。这样才能不被一堆稀奇古怪的问题吓倒,能够让我们从容的面对这些工作(定而后能静)。初学者经常犯一个错误,就是不分析问题。调试出错代码的时候,经常是一遍一遍的运行错误的代码,然后看着报错信息发呆。而不知道如何分析错误所在,也不知道在哪里打印几行标志来找出出错的代码的位置。于是越看越乱,越乱越心慌。这时候就需要先静下心来不要被一个报错信息吓到(静而后能安)。只有静下心来,才能想到其实任何报错信息,都是有根有据的,只要根据提示信息中给出的线索,或者在代码中打印几条标志信息,或者根据你输入的信息运行的类或方法去推理,就能够找到出错的地方(安而后能虑)。当你做到这一步,你就找到问题的所在了,经验值又增加了(虑而后能得)。
就像刚才所说,任何代码任何错误,都是有根有据不会凭空出现。我们软件开发人员的工作,就是解决一个一个的问题。只要能把这些问题分析得当,条理清晰的列出来,就离成功不远了。
很多初学编程或刚刚工作的人都会报怨,看不懂代码,不知道业务逻辑所以没法工作。其实做事的时候,不要一上来就想一次解决问题,要循序渐进,你连代码出错出在哪里都不知道,怎么去修改错误。要先找到出错的代码是哪个文件,是从哪里进入的,又经过哪些方法的调用,要明白这些代码的业务逻辑。如果不明白就先注释起来。初学的时候要学会分析问题的方法,找到问题的关键点,每行代码其实都是在调动数据,但有些调动是对当前业务没有影响的这些可以先排除掉,那些会对后面的业务逻辑产生影响的,都是问题的关键点。初学者不要嫌麻烦,遇到这些关键点一定要注释。就算不明白整个的业务逻辑,单独一行代码的意思总该明白吧,无非就是添删查改和方法调用嘛。当你把这些代码通读一遍并都注释后,就可以把这些注释当成读小说一样读下来,再复杂的业务逻辑也应该能读明白了。
古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知;致知在格物。
物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。
古代那些想在天下弘扬光明正大品德的人,先要治理好自己的国家;要想治理好自己的国家,先要管理好自己的家庭和家族;要想管理好自己的家庭,先要修养自身的品性;要想修养自身的品性,先要端正自己的心思;要想端正自己的心思,先要使自己的意念真诚;要想使自己的意念真诚,先要使自己获得知识;获得知识的途径在于认识和研究万事万物。通过对万事万物的认识,研究后才能获得知识;获得知识后意念才能真诚;意念真诚后心思才能端正;心思端正后才能修养品性;品性修养后才能管理好家庭和家族;管理好家庭后才能治理好国家;治理好国家后天下才能太平。
咱们先不说什么治国之论,单就软件开发这个行业来讲。很多人都在抱怨公司小挣钱少管理混乱感觉屈才之类的。可你真的有这么大才吗,那些刚刚毕业的学生,在学校里玩儿了四年。到公司时什么都不会白纸一张,就像我以前发过的一个文章里说的。都不用说敬业精神,当你连最起码的认真工作都做不到时,还有什么资格说公司给你的工资太少,对不起你的工作量。
要么别做这份工作,别接受这个任务,既然做了就要做好。不要把工资少当成不认真工作的借口。你再不认真工作,该被剥削的地方谁也跑不了,老板还是要赚他的钱。但工作经验是自己的呀!!! 软件开发这个工作需要不断学习不断的进步才能保持自己的位置。而软件开发正是需要认真工作,才能体会出其中的奥妙,体会其中的精华所在。要想让自己将来有好的发展,就要先做到自律,休息的时候当然要玩儿,但上班的时候就要以工作为重。要想自律就要提高自身修养,提高自己对工作重要性的认识。要想提高自身修养,就要端正自己的心态,上班的时候不要总去想什么窗外的高楼街上的美女。要想端正心态,就要让自己的意念真诚,要真心的认真负责的对待自己的工作,对待自己手中写出的每一行代码。这时就需要先获得知识,要学会这些技术,不然什么都不懂的人只能复制粘贴别人的代码,却不知道这些代码在干什么,往往复制错了自己却混然不知。
自天子以至于庶人,壹是皆以修身为本。其本乱而末治者否矣,其所厚者薄,而其所薄者厚,未之有也!
上自国家君王,下至平民百姓,人人都要以修养品性为根本。若这个根本被扰乱了,是不可能治理好家庭甚至国家天下的。不分轻重缓急,本末倒置却想做好事情,这也同样是不可能的。
就像刚才说的,刚工作的人工资少工作累这是事实情况,大家都是从这一步走过来的。只有经历过这一步,才能明白认真工作和提高工作效率的重要性。要想提高工作效率,就要提高自身能力,就要积累工作经验。可工作经验这东西并不是说来就来的,需要自己刻苦努力才能得来。并不是说明天把你送到IBM或者什么大公司,给你好多好多钱,给你换了一个超美的工作环境。你就突然什么都会了什么都懂了。当你什么都不会还净犯错的时候,真的到了这种环境中,周围都是高手,你还好意思和别人打招呼吗?
posted @
2007-05-27 20:27 小强 阅读(1406) |
评论 (4) |
编辑 收藏