IT技术博客大学习 共学习 共进步

Android开发

共 55 篇文章

IT 2013-09-02 13:15:49 / 累计浏览 2,790

[Android]用WebView访问证书有问题的SSL网页

这篇讲的是在Android开发中,使用WebView加载SSL证书有问题的网页时,如何绕过其默认的安全拒绝机制。核心问题在于,当网页证书过期、不正确或不被信任时,WebView会直接阻止页面加载,不像PC浏览器会弹出警告让用户选择。 要解决这个问题,关键在于重写WebViewClient的onReceivedSslError()方法。作者指出了一个极易踩坑的细节:在重写的方法里,必须直接调用handler.proceed()来忽略错误继续加载,并且**千万不要**调用super.onReceivedSslError()。这是因为父类的实现中包含了handler.cancel(),会导致加载失败,甚至可能引发段错误崩溃。 通过这个简单但实用的技巧,开发者就能让WebView加载那些因证书问题被系统拦截的网页,这在开发调试或处理特定网络环境时非常有用。

IT 2012-06-19 23:52:17 / 累计浏览 3,291

Android动画背景图自动播放的实现

在Android开发中,为网络图片加载添加loading动画很常见,但让动画自动播放却是个小麻烦。这篇文章就专门解决这个具体痛点。 作者指出,问题根因在于 `AnimationDrawable` 的 `start()` 方法不能直接写在 `onResume` 等生命周期回调里,否则动画不会自动启动。为了解决这个问题,文章详细介绍了三种经过验证的实现技巧:通过 `Runnable` 在视图挂载后启动、使用 `AsyncTask` 在后台线程触发,以及利用 `ViewTreeObserver` 的 `OnPreDrawListener` 在视图绘制前启动。每种方法都附带了清晰的代码示例。 文章还对比了网上流传的另一种利用 `onWindowFocusChanged` 的方法,并指出了其依赖焦点变化的局限性。整体来看,这是一篇聚焦于特定技术问题的实用指南,为开发者提供了多种可靠的解决方案。

IT 2012-06-10 21:27:51 / 累计浏览 2,571

移动互联网必备:各平台自助渠道打包手段公开

这篇文章从一个实际痛点出发:如何让非技术的渠道人员,自助拿到带有渠道标识的应用安装包。作者针对安卓、iOS、塞班、Windows Phone这四个主流平台,逐一拆解了它们各自的打包技术难点和对应的解决办法。 核心思路是利用各平台安装包的不同特性。例如安卓APK一旦重签就会失效,所以必须用Ant或Maven在代码编译时就注入渠道变量;iPhone的ipa包本质是zip,可以直接在包内修改或添加channel.txt文件;塞班的sis包则因为签名机制较弱,允许在包文件末尾追加字节来记录信息;WinPhone的xap包处理方式类似iPhone,但需要特别注意zip文件在不同操作系统下的分隔符差异。 文章并没有停留在理论,而是直接给出了每个平台在服务器端可以执行的简明操作指令,比如安卓用`ant -Dchannel=xxx`,非常具有实操性。对于需要频繁打包的团队来说,这些实战总结能省去不少摸索时间。

IT 2011-11-21 00:06:25 / 累计浏览 6,333

基于 PhoneGap 与 Java 开发的 Android 应用的性能对比

这篇实测对比了基于PhoneGap(Html5)与原生Java开发的Android应用在性能、稳定性及开发成本上的差异。作者以两个常见场景——列表展示和图片浏览应用为例,在Google Nexus One上进行了详细测试。 结果显示,原生Java应用在文件体积、内存占用和操作响应上均占优。例如,在书签应用测试中,Java版体积仅为23KB,内存占用27MB,启动速度快于PhoneGap版,且能流畅处理频繁操作。相比之下,PhoneGap应用内存占用达45MB,在Monkey测试约4万个事件后便出现无响应,对WebView内存释放不佳。开发层面,PhoneGap降低了前端人员的入门门槛,但OPOA模式对代码组织、内存管理及多人协作提出了更高要求。 结论上,原生Java开发适合追求性能、稳定性和团队协作的场景,而PhoneGap则更适合快速开发、对性能要求不极端,且团队以Web技术栈为主的应用。

IT 2011-06-01 23:45:57 / 累计浏览 3,374

