省去一切关于Three20的介绍
下载地址:https://github.com/facebook/three20
一.解压压缩包,将src目录copy到工程中.
二.命令行进入到src目录的script.
三.执行命令导入库
python ttmodule.py -p /your_project_path/project.xcodeproj Three20 --xcode-version=4
注:
1.--xcode-version:Set the xcode version you plan to open this project in. By default uses xcodebuild to determine your latest Xcode version.
2.如果遇到打死找不到头文件,悠Other Linker Flags为-all_load
> 1. Double click the project in the left hand pane
> 2. Click the "Build" at the top
> 3. Find "Other Linker Flags" (tip: use Search box)
> 4. Add the "-all_load" flag
> Without it, the class categories were not loaded, and the additions to
> UIViewController did not register.
> Hope this helps someone else
参考:
http://ugrv5h1t.i.sohu.com/blog/view/200606083.htm
http://groups.google.com/group/three20/browse_thread/thread/f07a0301283cdee5
/**
* 字符串转换为java.util.Date<br>
* 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'<br>
* yy/MM/dd HH:mm:ss 如 '2002/1/1 17:55:00'<br>
* yy/MM/dd HH:mm:ss pm 如 '2002/1/1 17:55:00 pm'<br>
* yy-MM-dd HH:mm:ss 如 '2002-1-1 17:55:00' <br>
* yy-MM-dd HH:mm:ss am 如 '2002-1-1 17:55:00 am' <br>
* @param time String 字符串<br>
* @return Date 日期<br>
*/
public static Date stringToDate(String time) {
SimpleDateFormat formatter;
int tempPos = time.indexOf( " AD " ) ;
time = time.trim() ;
formatter = new SimpleDateFormat ( " yyyy.MM.dd G 'at' hh:mm:ss z " );
if (tempPos >- 1 ) {
time = time.substring( 0 ,tempPos) +
" 公元 " + time.substring(tempPos + " AD " .length()); // china
formatter = new SimpleDateFormat ( " yyyy.MM.dd G 'at' hh:mm:ss z " );
}
tempPos = time.indexOf( " - " );
if (tempPos >- 1 && (time.indexOf( " " ) < 0 )) {
formatter = new SimpleDateFormat ( " yyyyMMddHHmmssZ " );
}
else if ((time.indexOf( " / " ) >- 1 ) && (time.indexOf( " " ) >- 1 )) {
formatter = new SimpleDateFormat ( " yyyy/MM/dd HH:mm:ss " );
}
else if ((time.indexOf( " - " ) >- 1 ) && (time.indexOf( " " ) >- 1 )) {
formatter = new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " );
}
else if ((time.indexOf( " / " ) >- 1 ) && (time.indexOf( " am " ) >- 1 ) || (time.indexOf( " pm " ) >- 1 )) {
formatter = new SimpleDateFormat ( " yyyy-MM-dd KK:mm:ss a " );
}
else if ((time.indexOf( " - " ) >- 1 ) && (time.indexOf( " am " ) >- 1 ) || (time.indexOf( " pm " ) >- 1 )) {
formatter = new SimpleDateFormat ( " yyyy-MM-dd KK:mm:ss a " );
}
ParsePosition pos = new ParsePosition( 0 );
java.util.Date ctime = formatter.parse(time, pos);
return ctime;
}
/**
* 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss'(24小时制)<br>
* 如Sat May 11 17:24:21 CST 2002 to '2002-05-11 17:24:21'<br>
* @param time Date 日期<br>
* @return String 字符串<br>
*/
public static String dateToString(Date time) {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " );
String ctime = formatter.format(time);
return ctime;
}
/**
* 将java.util.Date 格式转换为字符串格式'yyyy-MM-dd HH:mm:ss a'(12小时制)<br>
* 如Sat May 11 17:23:22 CST 2002 to '2002-05-11 05:23:22 下午'<br>
* @param time Date 日期<br>
* @param x int 任意整数如:1<br>
* @return String 字符串<br>
*/
public static String dateToString(Date time, int x) {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " yyyy-MM-dd KK:mm:ss a " );
String ctime = formatter.format(time);
return ctime;
}
/**
*取系统当前时间:返回只值为如下形式
*2002-10-30 20:24:39
* @return String
*/
public static String Now() {
return dateToString( new Date());
}
/**
*取系统当前时间:返回只值为如下形式
*2002-10-30 08:28:56 下午
* @param hour 为任意整数
* @return String
*/
public static String Now( int hour) {
return dateToString( new Date(),hour);
}
/**
*取系统当前时间:返回值为如下形式
*2002-10-30
* @return String
*/
public static String getYYYY_MM_DD() {
return dateToString( new Date()).substring( 0 , 10 );
}
/**
*取系统给定时间:返回值为如下形式
*2002-10-30
* @return String
*/
public static String getYYYY_MM_DD(String date) {
return date.substring( 0 , 10 );
}
public static String getHour() {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " H " );
String ctime = formatter.format( new Date());
return ctime;
}
public static String getDay() {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " d " );
String ctime = formatter.format( new Date());
return ctime;
}
public static String getMonth() {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " M " );
String ctime = formatter.format( new Date());
return ctime;
}
public static String getYear() {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " yyyy " );
String ctime = formatter.format( new Date());
return ctime;
}
public static String getWeek() {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat ( " E " );
String ctime = formatter.format( new Date());
return ctime;
}
我的需求很简单:使用重叠的小图来代替一张大图作为背景,因为大图很占内存,这个在移动开发中是不能容忍的(当然前提是该图可以通过小片的图重叠得到)。但是还有额外的要求就是原先的大图是有stroke的,就是边框,我用重叠的图片必须没有边框(可以选择高度保持,宽度截取一部分,这样左右两边就没有边框)。
也很简单,比较容易想到,就是使用Layer List:定义一个item为shape,用来添加stroke做为重叠后的图片的边框,再定义一个item为bitmap,设置tileMode为repeat,并且为了保证图片不被拉伸变形之类的,设置gravity为center,另外设定一些left,right的偏移,以便能显示出来shape的stroke。
之所以需要在此记录一下,就是我碰到一个超级恶心的问题,就是在3.0以下的系统,重叠的图片之间会有很明显的线。。。这个纠结我好久了。。害我差点放弃这个,而用一个么有边框的难看的背景。。还好我隔了一段时间又开始看这个问题(好长好多废话。。)。分析之后发现好像是定义的shape默认会是黑色,可能我之前的图片是有一定透明度的,所以会显示出来,但是至于为什么只在图片之间能明显的看出来我就不清楚了。。所以,将shape的颜色设定为透明的就可以了。。
下面是定义的xml:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape> <!-- define border--> <stroke android:width="*dp" android:color="#********"/> <!--set color--> <solid android:color="#00******" /> </shape> </item> <item android:left="*dp" android:right="*dp"> <!--repeat bitmap--> <bitmap android:src="/blog_article/@drawable/____/index.html" android:tileMode="repeat" android:gravity="center" /> </item> </layer-list>