Android越来越普及,那已经安装的应用要如何更新呢?在应用市场中常会有显示某某应用已经更新之类的信息,那我们是否也可以实现类似的功能呢?如果要实现又要做哪些准备呢?做过WEB开发的,一般都会知道对于WEB服务器有很多,比如Windows自带的IIS、跨平台的Apache等,这里以IIS作为服务器实现APK的更新下载,下面是效果图。


我们可以看到,在获取更新列表后,可以根据情况进行相应的更新,在下完更新后,进行安装,这样就完成了更新。

在更新列表中显示的每一行都很相似,只是内容上有些变化,这种情况很容易联想到封装,那么我们又要如何封装出这样的控件呢?

Android中的UI是在Layout中以xml来描述的,这和wpf有些相似。那我们是否可以将更新列表的每一行抽象成以xml形式描述的控件呢?答案是可以的!下面是相应的代码


update_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"    android:layout_height="64px"    android:paddingLeft="10px"    android:paddingTop="10px"    android:orientation="horizontal" >    <ImageView        android:id="@+id/update_item_app_image"        android:layout_width="64px"        android:layout_height="64px"        android:background="@drawable/apk" >    </ImageView>    <TextView        android:id="@+id/update_item_app_name"      style="@style/update_item_textview"        android:text="TestApk" >    </TextView>    <TextView        android:id="@+id/update_item_app_old_version"       style="@style/update_item_textview"       android:gravity="right"        android:text="Not Install" >    </TextView>        <TextView             style="@style/update_item_textview"       android:layout_width="50px"       android:gravity="center"        android:text="->" >    </TextView>        <TextView        android:id="@+id/update_item_new_version"       style="@style/update_item_textview"       android:gravity="left"        android:text="1.0.0.0" >    </TextView>    <Button        android:id="@+id/update_item_behavior"        style="@style/update_item_button"        android:text="Update" >    </Button></LinearLayout>
注:

1、update_item_app_image使用了一个名字为apk的背景图,可以更换。

2、借助HTML+CSS的思想,将布局与样式渲染尽可能的解耦,TextView中使用style引用相应的样式,具体样式在后面的代码中。


update_item_style.xml

<?xml version="1.0" encoding="utf-8"?><resources xmlns:android="http://schemas.android.com/apk/res/android">          <style name="update_item_textview">        <item name="android:layout_width">180px</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:layout_marginLeft">20px</item>        <item name="android:textColor">#000000</item>        <item name="android:textSize">30sp</item>    </style>    <style name="update_item_button">        <item name="android:layout_width">180px</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:layout_marginLeft">20px</item>        <item name="android:textColor">#000000</item>        <item name="android:textSize">30sp</item>    </style></resources>

注:

1、该xml文件放在values中,与update_item.xml相对应。

2、为了便于查阅与维护,命名采用“功能+作用”的形式来命名,并且均为小写,不同单词间以下划线连接。比如style中是对应update_item的style,所以命名为update_item_style.xml,布局文件默认为功能名,即update_item.xml。再如布局文件的ID和style中的name也采用相似的命名法。

3、对布局文件中的字串,最好也有一个对应的文件,比如update_item_strings.xml,这里仅作示例,没有给出。

自定义好更新控件后,现在就是使用了。使用时,即要先找到这个布局,然后再添加到相应的位置中去。从效果图可以看到,更新列表是按行分布的,这个可以采用多种方式来实现,比如RelativeLayout+LinearLayout、ListView+Adapater等,这里采用ListView+Adapter来实现。

具体请参看Android基于IIS的APK下载(二)显示更新列表

转载请注明出处Android基于IIS的APK下载(一)自定义更新控件

完整代码在此处下载https://github.com/sparkleDai/ApkUpdate

更多相关文章

  1. .net开发者对android第二周的学习体会
  2. android的Touch事件的消费机制
  3. 关于Android开发中实现锚点技术,也是焦点的改变
  4. Android(安卓)Studio中布局文件(如activity_main.xml)设计视图&代
  5. Android(安卓)>> 27. Android(安卓)Studio 9-Patch 图片制作以及
  6. Android快速自定义控件+实战演示(二)组合自定义view+回调
  7. 10种技巧可提升Android应用运行效果
  8. 如何让安卓(Android)子控件超出父控件的范围显示
  9. Android(安卓)Patcher应用增量更新(App补丁式更新,无需下载整个ap

随机推荐

  1. Android .so和.a的makefile
  2. android datepicker只显示年和日期
  3. android 视频图片混合轮播实现
  4. android应用常见错误
  5. 日常记录
  6. 缓存统一管理工具类--android
  7. Android修改默认浏览器为其他浏览器
  8. 判断当前是电脑还是手机打开网页
  9. Android使用adb命令对手机进行截屏保存到
  10. Android APP OPS移除应用程序项目的修改