记得上个学期参加了谷歌举办的征文比赛,虽然没得奖,但是还是有纪念品的。今天刚刚收到,是纪念T恤,居然有两件,然后我才反应过来我投了两篇文章,囧。
上图:LoL
行走乱世荒诞说书人,拍摄俗世无趣摄影师
383 views
首届Google暑期大学生博客分享大赛——2010 Andriod篇
支持大约20种语言的高亮了
终于支持多种语言的高亮了~
再次重新写了整个结构~
昨天的全部推翻。
用了开源项目
http://google-code-prettify.googlecode.com/
的代码,瞬间解决了各种高亮问题。。。
先上图


基本上可以当个程序使用了~
欢迎大家试用下载
猛击这里下载
448 views
1,225 views
首届Google暑期大学生博客分享大赛——2010 Andriod篇
自从买了android的手机后,用这一直都挺舒服的,从最早买的G1到现在用的G3,android系统的开发让我爱不释手,但是渐渐的我却发现在上面看代码却不是那么的爽快。基本上只能用txt格式的方法看,但是白底黑字的代码是无法让好“色”的我满足的,于是就萌发了自己DIY一个代码阅读器的想法。
由于这个程序主要是满足我自己的需要,所以就打算写的比较简单一点,支持C/C++/Java的简单高亮就好。所以就写出了CodeReader,先放一些截图吧,然后再慢慢说这个程序诞生的故事。



开发这个代码阅读器基本上就需要解决以下几个问题:
1.文件的读写
2.代码显示容器
3.代码的缩进
4.代码的染色
于是我便开始上网查询了一些资料~我发现文件的读写不是什么大的问题,我有一本关于Android开发的教材中讲到了文件读写的部分,于是便模仿出了下面的代码~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | package com.zerob13.Codereader; import java.util.Vector; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.TextView; public class fileData{ public String name; public int type; } class ExpBaseAdapter extends BaseAdapter { private Context mContext; private Vector mItems = new Vector(); private LinearLayout layout,layout_more; public ExpBaseAdapter(Context context) { mContext = context; } public void addItem(fileData it) { mItems.add(it); } public fileData getItem(int it) { return (fileData)mItems.elementAt(it); } public int getCount() { // TODO Auto-generated method stub return mItems.size(); } public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } public int getItemType(int arg0) { // TODO Auto-generated method stub return getItem(arg0).type; } public void clearItems(){ mItems.clear(); } public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub //LinearLayout layout=null ; LayoutInflater inflate = (LayoutInflater) mContext.getSystemService(android.content.Context.LAYOUT_INFLATER_SERVICE); arg1 = (LinearLayout) inflate.inflate(R.layout.listfile,null); TextView fm_text_01= (TextView)arg1.findViewById(R.id.fm_text_01); fm_text_01.setText(getItem(arg0).name); //Log.v("vodone",""+arg0+" name="+getItem(arg0).name); /*if (getItem(arg0).equals(".")){ }*/ return arg1 ; } } |
然后就是选择显示代码的容器了,一开始我的打算是用TextView,但是我发现如果用TextView的话似乎无法让代码高亮起来啊~于是我便先去寻找了一下代码高亮的实现方法。首先是找到了一个windows下的实现,就是利用RichTextView的那种组件来完成。但是似乎android自带的组件里面没有这么一个玩意啊(哈哈,我是初学者,什么都不懂)。后来问了一个朋友被告知,其实所谓的RichTextView就是和浏览器差不多的东西,就是解析了HTML之类的标记性语言然后实现了高亮。这下子就好办了,直接用android自带的webview就可以解决容器的问题了~
最后就是最关键也是最核心的部分了,如何把纯文本的代码转化成为色彩斑谰的网页呢?这里我用了一个很简单的算法,就是关键词替换~
基本上就是对文本进行扫描,遇到关键词就替换为html语句,为之上色。很快我的0.1版本就出来了~
不过问题可不是到这里就结束了,我发现原来文本里面依靠的”\t”(tab)的缩进在html里面就被忽略了,于是代码就变成了一整块黏合在一起的。怎么办呢?我查阅了html的语法,发现似乎没有什么东西是可以在html里面现实tab缩进的,一时之间卡住了。当时可谓是百思不得其解,后来很偶然的想到,为什么不直接用几个空格来代替一个tab呢?于是问题迎刃而解,不由感慨,有时候很简单的问题,但是却卡在了一条道上导致无法解决啊。
这样,基本上这个程序就完成了。测试了几段代码,效果还不错~如果大家喜欢的话可以在这里下载哦
猛击这里下载CodeReader
351 views
09年推出的。当时价格要2200左右。作为一台分辨率只有240×320的,cpu和G1相同,256MB RAM+512MB ROM,机身为106 x 55.2 x 14毫米,113克的机器没什么可以玩的地方。。。
后来最近Tattoo掉价到1500左右。于是,寝室的zjk大牛还有工作室的小波就入手了一个。
我把玩了一下,不得不说,Tattoo比我想象中的好用。而且,可以说惊艳。主要是以下几点
一直以为Tattoo这种机器跑Sense会比较卡,比较吃力。到手后发现,相当流畅。和Hero的感觉差不多。
其实我一直对Sense很有爱,我觉得HTC设计的UI都很实用,从日常,短信以及其他社交的widget的设计,还有整个界面的排布也好都很适合触摸屏。
而且,android本来的界面是比较难看的。。。别说和iphone比了,甚至很多时候连wm都比不过。。。
Sense算是对这个缺点的弥补吧。
轨迹球的取消一开始让我对Tattoo的印象很差。。。因为我一直觉得轨迹球很好用,不管是BlackBerry上,还是G1上,抑或Hero,轨迹球一直让我用的很爽。。。不过,当我实际操作过发现,Tattoo的方向键非常流畅,我一个朋友发哥说:“这个方向键就是用来玩游戏的。” 说起来手感的确和NDS上的方向键有些相似,哈哈。
终于说到Tattoo的噱头了,Tattoo,顾名思义,就是纹身,那么外壳肯定有比较好看的花纹的。不过zjk大牛和小波买回来的都是灰色普通版本,后面就画了一个很挫的机器人。。。但是taobao上面貌似有不少漂亮的壳,tattoo换壳很方便。比较噱头,适合喜欢换风格的人。
其实网上似乎都在诟病这个电阻屏。从iphone开始,似乎电容屏一直大热。精确的操作,多点支持等等。但是考虑到Tattoo的屏幕只有那么一点大小,如果用电容屏也许反而不好,而且谁也不会去那么小的屏幕上多点的吧。。。电阻屏同时也带来的触摸笔的支持,可以弥补手指在小屏幕触摸的遗憾。小波童鞋就把他n97上面的那块撬后盖的板拿来当触摸笔了。。。囧。
本来应该先写这个的,不过一开始忘记了。。。汗。
tattoo的尺寸很小,我的手掌就可以包含下了,所以对男童鞋来说可能会比较吃力。但是很适合MM。
而且外观也比较讨人喜欢
233 views
一直希望在android上看代码~不过貌似一直没找到好的软件~
所以嘛,自己动手丰衣足食啦~~~
0.1版本只支持java/c/c++高亮(因为自己对这几个语言比较熟悉。。。)
写了两天,基本上能用了。
截图如下~
APK文件我也发上来吧,喜欢的朋友可以拿去用~
Codereader 0.1.apk
319 views