Thinking in XiaoQiang
世人皆有悲哀,只有你不明白
posts - 56,comments - 150,trackbacks - 0
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 小强 阅读(2125) | 评论 (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 小强 阅读(316) | 评论 (0)编辑 收藏
     摘要: 1. 0.2版主要增加了一些使用者的功能, 增加了收藏夹功能, 方便用户快速的浏览到经常访问的文件或文件夹

2. 修改了一些for developer的bug  阅读全文
posted @ 2009-10-27 16:05 小强 阅读(1618) | 评论 (2)编辑 收藏
     摘要: 为文件将来做电子书或媒体播放器等程序时浏览文件
把文件管理器封装起来并使用intent机制设置浏览参数和调用  阅读全文
posted @ 2009-10-17 20:21 小强 阅读(2645) | 评论 (2)编辑 收藏
     摘要: 练习作品 一个简单的 android 文件管理器, 支持第三方程序调用  阅读全文
posted @ 2009-10-17 19:50 小强 阅读(1912) | 评论 (1)编辑 收藏
     摘要: 为了体现出android强大的网络功能 写了一个小爬虫程序, 通过网络直接从网站上下载电子书  阅读全文
posted @ 2008-06-30 12:00 小强 阅读(1360) | 评论 (0)编辑 收藏
     摘要: 晚上等着看欧洲杯,闲来无赖接着研究android , 更新了一下uReader  阅读全文
posted @ 2008-06-18 12:46 小强 阅读(1471) | 评论 (4)编辑 收藏
     摘要: 闲来无事, 研究了一下android. 做一个小应用练手.
  阅读全文
posted @ 2008-06-17 17:31 小强 阅读(1866) | 评论 (4)编辑 收藏
     摘要:   阅读全文
posted @ 2008-06-10 17:34 小强 阅读(393) | 评论 (0)编辑 收藏
     摘要: 删除ANDROID数据库  阅读全文
posted @ 2008-06-10 17:30 小强 阅读(1872) | 评论 (0)编辑 收藏
     摘要: android 技巧一, 快速显示修改结果  阅读全文
posted @ 2008-06-03 17:44 小强 阅读(337) | 评论 (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 小强 阅读(1038) | 评论 (0)编辑 收藏
     摘要: adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:

1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;

2、在设备上运行shell命令;

3、管理设备或手机模拟器上的预定端口;

4、在设备或手机模拟器上复制或粘贴文件;

  阅读全文
posted @ 2008-06-03 17:35 小强 阅读(1491) | 评论 (0)编辑 收藏
     摘要: Android是基于Linux内核的,对于喜欢研究底层的朋友来说,自然不会放过搞明白Linux层面上一些东西的机会。当然,最终目的还是要搞清楚Linux是如何和上层lib以及虚拟机结合的,但是这得等Google完全开源Android之后了。很多关于Linux运行的细节,都可以通过adb的shell来看到。  阅读全文
posted @ 2008-06-03 17:30 小强 阅读(3561) | 评论 (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 小强 阅读(1092) | 评论 (1)编辑 收藏