Android用户界面设计:使用片段

这篇教程从一个实际问题出发:如何让Android应用的用户界面在平板等大屏幕上更有效地利用空间。作者以文章阅读应用为例,展示了如何将原本需要在两个屏幕(列表与内容)间跳转的设计,重构为在一个屏幕上同时呈现列表与WebView的流式布局。 核心方案是利用Android 3.0引入的Fragment API。教程首先解释了Fragment的概念及其与Activity的关系,然后一步步引导开发者重构现有代码:将原有的两个Activity界面,分别转换为承载ListView的`TutListFragment`和承载WebView的`TutViewerFragment`。关键步骤包括创建对应的Fragment类、设计布局资源,以及更新宿主Activity。 一个巧妙的设计点在于Fragment间的通信机制。作者演示了如何通过定义监听器接口,让列表Fragment能够通知宿主Activity,再由Activity协调更新内容Fragment,从而避免了Fragment之间或与Activity之间的硬耦合,为在同一Activity中管理多个Fragment打下了基础。这种模式在邮件客户端或RSS阅读器等应用中非常常见。 最终,通过引入Fragment和双面板布局,应用能在大屏设备上提供更连贯、高效的信息浏览体验,避免了屏幕空间的浪费。这篇教程节奏明快,代码实例具体,适合有基础Android开发经验、希望学习如何构建响应式界面的开发者。

IT 2011-06-01 23:45:09 / 累计浏览 3,467

【Android开发教程】一、基础概念

这篇讲的是Android开发的核心基础,为新手打下坚实基础。作者从Android操作系统的根基说起,澄清了它基于Linux和Java,却为何不能直接运行普通Java程序——关键在于Dalvik虚拟机和dex格式的转换。接着,文章系统梳理了构建一个Android应用所必须理解的核心组件,比如负责界面的Activity、处理后台任务的Service,以及实现数据共享的ContentProvider。它还解释了Android特有的安全模型(基于权限的许可)和应用描述文件AndroidManifest.xml的关键作用,比如如何声明权限和定义应用版本。作为系列教程的第一篇,这篇文章将原本分散的概念串联起来,比如R.java的资源管理、布局与生命周期的内在联系,帮助读者建立起清晰的知识框架,明白一个“安卓应用”究竟是由哪些部分有机结合而成的。

IT 2011-05-17 09:18:38 / 累计浏览 4,077

Android用户界面设计:创建列表视图程序

这是一篇面向Android开发者的实操教程,手把手教你从零构建一个具备基础交互功能的列表视图应用。 作者从创建项目讲起,核心是利用`ListActivity`和`ListView`来展示一个文章标题列表。教程并没有停留在简单显示上,而是完整走通了从界面设计到数据填充,再到点击跳转的全流程。其中,使用字符串数组定义静态数据源、通过`ArrayAdapter`进行适配、为`ListView`条目添加点击监听器以启动新`Activity`,这些步骤都提供了清晰的代码示例。 文章特别点出了几个关键细节:比如在定义`OnItemClickListener`前,必须将数据数组声明为`final`;创建用于显示内容的`WebView`视图后,别忘了在清单文件中为应用添加网络权限。这种对易错点的提示,让跟着做的读者能少走弯路。 教程节奏明快,适合已有Android基础、希望快速掌握列表控件用法的开发者。最终的完整示例代码可供下载参考,便于在实际项目中延伸应用。

IT 2011-04-28 00:00:48 / 累计浏览 6,115

Android用户界面设计:表格布局

这篇讲的是Android开发中如何用表格布局(TableLayout)来整齐排列界面元素。作者从实际场景出发,先解释了表格布局的核心结构:一系列行(TableRow)和列,列宽会自动适配最宽内容,单元格支持跨列但不能跨行。文章特别强调了表格布局的灵活性——通过设置列的可拉伸或可压缩属性,可以让界面在不同屏幕方向下自适应。 具体实现上,作者用了一个天气预报界面的例子,详细展示了两种搭建方式。一种是直接编写XML布局文件,这种方式维护方便,适合静态的行列结构,代码中通过setStretchAllColumns等属性控制列的伸缩行为。另一种是通过Java代码动态创建,虽然代码量更大,但能根据运行时数据灵活生成表格,更适合需要动态更新的场景。两种方法殊途同归,最终都能构建出如示例中那样包含标题、日期、温度、天气图标的清晰网格。 总的来说,文章把表格布局从概念到实践拆解得很清楚。对于需要展示结构化数据或整齐排布控件的Android界面,表格布局提供了一种直观的解决方案,而选择XML还是代码实现,则取决于项目对维护性和动态性的不同需求。

