【问题】
对于Android程序
Songtaste歌曲下载器
来说,已经实现了基本的下载功能了:
并且已经实现了hook函数,用于及时获得对应的下载进度:
现在接着去实现,添加对应的进度条,及时显示下载的进度。
1.看到了,本身的Graphical Layout中,就有对应的进度条:
所以手动拖动一个进去。
2.发现默认是Normal的,所以又去掉,换成对应的Horizontal的:
3.然后就是想办法,如何和代码关联起来了。
参考:
去添加配置:
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" >
android:id="@+id/pgbDownload"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="100"
android:progress="0"
android:layout_gravity="center_vertical"
/>
以及添加代码:int percent = (int)((currentSize * 100) / totalSize);
pgbDownload = (ProgressBar) findViewById(R.id.pgbDownload);
pgbDownload.setProgress(percent);
结果发现没效果,虽然设置了值了,但是没显示。
4.还是去看官网解释:
结果官网中代码,貌似也是直接设置setProgress就可以了的。
后来参考:
才注意到,自己上述的findViewById,是放在每次调用的地方了。
应该放到初始化才对。。。
5.但是,结果还是无法实现即时更新,虽然调试都确保了,的确是每次进度更新,会调用到setProgress的。
关于进度条不更新,而只能在最后突然更新到100%的问题,详见:
6.后来又折腾:
最后终于可以正常,添加了进度条,可以正常更新:
更新完毕最后,可以提示下载完毕:
【总结】
总的来说,Android下面的开发,还是比较麻烦的。很多常见的控件,都不能完整的封装,都还是需要另外注意很多事情,才能正常工作的。
至少对于VS2010中的C#开发,还是麻烦多了。