Hexo是一款快速,强大的博客框架,使用Node.js开发,可以将博客部署到github或gitcafe上。

快速开始

创建文章

$ hexo new "My New Post"

更多: Writing

运行本地服务器

$ hexo server

可以在本地http://localhost:4000/ 查看

更多: Server

生成静态文件

$ hexo generate

更多: Generating

部署

$ hexo deploy

支持github或gitcafe,需要在_config.yml中先进行配置

更多: Deployment

早先的一个版本我是用python写的,在kindle 3.3版本下无法运行。

于是决定重写,我考虑了一下,主要有以下两个方案:

  • 方案1
    用awk+curl来实现,cygwin中已跑通,但curl在kindle上无法加载cookie,放弃

  • 方案2
    用awk+java来实现,先用awk解析摘录文件,然后用java编写代码处理同步

目前采用方案2,在我的kindle3上运行良好。

阅读全文 »

在很多时候,我们需要给一个Layout设置一个背景。例如,我们下下面的layout中使用了这样一个背景:

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”@drawable/antelope_canyon”>

<TextView android:text=”@+id/TextView01
android:id=”@+id/TextView01
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” >

</TextView>
</LinearLayout>
阅读全文 »

Android NDK是用来编译能在手机ARM平台上运行的,通过C/C++编写的LIB库。

注:理论上不只在ARM平台,以后应该也能在Intel x86平台上运行的。

JNI调用,是为了使java能够调用C/C++所编写的程序的一种机制。

Android NDK和JNI调用结合,就能够使Android程序,调用原生底层用C/C++实现的功能。

阅读全文 »

在Android中,可以通过对EditText设置setFilters方法,用代码控制EditText的输入长度,或控制输入小数的位数等。

1.设置EditText的输入长度

inputEdit.setFilters(new InputFilter[] { new InputFilter.LengthFilter(length) });

2.控制输入小数的位数

// 设置小数位数控制
InputFilter lengthfilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend)
{


// 删除等特殊字符,直接返回
if (&quot;&quot;.equals(source.toString())) {
return null;
}

String dValue = dest.toString();
String[] splitArray = dValue.split(&quot;\\.&quot;);
if (splitArray.length &gt; 1) {
String dotValue = splitArray[1];
int diff = dotValue.length() + 1 - digLength;
if (diff &gt; 0) {
return source.subSequence(start, end - diff);
}
}
return null;
}
};

inputEdit.setFilters(new InputFilter[] { lengthfilter });

  1. 不要过多的嵌套布局,特别是在ListView中需要重复获取的情况下。嵌套布局的情况可以采用RelativeLayout替代LinearLayout,减少嵌套层数。`
  2. 可以采用SDK工具里的hierarchyviewer,分析layout的执行效率。
  3. 利用新版的ADT(adt1.6)的提示功能,纠正布局文件中影响性能的部分。
  4. 在采用LinearLayout布局时,尽量不要嵌套中使用layout_weight属性,这会导致所有的内部VIew执行两次measure.
阅读全文 »

在开发中,在同一个Activity中有多个输入框,不想让ScrollView自动切换EditText的焦点,
需要继承ScrollView,重写onRequestFocusInDescendants方法,然后在layout中使用自定义的ScrollView即可。

public class NonFocusingScrollView extends ScrollView {

public NonFocusingScrollView(Context context) {
super(context);
}

public NonFocusingScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public NonFocusingScrollView(Context context, AttributeSet attrs,
int defStyle)
{

super(context, attrs, defStyle);
}

@Override
protected boolean onRequestFocusInDescendants(int direction,
Rect previouslyFocusedRect)
{

return true;
}

}

Kindle摘录同步可以把在Kindle上做的摘录和笔记,自动同步到网站上进行统一管理和导出,并可以**发布到新浪,腾讯,豆瓣,饭否的微博上。**

安装步骤

前提:

本功能只适用于kindle3原版系统(目前已通过测试的有版本3.2.1,3.3)

kindle必须已经破解过的

kindle上必须已安装launchpad,安装参考此文http://padevices.com/fbkindle(只需要安装launchpad即可)

http://kindlesync.sinaapp.com完成注册和微博绑定。

阅读全文 »

刚开始看Android NotePad中的ContentProvider的实现时,看的云里雾里,但自己模仿写过一个后,才发现也就这么一回事,就是实现公用的增删改查。下面将需要实现的方法做一个简单的回顾:

  1. 一个ContentProvider可以实现对多个数据表的操作,但每一个数据表都需要有一个独立URI,也必须有一个独立的类型。URI是其他应用访问这个数据入口,比如:
    content://com.chenyc.timeaccount.provider/eventtypes/id
    它包括4部分,content://就是固定的头部,com.chenyc.timeaccount.provider部分需要一个唯一的字符串,一般就用ContentProiver类所在的包名,eventtypes部分一般是指在这个ContentProvider下,你需要操作那种类型的数据,一般可以用表名来表示,id部分是指具体操作数据的_id,如果查询某一条数据,则id部分就是其在数据库中的_id字段的值。
    每个数据表需要有一个独立的数据类型,需要在getType(Uri uri)中实现,返回一个唯一的字符串即可,比如:
    vnd.chenyc.cursor.dir/vnd.account.eventtype
阅读全文 »