摘要:随着移动站点的发展和普及,毫无疑问CodeCanyon的移动应用集合有了巨大的增长。从iPhone到Android,开发者已经贡献了一些令人惊艳的移动站点开发工具。这里快速列出了一些市场上所销售的顶级移动应用和工具。你可以试用它们并为你下一个移动站点获得灵感。1、创建自己的应用程序(无需任何编程技能) 不需编码就能创建你自己的iPhone/ iPod Touch应用!让客户在苹果AppStore找到你并且挖掘你沟通的潜力。2、DOLPHIN- XML的iPad / iPhone幻灯片和电子书模板 Dolphin,XML驱动的App模板,兼容iPad和iPhone,拥有...
阅读全文
摘要:一个Service是没有界面且能长时间运行于后台的应用组件.其它应用的组件可以启动一个服务运行于后台,即使用户切换到另一个应用也会继续运行.另外,一个组件可以绑定到一个service来进行交互,即使这个交互是进程间通讯也没问题.例如,一个aservice可能处理网络事物,播放音乐,执行文件I/O,或与一个内容提供者交互,所有这些都在后台进行.一个service本质上可有两种表现形式:Started 一个service在某个应用组件(比如一个activity)调用startService()时就处于"started"状态(注意,可能已经启动了).一旦运行后,service可以
阅读全文
摘要:单例模式,确保某个类只能生成一个实例单例模式的构造方法必须定义为私有(private)的必须要定义一个静态(static)的方法,作为生成这个对象实例的入口package com.singleton;//静态代码块不一定在最开始执行,比如说 静态代码块 放在 单例模式中,//但一般情况下 静态代码块是第一执行的 也就是在类加载时执行, 只执行一次class SingletonTest{ private static SingletonTest singletonTest = new SingletonTest(); static { System.out.println("===..
阅读全文
摘要:JDOMCreateXML.javaimport java.io.FileOutputStream;import java.io.*;import org.jdom.Document;import org.jdom.Element;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;/** * * 1.JDOM是专为java编程而设计的 具有创建,解析... xml的框架 * 2.JDOM 里面基本是 封装的“类”,而不像 DOM和SAX那样,全是接口 * 3.要使用JDOM里面的类必须要导入jdom.jar包 .
阅读全文
摘要:开源项目几乎都使用版本控制系统来对代码进行维护,著名的版本控制软件有诸如CVS、RationalClearCase、MicrosoftVisualSourceSafe、Git、Subversion、Mercurial等等,数不胜数。当然上面有的是商业软件,有的是开源软件,对于我们单纯下载代码而言,其实没有多大区别,关键要看你需要下载的开源代码它是基于何种版本控制系统的进行维护的,本文就以Subversion、Git、Mercurial为例进行说明。1)UsingSubversionSubversion是一个自由开源的版本控制系统,可以从http://subversion.apache.org/
阅读全文
摘要:1.建一个数据库: >use tutorialswitched to db tutorial
这里你也许会有疑问我们没有创建tutorial数据库,怎么就可以使用了?实际上,数据库和集合只在文档数据第一次被插入的时候创建。这里我们使用users集合。2.插入一条记录:>db.users.insert({username:"smith"})3.查看记录:>db.users.find()4.插入第二条记录:>db.users.save({username: "jones"})5.查看记录数:>db.users.count()6.
阅读全文
摘要:friends.xml<?xml version="1.0" encoding="utf-8"?><friends date="2012"> <!--此处为注释--> <friend id="1"> <姓名>小红</姓名> <QQ>1429286632</QQ> <!--address>上海</address--> </friend> <friend> <姓名>
阅读全文
摘要:本文介绍文件ViewImage.java和ViewMap.java。前者实现单张图片信息的浏览,后者实现自定义的地图,用于显示图片拍摄地点和用户当前所在地点。ViewImage实现的Activity界面如左下图,点击手机的菜单键时,弹出菜单选项界面如右下图: 上面Activity用到的布局文件view_image.xml如下:<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res..
阅读全文
摘要:friends.xml<?xml version="1.0" encoding="utf-8"?><friends date="2012"> <!--此处为注释--> <friend id="1"> <姓名>小红</姓名> <QQ>123456789</QQ> </friend> <friend> <姓名>小平</姓名> <QQ>12345678</QQ&
阅读全文
摘要:在前面几篇文章中,我们或多或少了解到了ImageManager类的存在,它负责从Panoramio服务器下载搜索区域内的图片数据,同时进行解析。当然,这一切是在独立的后台线程中进行的,下载的情况通过观察者模式通告给ImageList进行显示(ImageManager是被观察对象Subject)。注意,ImageManager是一个单例类。本文涉及到的知识点有两个:JSON和WeakReference。1)JSON(www.json.org)是目前流行的网络数据交换格式,它是JavaScriptObjectNotation的缩写。JSON数据是一系列键值对的集合,相信曾做过web开发的对这个不会
阅读全文
摘要:本文继续讲解Panoramio的实现,主要介绍ImageAdapter.java和ImageList.java这两个文件,这两个文件实现了如下所示的界面,左图是数据从网络加载过程中,有图是加载完成后的效果: ImageAdapter继承自BaseAdapter类,实现图片适配器的功能,而ImageList则继承自ListActivity,用于以列表形式显示搜索到的图片信息。介绍之前,先来普及下DataSetObserver和DataSetObservable的知识。从名字可以依稀猜到,DataSetObserver实现了观察者模式中的观察者角色(Observer)。当数...
阅读全文
摘要:本文介绍程序主界面的实现,对应的文件是Panoramio.java,主界面提供给用户从地图上选择搜索区域的功能,因此,直接从MapActivity继承,并实现OnClickListener接口。这样一来,这个类的初始框架如下代码所示:import com.google.android.maps.MapActivity; import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener; public class MainActivity extends MapActivi..
阅读全文
摘要:本文分析两个类:程序中用到的数据类PanoramioItem,以及工具类BitmapUtils。1)Parcelable接口和PanoramioItem类任何类如果希望自己的实例能够写入到Parcel中或者从Parcel中恢复出来,都必须实现Parcelable接口,实现这个接口的类除了要重写接口中定义的函数,还需要定义一个名为CREATOR的静态域,而CREATOR是实现Parcelable.Creator接口的对象,说了这么多,下面看下Parcelable的代码就一目了然了:public interface Parcelable { /** * Flag for use ...
阅读全文
摘要:Panoramio是一个照片分享社群,网址是http://www.panoramio.com/,现在被google收购了。注册之后就可以上传自己的照片,这些照片上传后可以在卫星地图上进行定位,经过审核的照片将有可能出现在GoogleEarth上,网站的宗旨是以照片发掘全世界,网站的logo如下:本文将要学习的开源代码也叫Panoramio,它实现的功能就是根据用户在地图上选择的地点,从Panoramio上获取周边的照片并以ListView形式显示出来,用户可以选择某种照片进行查看。首先来看下程序启动后的主界面:在MapView中选择要查看的地点,点击Searchpanoramio按钮将切换到显
阅读全文
摘要:使用ListView过程中,如果滚动加载数据的操作比较费时,很容易在滚屏时出现屏幕卡住的现象,一个解决的办法就是不要在滚动时加载数据,而是等到滚动停止后再进行数据的加载。这同样要实现OnScrollListener接口,关于该接口的简要描述见上一篇文章,这里直接进行代码的分析:package hust.iprai.asce1885; import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
impo.
阅读全文
摘要:OnScrollListener接口是定义在AbsListView中的,而AbsListView的直接子类有GridView和ListView,非直接子类有ExpandableListView。OnScrollListener的完整路径是frameworks\base\core\java\android\widget\AbsListView.java,代码如下:/** * Interface definition for a callback to be invoked when the list or grid * has been scrolled. */
public interf...
阅读全文
摘要:本文介绍使用TelephonyManager来获取手机SIM卡的状态和移动网络的相关信息,主要使用了TelephonyManager.listen函数,这个函数源码如下:public void listen(PhoneStateListener listener, int events) { String pkgForDebug = mContext != null ? mContext.getPackageName() : "<unknown>"; try { Boolean notifyNow = (getITelephony() != null); ...
阅读全文
摘要:在《做移动互联网App,你的测试用例足够吗》一文中,我们谈到了Android 1.5和1.6兼容性和2.0版本以后有很多不一致的地方,开发时需要单独进行处理,这会耗费开发者相当大的精力,我们在开发Android实际应用时应该如何制定App的支持策略呢? 下面我们谈谈应该如何分析来制定自己App的支持策略。1、 了解Android最新版本分布情况 在Android developer上的资源页面里,Google会提供最新的Android版本分布情况。例如下面是最近2月1日的数据。从中可以了解到Android 1.5的分布比例为0.6%,而Android 1.6的分布比例为1.0%...
阅读全文
摘要:Java.lang.Comparable接口中唯一的方法是compareTo(),在该方法中可以进行简单的相等比较以及执行顺序比较,接口实现框架如下:public class ComparableImpl implements Comparable<ComparableImpl> { @Override public int compareTo(ComparableImpl o) { // TODO Auto-generated method stub return 0; } }一个类实现了Comparable接口,则说明它的实例具有内在的排序关系,就可以跟多种泛型算法以及依...
阅读全文
摘要:Java中数据类型可分为两大类:引用类型(reference)和基本类型(primitive)。1)基本类型基本类型有8种:boolean、char、byte、short、int、long、float、double。它们都有相应的包装类,这些包装类都属于引用类型,它们依次是:Boolean、Character、Byte、Short、Integer、Long、Float、Double。2)引用类型所有Java对象都是通过对象引用(ObjectReferences)进行访问的,类似于C++中的指针,这个引用指向堆heap中的某块区域,实际的对象存在于heap中。例如,声明如下代码:intprim=
阅读全文
摘要:PolicyManager类位于framework\base\core\java\com\android\internal\policy目录中的PolicyManager.java文件中。PolicyManager主要用于创建Window类、LayoutInflater类和WindowManagerPolicy类,它扮演着简单工厂模式中的工厂类角色,而抽象产品角色由IPolicy接口实现,具体产品角色由Policy类实现。它们的关系如下图所示:从下面三个类的代码可以看出,都使用了hide注解,因此,这三个类都是不对外公开的API,只限于Framework内部使用。抽象产品类IPolicy实现如
阅读全文
摘要:重启装载器当你使用initLoader()时,如果指定ID的装载器已经存在,则它使用这个装载器.如果不存在呢,它将创建一个新的.但是有时你却是想丢弃旧的然后开始新的数据.要想丢弃旧数据,你应使用restartLoader().例如,下面这个SearchView.OnQueryTextListener的实现在用户查询发生改变时重启了装载器,装载器于是需重启从而能使用新的搜索过虑来进行一次新的查询.public boolean onQueryTextChanged(String newText) { // 当动作栏的搜索字串发生改时被调用. // 更新搜索过虑,然后重新启动装载利用...
阅读全文
摘要:译自:http://www.romancortes.com/blog/1k-rose/转载请标明作者和出处:http://blog.csdn.net/hfahe 我曾参与js1k爱情主题的第四次活动(译者注:关于有趣的js1k,可以看看我上一篇博文《JS1k比赛与3D玫瑰》)。我所提交的是一个静态图像,由程序生成的三维玫瑰。你可以在这里看到它。 它是通过显式分段三维曲面的蒙特卡洛采样所实现的。我要在这篇文章中尝试解释所有内容。关于蒙特卡罗方法的简短说明 蒙特卡罗方法是令人难以置信的强大工具。我一直在使用它们来实现很多功能优化和采样的问题。相比起设计和编写算法,如果你有更多CPU时...
阅读全文
摘要:初学者在尝试位于不同Java包目录下Activity之间的跳转时,经常会在运行时得到ActivityNotFoundException,下面就来看看不同包目录下Activity跳转的实现。首先,我们创建两个Activity:JumpTestActivity和JumpTestActivity2,JumpTestActivity中有个按钮,当用户按下时会跳转到JumpTestActivity2,功能很简单。首先实现JumpTestActivity的代码,它位于hust.iprai.asce1885包中:public class JumpTestActivity extends Activity {
阅读全文
摘要:一个使用装载器的应用会典型的包含如下组件:一个Activity或Fragment.一个LoaderManager的实例.一个加载被ContentProvider所支持的数据的CursorLoader.或者,你可以从Loader或AsyncTaskLoader实现你自己的装载器来从其它源加载数据.一个LoaderManager.LoaderCallbacks的实现.这是你创建新的装载器以及管理你的已有装载器的引用的地方.一个显示装载器的数据的途径,例如使用一个SimpleCursorAdapter.一个数据源,比如当是用CursorLoader时,它将是一个ContentProvider.启动一
阅读全文
摘要:也许它最开始只是作为一件好玩的事,但一年一度的JS1K比赛现在已经不再只是一个玩笑。今年的比赛已经开展得如火如荼,并且因为用小于1K的JavaScript脚本渲染的3D玫瑰的出现而显得更加壮观。 JS1K大赛旨在找寻互联网上最好的JavaScript创意,只有一个小条件 - 使用的代码必须小于1K。这可能听起来很疯狂,因为一些JavaScript框架 – 只是框架本身!- 代码量就超过了100k,但是从几年前开始时,JS1K的尝试就给人留下了深刻的印象。 今年最令人瞠目结舌的努力之一是开发者罗曼科尔特斯的作品3D渲染的玫瑰。依靠蒙特卡罗方法以保持代码的大小,科尔特斯的代码为以爱...
阅读全文
摘要:装载器从android3.0开始引进。它使得在activity或fragment中异步加载数据变得简单。装载器具有如下特性:它们对每个Activity和Fragment都有效。他们提供了异步加载数据的能力。它们监视数据源的一将一动并在内容改变时传送新的结果。当由于配置改变而被重新创建后,它们自动重连到上一个加载器的游标,所以不必重新查询数据。装载器API概述在使用装载器时,会涉及很多类和接口们,我们在下表中对它们总结一下:Class/Interface说明LoaderManager一个抽像类,关联到一个Activity或Fragment,管理一个或多个装载器的实例。这帮助一个应用管理那些与Ac
阅读全文
摘要:为了软件系统在系统层级上保持整洁,需要为系统演化出恰当的抽象等级和模块。其中一个有效的方法就是将系统的构造和使用分开,因为构造和使用是非常不一样的过程。软件系统应将启始过程和启始过程之后的运行时逻辑分离开,如果在启始过程中构建应用对象,将会存在相互缠结的依赖关系。将关注的方面分离开,是软件技艺中最古老也是最重要的设计技巧。不幸的是,多数应用程序没能做到分离处理,启始过程代码很特殊,被混杂到运行时逻辑中,下面的代码片段是著名的延迟初始化/赋值,这种处理的好处是在真正用到对象之前,无需操心这种架空构造,启始时间也会缩短,而且能够保证永远不会返回null值。public Service getSer
阅读全文
摘要:线程安全 在某些情况下,你实现的方法可能会在不同的线程中调用,所以它们必须被实现成“线程安全的”。 这首先体现在可以远程调用的方法上—比如在boundservice中的方法。当在一个进程中调用同一个进程中的IBinder上所实现的方法时,这个方法会在调用者的线程中运行(IBinder不理解的看这里:http://blog.csdn.net/nkmnkm/article/details/6453218)。然而,当这个调用从另一个进程中发出时,方法会在线程池中某个被选出的线程中执行,这个线程在与IBinder相同的进程中(它不是运行于进程的界面线程中)。例如,尽管一个service的onBin..
阅读全文
摘要:Why C++ ? 王者归来29人关注此资讯, 我要关注(收藏)(?) | 新闻投递 虫虫 发布于: 2012年02月02日 (58评) 因为又有人我去Quora的C2C站去回答问题去了,这回是 关于 @laiyonghao 的这篇有点争议的博文《2012 不宜进入的三个技术点》ActionScript,Thread 和 C++, C++争议的争议最大。(要我说,.NET比C++更需要慎重进入,呵)。我就在这里回复一下这个问题吧。正好我前段时间看到一个视频,这个演讲视频还比较著名,这个演讲者是Exceptional C++ 和 C++ Coding Standards 的作者,还是ISO C+
阅读全文
摘要:AsyncTask使你可以在你的界面上执行异步工作。它在一个工作线程中执行耗时操作然后把结果传给界面线程,不需要你亲自去管理线程和句柄。要使用它,你必须从AsyncTask派生一个类并实现回调方法doInBackground(),此方法在一个后台的线程池中运行。要更新你的界面,你应实现onPostExecute(),它把doInBackground()的结果弄过来并在界面线程中运行,于是你可以安全地更新你的界面。你可以在界面线程中调用execute()来执行AsyncTask任务。例如,你可以把上一章中的例子用AsyncTask实现:public void onClick(View v) {
阅读全文