IT 2011-04-08 13:50:08 / 累计浏览 4,559

Android用户界面设计:线性布局

这篇教程从线性布局(LinearLayout)的基础概念出发,讲解了这个在Android开发中极为常用且基础的UI布局。它就像名字一样,通过设置方向属性,能将控件像排队一样整齐地组织在单行(水平)或单列(垂直)中。 文章不仅介绍了线性布局最推荐的定义方式——在XML布局资源文件中进行声明式设计,以实现UI与逻辑的分离和更好的可维护性;同时也演示了如何通过Java代码动态创建布局,适用于需要高度灵活控制的场景。作者特别深入解析了`layout_weight`(权值)这一关键属性,说明了如何通过为每个子控件分配权重比例,来智能地分配父布局中的剩余空间,从而实现更自适应、响应式的界面。不过,文章也通过实例指出了权值机制的一个重要限制:当空间紧张或控件内容过长时,系统可能会为了内容完整显示而覆盖权值设定。 整体来看,文章通过“彩虹布局”等直观示例,系统地梳理了线性布局从核心概念到关键属性的使用全貌,尤其对权值属性的剖析,为初学者扫清了一个常见的应用难点。

IT 2011-04-08 13:47:59 / 累计浏览 5,553

Eclipse开发Android应用程序入门

这篇讲的是通过一个具体的咖啡机控制类,展示在Android开发中如何组织业务逻辑与界面更新。作者从代码实现出发,细致地拆解了一个功能模块的构建过程。 核心围绕几个关键方法展开:`setBrewTime` 方法不仅接收分钟参数,还包含了重要的防御性编程逻辑——检查是否正在冲泡中,并对小于1的值进行修正,最后驱动一个文本标签显示更新。`setBrewCount` 则直接将计数值同步到界面。`startBrew` 方法的注释暗示了后续将使用 `CountDownTimer` 来处理倒计时这个核心交互。 整个代码片段虽然简短,却清晰体现了“状态管理”与“UI响应”这一移动开发中的经典模式。变量如 `isBrewing` 控制状态,而每个状态改变的方法都负责同步更新对应的UI组件(`brewTimeLabel`, `brewCountLabel`)。这种将数据、状态和界面刷新紧密绑定的写法,是构建交互性Android应用的基础,也是从“会写代码”到“写好应用”的关键一步。

IT 2011-04-08 13:44:00 / 累计浏览 6,377

Eclipse开发Android应用程序入门:重装上阵

这篇讲的是在Eclipse环境下进行Android应用开发的系列教程第二部分。作者从上一篇构建的“泡茶计时器”应用出发,针对“无法记忆不同茶叶冲泡时间”这一具体痛点,引入了Android的SQLite数据库来实现数据持久化。 文章的精华在于手把手地演示了如何通过创建一个`TeaData`抽象类来封装所有数据库操作,包括建表、插入记录和查询,从而将数据逻辑与界面活动(Activity)清晰分离。教程详细展示了使用`ContentValues`安全插入数据,以及利用`Cursor`游标检索数据的标准流程。对于初学者而言,它不仅讲解了具体的API用法(如`SQLiteOpenHelper`),更传递了良好的代码组织思想——将数据库操作独立成模块。 这对于刚入门Android开发、需要学习如何管理应用状态和本地存储的读者来说,是一份非常扎实的实践指南。它跳出了纯理论的讲解,让读者跟随一个具体项目的演进,直观地理解数据层是如何被构建和使用的。

IT 2010-11-15 22:33:21 / 累计浏览 3,372

android开发入门2:概念建立

