摘要: 本文介绍在Android应用中如何提升视觉效果。 当我们投身这个领域时,每个开发者都想让自己的应用更加出色,在Android应用开发中,风格和设计或许不是最关键的要素,但它们在决定Android应用成功与否上确实扮演重要的角色。 以下是Android应用的UI设计技巧,还有个附加技巧,能够提升你的Android应用的视觉吸引力。 1.使用大小适当的图像 在图像方面,许多Android应用开发者采用的是大小单一的做法。尽管这会使资源管理变得更为简单,但就应用的视觉吸引力而言,这是个错误的做法。要让应用呈现出最佳的视觉效果,那么就应当针对具体的设备屏幕设计不同的图像。最适当的图像才能构建出最... 阅读全文
posted @ 2012-03-02 00:06 Healtheon 阅读(6074) 评论(2) 推荐(2) 编辑
摘要: 本文介绍Android中的5种数据存储方式。 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1使用SharedPreferences存储数据 2文件存储数据 3SQLite数据库存储数据 4使用ContentProvider存储数据 5网络存储数据 下面将为大家一一详细介绍。 第一种:使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用Shar. 阅读全文
posted @ 2012-03-01 00:37 Healtheon 阅读(94374) 评论(15) 推荐(34) 编辑
摘要: 本文介绍在Android平台中实现对XML的三种解析方式。 XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。 在Android中,常见的XML解析器分别为DOM解析器、SAX解析器和PULL解析器,下面,我将一一向大家详细介绍。 第一种方式:DOM解析器: DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息。Android完全支持DOM 解析。利用DOM中的对象,可以对XML文.. 阅读全文
posted @ 2012-02-28 00:49 Healtheon 阅读(11214) 评论(1) 推荐(8) 编辑
摘要: 本文介绍在使用Eclipse开发Android程序时无法显示Android设计界面的解决方案。 我们在使用MyEclipse或Eclipse开发Android程序时,有进点击main.xml Design可能显示的不是设计界面,而是view属性界面,如下图所示: res/layout/main.xml,升级SDK和ADT之前,这个一直是显示界面,升级后,点开这个文件,切到Design,发现显示不了界面,而是以表格的形式显示的该界面中各个view的属性值!这是由于有时ADT和SDK版本之间的不兼容问题。所以尽量使用版本相同的ADT和SDK,另外最好使用目前最新版本的ADT。 解决办... 阅读全文
posted @ 2012-02-27 12:03 Healtheon 阅读(15721) 评论(0) 推荐(4) 编辑
摘要: 本文演示在Android平台中绘制和展示图表示例,本示例是基于RChart 2实现的。 在一个系统中经常要用到图表统计数据,在WEB开发中图表绘制是一件简单的事情,因为有比较多的开源方案。但在Android中开源方案并不多。 Android中绘制图表解决方案: 1) 使用google 图表 api 2) 使用Achartengine库(http://www.achartengine.org/) 3) 使用chartdroid库(http://code.google.com/p/chartdroid/) 4) 使用RChart 2库实现。 第一种解决方案是使用google的图表A... 阅读全文
posted @ 2012-02-20 18:51 Healtheon 阅读(36075) 评论(13) 推荐(10) 编辑
摘要: 本示例介绍在Android平台下通过HTTP协议实现断点续传下载。 我们编写的是Andorid的HTTP协议多线程断点下载应用程序。直接使用单线程下载HTTP文件对我们来说是一件非常简单的事。那么,多线程断点需要什么功能? 1.多线程下载, 2.支持断点。 使用多线程的好处:使用多线程下载会提升文件下载的速度。那么多线程下载文件的过程是: (1)首先获得下载文件的长度,然后设置本地文件的长度。 HttpURLConnection.getContentLength();//获取下载文件的长度 RandomAccessFile file = new RandomAccessFile("Q 阅读全文
posted @ 2012-02-20 00:14 Healtheon 阅读(81480) 评论(37) 推荐(21) 编辑
摘要: 本示例以Servlet为例,演示Android与Servlet的通信。 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。至于Socket通信会在以后的博文中介绍。 HTTP协议简介: HTTP (Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种协议。 HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。 在HTTP 1.0. 阅读全文
posted @ 2012-02-19 01:56 Healtheon 阅读(149624) 评论(26) 推荐(20) 编辑
摘要: 本示例演示在Android中实现带渐显按钮的左右滑动效果。 关于滑动效果,在我的上一篇博文中提到过,有兴趣的朋友可以访问:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html 如果大家想实现带指引效果的左右滑动,请访问博文:http://www.cnblogs.com/hanyonglu/archive/2012/04/07/2435589.html 先看下运行效果: 程序结构: MainActivity文件中代码:packagecom.android.buttonpageflipper;import... 阅读全文
posted @ 2012-02-13 23:07 Healtheon 阅读(27223) 评论(2) 推荐(6) 编辑
摘要: 本示例演示在Android中实现图片左右滑动效果。 关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现。接下来就让我们开始实现这种效果。为了方便大家理解,我们先来看一下效果图: 主要效果图如下图: 接下来我们看一下程序结构图: MainActivity文件中代码:package com.android.flip;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;i... 阅读全文
posted @ 2012-02-13 18:04 Healtheon 阅读(83825) 评论(8) 推荐(9) 编辑
摘要: 本文介绍Android中实现翻页功能原理及示例。 第一种翻页效果如下: 实现原理: 当前手指触摸点为a,则 a点坐标为(ax,ay), 由三角形acb与三角形cmb为对称三角形并且直线cp为am垂直平分线,则 B点坐标为(ax/2,ay/2)。 作gf垂直于om且cb垂直于am, 三角形cfg与gfm相似,则 cf:gf = gf:mf cf=(gf * gf) / mf gf长度为g点纵坐标 mf长度为g点横坐标 cf长度可求 c点坐标可求 由c点、g点可确定过两点间的直线, 当该直线中x=0时求出与y足交点。 第二种翻页效果 实现原理: 使用贝赛尔曲线。曲线有四个... 阅读全文
posted @ 2012-02-13 02:01 Healtheon 阅读(14702) 评论(0) 推荐(5) 编辑
摘要: 本示例实现Android通过手势可以实现图像的拖拽功能。运行效果如下: 代码如下: packagecom.android.drag;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.util.DisplayMetrics;importandroid.view.MotionEvent. 阅读全文
posted @ 2012-02-13 00:12 Healtheon 阅读(6808) 评论(0) 推荐(2) 编辑
摘要: 下面的示例是在Android中实现图片3D旋转的效果。实现3D效果一般使用OpenGL,但在Android平台下可以不直接使用OpenGL,而是使用Camera实现,Camera中原理最终还是使用OpenGL,不过使用Camera比较方便。Camera类似一个摄像机,当物体不动时,我们带着摄像机四处移动,在摄像机里面的画面就会有立体感,就可以从其它的角度观看这个物体。废话不多说,直接看示例。运行效果如下:项目结构: MainView.java中代码:packagecom.android.graphics;importandroid.content.Context;importandroid.g 阅读全文
posted @ 2012-02-12 02:46 Healtheon 阅读(21106) 评论(10) 推荐(3) 编辑
摘要: 本文使用Matrix实现Android实现图片缩放与旋转。示例代码如下:packagecom.android.matrix;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Matrix;importandroid.graphics.drawable.BitmapDrawable;importandroid.os.Bundle;importandroid.view.ViewGroup.LayoutParams;i 阅读全文
posted @ 2012-02-11 01:21 Healtheon 阅读(54548) 评论(1) 推荐(3) 编辑
摘要: Android 为我们提供了一个用来绘制图片与动画2D的图像库,这两个包分别是android.graphics.drawable 和 android.view.animation ,在这两个包中可以找到相同的类去呈现绘图与动画的两个不同面。 在这个文档中将介绍如何在你的Android应用程序中使用这个库。我们将讨论基础类Drawable对象如何绘图,如何使用一对Drawable的子类,还有如何去创建图片和动画。 1 Drawable Drawable 是一个通用的抽象类,它的目的是告诉你什么东西是可以画的。你会发现基于Drawable类扩展 出各种绘图的类包括:BitmapDrawable.. 阅读全文
posted @ 2012-02-11 00:59 Healtheon 阅读(3177) 评论(0) 推荐(1) 编辑
摘要: Google开放了Android的源码 。 源码采用Git进行版本控制。 1. 首先,到 http://code.google.com/p/msysgit/downloads/list下载Git-xxx.exe,下载完成后安装Git。 2. Android代码仓库的地址 http://git.source.android.com访问该地址。 可以看到Android项目中,所有的包的列表。 单个包源码的下载方式: 创建目录,运行Git,在Git提供的shell,切换路径到你刚才创建的目录下(cd命令),然后运行下表命令(以common.git为例) git clone git://android 阅读全文
posted @ 2011-06-21 11:39 Healtheon 阅读(2997) 评论(0) 推荐(4) 编辑
摘要: 本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_list,...);这种方式和我们以前认识的不大一样,但我们要记住这是C中一种传参的形式,在后面我们就会用到它。2.函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈。 首先是参数... 阅读全文
posted @ 2011-05-07 17:59 Healtheon 阅读(157355) 评论(13) 推荐(20) 编辑
摘要: 本文介绍malloc和free函数的内容。 在C中,对内存的管理是相当重要。下面开始介绍这两个函数: 一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。 2、函数的用法: 其实这两个函. 阅读全文
posted @ 2011-04-28 00:34 Healtheon 阅读(88976) 评论(0) 推荐(16) 编辑
摘要: 在刚开始使用SCROLLINFO结构时感觉很不顺手,尤其其中的成员fMask理解不太深刻,经过查询资料才理解一二。 在使用滚动条功能时,如果要设置它的范围和位置可以用以前的函数,例如:SetScrollRange()、 SetScrollPos()、GetScrollRange()、GetScrollPos()等,但目前通常使用SetScrollInfo()与 GetScrollInfo(),使用这两个函数就要用到SCROLLINFO结构。 可以先定义一个SCROLLINFO结构变量si,用&si作为以上两个函数的参数。同BeginPaint()中的&ps、GetTextMet 阅读全文
posted @ 2011-04-20 18:24 Healtheon 阅读(23119) 评论(1) 推荐(2) 编辑
摘要: GetHashCode 方法适用于哈希算法和诸如哈希表之类的数据结构。 GetHashCode 方法的默认实现不保证针对不同的对象返回唯一值。而且,.NET Framework 不保证 GetHashCode 方法的默认实现以及它所返回的值在不同版本的 .NET Framework 中是相同的。因此,在进行哈希运算时,该方法的默认实现不得用作唯一对象标识符。 GetHashCode 方法可以由派生类型重写。值类型必须重写此方法,以提供适合该类型的哈希函数和在哈希表中提供有用的分布。为了获得最佳结果,哈希代码必须基于实例字段或属性(而非静态字段或属性)的值。 用作 Hash... 阅读全文
posted @ 2011-04-19 12:20 Healtheon 阅读(1248) 评论(0) 推荐(1) 编辑
摘要: 本文介绍在Windows程序开发中的MessageBox详解。 我们在在Windows程序设计中经常会涉及到一个格式化消息框,其代码如下:#include <windows.h>#include <tchar.h> #include <stdio.h> int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ……){ TCHAR szBuffer [1024] ; va_list pArgList ; // The va_start macro (defined... 阅读全文
posted @ 2011-04-19 12:16 Healtheon 阅读(6627) 评论(0) 推荐(2) 编辑
摘要: 本文讲解如何使用多线程安全地使用.NET 中的Windows窗体控件。 使用多线程提高 Windows 窗体应用程序的性能时,必须注意以线程安全方式调用控件。 访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。.NET Framework 有助于在以非线程安全方式访问控件时检测到这一问题。在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperation... 阅读全文
posted @ 2011-04-19 12:08 Healtheon 阅读(4454) 评论(1) 推荐(1) 编辑
摘要: 本实例是一个基于TCP的简单通讯实例,分为服务器端和客户端,服务器端监听客户端的连接请求,客户端将信息发送给服务器端,而服务器端则回复客户端发送的信息以达到通讯测试:服务器端代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.Net.Sockets;namespaceSimpleTcpServer{classProgram{staticvoidMain(string[]args){//接收到的数据intreceive;//定义 阅读全文
posted @ 2011-04-19 11:39 Healtheon 阅读(1033) 评论(0) 推荐(2) 编辑
摘要: 在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念:数据库服务器。这要求一台性能和配置都比较好的主机作为服务器,以满足数目众多的客户端进行频繁访问。但是对于一些数据交换的要求不 主同,而且涉及到的通讯个体数目不多,如果还采用“一主机多客户机”的模式,便要求一台硬件配置良好而且软件上安装了相关数据服务软件,这样会造成硬件和 软件上的很多不必要的成本,这时Socket在点对点的平行对象之间的网络通讯的优势就就发挥出来了。 其实对于Socket通讯来说,服务器和客户端的界定不像数据库服务器与客户端那样明显,甚至可以说Socket通讯里面的服务器... 阅读全文
posted @ 2011-04-19 10:56 Healtheon 阅读(1060) 评论(0) 推荐(2) 编辑
摘要: 本文介绍Socket的基本知识。 TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”,详细见《计算机网络》。 SOCKET(套接字)是TCP/IP协议的网络通信的一种实现。包含进行网络通信必须的五种信息: 连接使用的协议(TCP/UDP) 本地主机的IP地址 本地进程的协议端口 远地主机的IP地址 远地进程的协议端口 通过SOCKET ,可以实现应用中的并发链接 建立SOCKET连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。... 阅读全文
posted @ 2011-04-19 10:46 Healtheon 阅读(2089) 评论(0) 推荐(1) 编辑
摘要: 本文主要是获得鼠标当前所在位置像素的颜色。说到这里,大家可能还记得PhotoShop中吸管的功能,就是在图片的某一位置点击一下,就能获得那个位置像素的颜色。此程序和吸管的功能相似,不妨先来看下运行效果图: 其代码如下所示:class CallWin32GDIAPI{ private const int SM_CXSCREEN = 0x00000000;//屏幕的横坐标 private const int SM_CYSCREEN = 0x00000001;//纵坐标 private const int SRCCOPY = 0x00CC0020;/... 阅读全文
posted @ 2011-04-12 23:11 Healtheon 阅读(2087) 评论(0) 推荐(1) 编辑
摘要: typedefstruct_SHELLEXECUTEINFO {DWORD cbSize;ULONG fMask;HWND hwnd;LPCTSTR lpVerb;LPCTSTR lpFile;LPCTSTR lpParameters;LPCTSTR lpDirectory;intnShow;HINSTANCE hInstApp;LPVOID lpIDList;LPCTSTR lpClass;HKEY hkeyClass;DWORD dwHotKey;union{HANDLE hIcon;HANDLE hMonitor;} DUMMYUNIONNAME;HANDLE hProcess;} SH 阅读全文
posted @ 2011-04-12 22:58 Healtheon 阅读(16791) 评论(0) 推荐(1) 编辑
摘要: 本文介绍Windows API中的窗口注册类和消息结构的相关知识。 WNDCLASSEX窗口注册类: 结构体原型:typedef struct WNDCLASSEX { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTS... 阅读全文
posted @ 2011-04-12 22:55 Healtheon 阅读(1525) 评论(0) 推荐(1) 编辑
摘要: 本文介绍C/C++中堆,栈及静态数据区。 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。下面分别来介绍: 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存... 阅读全文
posted @ 2011-04-12 22:49 Healtheon 阅读(23085) 评论(2) 推荐(10) 编辑
摘要: 博客已从百度上成功移到了博客园(http://www.cnblogs.com/hanyonglu/)上了,欢迎大家访问! ^_^ 阅读全文
posted @ 2011-04-12 22:06 Healtheon 阅读(360) 评论(0) 推荐(0) 编辑