花心胡萝卜BLOG花心胡萝卜BLOG

努力,进步,创造价值. YY综合频道:84613536 集学习休闲娱乐于一身的频道!

like

Mono For Android小试牛刀,编写有进度条的浏览器

浏览(399) 评论(2) 分类:Android  作者:花心胡萝卜  发布时间:
分享到:

最近迷上了Android程序.下载了各种编写Android的程序的工具.这不,前几天搞了搞Delphi写Android,今天来体验下这C#写android.

工具我就不再介绍了,前几篇文章都有写.

写一个Android的浏览器,算是我熟悉这个工具的Hello World程序.

先看看程序的截图:


在编写过程中,发现了一些技巧,现在我分享给大家.

1.文本框焦点问题.

文本框一般都是默认的焦点所在,当进入一个Activity的时候,文本框一般会默认获得焦点,然后虚拟键盘就会蹦出来,十分影响用户体验.

手动的执行ClearFocus(C#语法)也是有焦点的存在,只是虚拟键盘没了.

比如说我这个浏览器刚开始的时候,webView就是获得不到焦点,因为焦点时钟都在文本框上,输入的文字都跑到文本框中了(网址栏).

那要怎么解决呢?

我们要在XML文件中动手了.

在文本框的父控件上加个属性,如下图所示:


EditText在TableRow中,我在TableRow的父控件TableLayout上加入了2句话:

android:focusable="true"
android:focusableInTouchMode="true"
这样,文本框的焦点问题就解决了.

在用WebView来进行RequestFocus的时候就OK了.

2.TableLayout的布局

说实话,我很讨厌Android的布局模式!因为我本来美工就差,这玩意儿还不好控制.

关于TableLayout,里边是一个个的TableRow.

每个TableRow中有>=0个列.

看程序最上边的 前进, 后退, 地址栏, 访问 按钮等排列,就是用的TableRow来控制的.

其中,因为要适应各种分辨率,所以,对地址框所在的Column进行设置,让它可大可小.

加上这两句话:

android:shrinkColumns="2"
android:stretchColumns="2"
这两句话表示,第三个Column可以伸缩.看清楚,是第三个,下标是从0开始的.

第一句话表示可以收缩,在没有空间的时候,第三个Column可以自动收缩,适应分辨率.

第二句表示可以拉长,在有空间的时候,第三个Column可以自动占满其余的空白.

在上图中也可以看到!

3.关于浏览器的进度条.

这个,我也说不大清楚,我是重写的类方法.

我重载了WebViewClient来实现前进,后退按钮的可用状态,地址栏的实时更新,

重载了WebChromeClient实现进度条.

具体的,大家可以看看我的工程,有源代码,大家可以自己研究.


经过DelphiXE5和Mono For Android的对比,说说他们各自的优点.

对于DelphiXE5来说,界面设计比较方便,可用的控件也比较多,还有界面的皮肤可以使用.

对于MonoDroid来说,界面是原生的XML解析,可以让大牛们自己编写XML,灵活性高,提供的组件也不少,最重要的是,

它和VS结合在一起,非常好用,奶爸级的开发工具,VS可以说是最好的IDE,没有之一.编译也比DelphiXE5快,编译出来的APK也很小.

工程下载地址(源代码):http://www.hxcarrot.com/Download/VS_Hades_Android_Browser.rar

是VS2010的工程.Android API版本 2.2

最后在来个有进度条的图:


评论
评论正在努力加载...