作者从搭建好Hello World后的进一步探索讲起,分享了Android开发需要建立的核心概念框架。他将Android项目拆解为几大块:继承Activity的类相当于MVC中的Controller,负责业务逻辑;layout目录下的XML文件定义了界面布局,如同View层;values目录则存放字符串、颜色等常量资源,类似属性文件。 文章重点解读了layout/main.xml,指出其控件属性的写法与复杂性,类比了Web前端开发,提醒大小写敏感的细节。随后,作者用“胶水”一词形象地介绍了Intent的概念,它抽象描述了一个操作,负责在多个Activity组件间传递请求和解耦,是应用内导航的关键。通过拨号和启动新Activity的代码示例,让这个抽象机制变得具体可感。 整体上,这篇文章没有停留在表面介绍,而是通过与传统MVC、Web开发的类比,帮助初学者快速建立起对Android项目结构、界面构建和组件通信这几个关键支柱的直观认识。

IT 2010-11-01 19:57:26 / 累计浏览 19,422

android 开发入门

作者54chen记录了自己从零开始学习Android开发的全过程,重点分享了在Ubuntu系统下搭建开发环境并运行第一个“Hello World”程序的具体步骤。文章预设读者具备Java基础,跳过了语言基础,直奔主题。 核心内容分为两部分:一是环境搭建。作者详细说明了如何在Ubuntu 10.04上配置Eclipse、安装Android SDK和ADT插件,并配置了路径。特别提到了使用OpenJDK可能遇到的字体问题,以及SDK平台下载耗时较长等实际体验。二是编写并运行第一个程序。从创建项目、修改代码以动态显示“你好,世界”,到创建和使用Android虚拟设备(AVD),作者给出了清晰的代码示例和操作路径,并坦言虚拟机启动过程缓慢,需要耐心等待。 这是一份非常扎实的入门手记,对环境配置的每一步都描述得清晰具体,适合已有Java经验、想转向Android开发的开发者作为实操参考。

IT 2010-06-27 22:31:27 / 累计浏览 9,462

Android 连接SSID隐藏网络以及 LEAP 认证的方法

这篇讲的是在 Android 设备上连接隐藏 SSID 的 WiFi 网络并使用 LEAP 认证的实战方法。问题源于 Android 系统虽然从早期版本就支持 802.1x 认证,但其图形化配置界面提供的选项非常有限,导致连接此类网络(如文章中的 'sohu-office')时困难重重,通常需要 root 权限才能手动配置。 作者的解题思路非常巧妙:他意识到 Android 底层连接 WiFi 使用的也是 wpa_supplicant,这与 Linux 桌面系统(如 Ubuntu)的原理相同。因此,他从 Ubuntu 的 daemon.log 中提取了 wpa_supplicant 的配置模板,并将其应用到 Android 系统上。 具体操作是,通过 adb 拉取出 root 后 Android 设备中 `/data/misc/wifi/` 目录下的配置文件,然后手动添加关键配置块。这部分配置不仅设置了认证类型(IEEE8021X、LEAP)、用户名密码,还特别加入了 `ap_scan=2` 和 `scan_ssid=1` 这两个参数。作者强调,`ap_scan=2` 对于成功连接隐藏网络至关重要,但需要警惕的是,在修改其他无线设置时,系统可能会自动删除这行关键配置。 文章为遇到类似企业级 WiFi 连接问题的用户提供了一个清晰、可操作的解决方案,核心在于跳出系统 UI 的限制,直接利用底层工具的配置逻辑。

IT 2010-03-28 15:17:36 / 累计浏览 2,866

关于Android开发环境的构建方法总结

这篇文章详细说明了如何在Android SDK 2.1环境下,从零搭建一个可用的开发环境。作者针对当时开发者常遇到的环境配置问题,给出了一个清晰、可操作的流程。 核心方案聚焦于JDK的安装与关键环境变量的配置。文章不仅指出需要在官网下载并安装JDK,还具体演示了如何在系统属性中添加Path变量——例如,将类似“C:\Program Files\Java\jdk1.6.0_18\bin”这样的具体路径追加进去。这些细致的步骤直接指向一个明确的目标:确保系统能够正确识别Java编译工具。 这篇文章的价值在于,它将早期Android开发中容易出错的环境准备环节,分解成了一系列可执行的动作。对于当时的新手开发者而言,这种逐步引导能有效避免因路径错误或变量缺失导致的构建失败,节省大量排查时间。虽然环境版本较早,但其系统性的配置思路至今仍有参考意义。