第一种方法:
1. 将ES_FileExplorerco.apk, flashplayer_V10.3.apk 文件拷贝到Z:\mywork\gingerbreadRel\device\telechips\common目录下;
2. 在Z:\mywork\gingerbreadRel\build\target\product\generic.mk文件中添加下面信息:
PRODUCT_COPY_FILES := \
device/telechips/common/ES_FileExplorerco.apk:system/app/ES_FileExplorerco.apk \
device/telechips/common/flashplayer_V10.3.apk:system/app/flashplayer_V10.3.apk \
3. 重新编译整个SDK;
完成.
=====================================
当然, 请大家注意了. 当我用Angry_Birds.apk做以上操作, 发现系统起来后,Angry_Birds.apk运行异常. 在Sam哥的指导下, 原来需要将Angry_Birds.apk包中的libangrybirds.so文件单独取出编译进入img. 可以将Angry_Birds.apk重命名为Angry_Birds.zip文件, 用解压工具打开取出Angry Birds1.53.zip\lib\armeabi-v7a\目录下的libangrybirds.so文件(注意:我的开发环境是ARMV7, 所以选择了armeabi-v7a目录下的so文件;否则选armeabi目录下的so文件). 同样将libangrybirds.so文件放到Z:\mywork\gingerbreadRel\device\telechips\common目录下. 在Z:\mywork\gingerbreadRel\build\target\product\generic.mk文件中添加下面信息:
PRODUCT_COPY_FILES := \
device/telechips/common/ES_FileExplorerco.apk:system/app/ES_FileExplorerco.apk \
device/telechips/common/Angry_Birds.apk:system/app/Angry_Birds.apk \
device/telechips/common/libangrybirds.so:system/lib/libangrybirds.so \
这样Angry_Birds.apk运行就正常了.
=====================================
第二种方法:
1. 在Z:\mywork\gingerbreadRel\packages\apps目录下建一个目录ES_FileExplorerco;
2. 然后把ES_FileExplorerco.apk文件拷贝到Z:\mywork\gingerbreadRel\packages\apps\ES_FileExplorerco目录下;
3. 在ES_FileExplorerco目录下, 建一个Android.mk文件, 输入下面内容:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ES_FileExplorerco.apk
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLE
LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
4. 其它APK文件依次重复上面相应操作;
5. 重新编译整个SDK;
完成.
转自 :http://blog.csdn.net/hys119/article/details/7016539
转载 : http://26290056.qzone.qq.com/
创建UIButton
// Create a button sized to our art UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0.0f, 0.0f, 300.0f, 233.0f); button.center = CGPointMake(160.0f, 140.0f); // Set up the button aligment properties button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; // Set the font and color [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted]; // Hard code carriage returns // button.titleLabel.font = [UIFont boldSystemFontOfSize:36.0f]; // [button setTitle:@"Word1\nWord2\nWord3" forState: UIControlStateNormal]; // Let label handle carriage returns button.titleLabel.font = [UIFont boldSystemFontOfSize:36.0f]; [button setTitle:@"Lorem Ipsum Dolor Sit" forState: UIControlStateNormal]; button.titleLabel.textAlignment = UITextAlignmentCenter; button.titleLabel.lineBreakMode = UILineBreakModeWordWrap; // Add action [button addTarget:self action:@selector(toggleButton:) forControlEvents: UIControlEventTouchUpInside];
创建一个动画
// Load Butterflies NSMutableArray *bflies = [NSMutableArray array]; UIImage *img; for (int i = 1; i <= 17; i++) { NSString *bfname = [NSString stringWithFormat:@"bf_%d.png", i]; if (img = [UIImage imageNamed:bfname]) [bflies addObject:img]; } UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 80.0f, 80.0f)]; [imageView setAnimationImages:bflies]; [imageView setAnimationDuration:1.2f]; [imageView startAnimating]; imageView.center = button.center;
一个UIButton翻转的例子
@implementation TestBedViewController - (IBAction) flip: (UIButton *) button { // Hide the view that's going away [self.view viewWithTag:BUTTON1].alpha = 1.0f; [self.view viewWithTag:BUTTON2].alpha = 1.0f; [button setAlpha:0.0f]; // Decide which animation to use UIViewAnimationTransition trans; trans = (button.tag == BUTTON1) ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight; // Animate the flip [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1.0f]; [UIView setAnimationTransition:trans forView:[self.view viewWithTag:CLEARVIEW] cache:YES]; [[self.view viewWithTag:CLEARVIEW] exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; [UIView commitAnimations]; }
UISilder的使用
// Create slider UISlider *slider = [[UISlider alloc] initWithFrame:baseFrame]; slider.center = CGPointMake(160.0f, 140.0f); slider.value = 0.0f; // Create the callbacks for touch, move, and release [slider addTarget:self action:@selector(startDrag:) forControlEvents:UIControlEventTouchDown]; [slider addTarget:self action:@selector(updateThumb:) forControlEvents:UIControlEventValueChanged]; [slider addTarget:self action:@selector(endDrag:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside]; // Present the slider [self.view addSubview:slider]; [self performSelector:@selector(updateThumb:) withObject:slider afterDelay:0.1f]; //创建图片的例子 - (UIImage *) createImageWithLevel: (float) aLevel { UIGraphicsBeginImageContext(CGSizeMake(40.0f, 100.0f)); CGContextRef context = UIGraphicsGetCurrentContext(); float INSET_AMT = 1.5f; // Create a filled rect for the thumb [[UIColor darkGrayColor] setFill]; CGContextAddRect(context, CGRectMake(INSET_AMT, 40.0f + INSET_AMT, 40.0f - 2.0f * INSET_AMT, 20.0f - 2.0f * INSET_AMT)); CGContextFillPath(context); // Outline the thumb [[UIColor whiteColor] setStroke]; CGContextSetLineWidth(context, 2.0f); CGContextAddRect(context, CGRectMake(2.0f * INSET_AMT, 40.0f + 2.0f * INSET_AMT, 40.0f - 4.0f * INSET_AMT, 20.0f - 4.0f * INSET_AMT)); CGContextStrokePath(context); // Create a filled ellipse for the indicator [[UIColor colorWithWhite:aLevel alpha:1.0f] setFill]; CGContextAddEllipseInRect(context, CGRectMake(0.0f, 0.0f, 40.0f, 40.0f)); CGContextFillPath(context); // Label with a number NSString *numstring = [NSString stringWithFormat:@"%0.1f", aLevel]; UIColor *textColor = (aLevel > 0.5f) ? [UIColor blackColor] : [UIColor whiteColor]; centerText(context, @"Georgia", 20.0f, numstring, CGPointMake(20.0f, 20.0f), textColor); // Outline the indicator circle [[UIColor grayColor] setStroke]; CGContextSetLineWidth(context, 3.0f); CGContextAddEllipseInRect(context, CGRectMake(INSET_AMT, INSET_AMT, 40.0f - 2.0f * INSET_AMT, 40.0f - 2.0f * INSET_AMT)); CGContextStrokePath(context); // Build and return the image UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage; } //设置UISlider点击和正常两种状态 // create a new custom thumb image and use it for the highlighted state UIImage *customimg = [self createImageWithLevel:aSlider.value]; [aSlider setThumbImage: simpleThumbImage forState: UIControlStateNormal]; [aSlider setThumbImage: customimg forState: UIControlStateHighlighted]; previousValue = aSlider.value;
预留
预留
预留
预留
预留
预留
我们平时在开发应用的时候,经常会用到 NSLog 来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到 NSLog 调用,然后注释掉。 这样做在项目小的时候还比较有效,但随着项目规模的增长,就会变得越来越难控制。 下面就给大家介绍一个简单的方法,让我们在生成 Release 版本时不需要进行任何更改即可屏蔽所有的 Log 输出。
首先我们先要定义这样一段预处理命令,文件名随便起,例如 CLog.h
#ifdef DEBUG
#define CLog(format, ...) NSLog(format, ## __VA_ARGS__)
#else
#define CLog(format, ...)
#endif
这里我们判断 DEBUG 这个宏是否定义,如果有定义我们就将这个 CLog 宏替换成 NSLog 调用,而如果没有定义过 DEBUG 标志我们就直接跳过。这点应该不难理解。
检查 DEBUG 标志是否正确定义,Xcode 一般会在 debug 运行配置项里面已经定义号了DEBUG 标志,如果没定义我们就自己写上,以我的 Xcode 4 为例,如下图:
找到 PreProcessor Macros 这个属性,对于 Debug 配置我们给他写上 DEBUG,而在 Release 配置中把它留空。 这样我们刚才那段预处理命令就可以根据这个标志来判断我们编译的时调试版本还是发布版本,从而控制 NSLog 的输出。 (因为 Xcode 4 会把 debug/release 两个配置项同时对比展现出来,而 3.x 版本的只能分别设置,如果你用的时xcode 3.x 开发工具, 那么就分别对 Debug/Release 都检查一下)。
到了这里我们这个判断工作就都进行完了,不过这里还有一点比较麻烦,就是我们如果想实用 CLog 宏,就必须要导入 CLog.h 这个头文件。 不过 Xcode 为我们提供了一种非常巧妙的解决办法。 我们自己看一下项目里的文件,是不是有一个叫做 xxx-prefix.pch 的文件,只要注意到 pch 这个扩展名就可以了。 这个文件是做什么用的呢? 下面是一个 pch 文件的样本:
//
// Prefix header for all source files
//
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
这里引入了一些头文件, 其实是 Xcode 的一种预编译机制,我们在编译一个项目的时候,会有很多常用的源文件,并且这些代码文件几乎不被修改,所以 Xcode 对这些文件只在早期进行一次编译,以便我们以后的多次构建过程中反复实用。 例如这里的 UIKit 和 Foundation ,这样的机制可以加快我们每次构建项目的速度。 当然这里我们不必太深究它,知道它的作用后,我们就可以利用它来为我们的开发提供便利。 我们只需要将刚刚建立的 CLog.h 也在这里面引入一下,这样我们项目中的所有文件就都能够访问到我们刚刚定义的 CLog 宏了。 下面是完成后的 pch 文件:
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "CLog.h"
#endif
这样,我们的 CLog 就完成了,现在可以在任何一个源文件中实用 CLog 宏来输出日志,预处理命令会自动判断当前的编译配置,如果是 Debug,就会输出日志,反之则什么都不会输出。