当前位置: 编程技术>移动开发
本页文章导读:
▪施用ContentResolver操作ContentProvider中的数据 使用ContentResolver操作ContentProvider中的数据
当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver
类来完成,要获取ContentResolver
对象,可以使用Activ.........
▪ presentModalViewController 的卡通效果 presentModalViewController 的动画效果系统自带(四种效果):
presentModalViewController模态的动画效果设置:
UIViewController *detailViewController = [[UIViewController alloc] init];
detailViewController.modalTransi.........
▪ 6410 Eboot 平添键盘控制 6410 Eboot 添加键盘控制升级的时候,需要搞个提示,加个键盘控制神马的。
所以,咱得把这个键盘加到Eboot里面。
由于Eboot里面使用不了这个中断,所以只能使用扫描按键的方式。
按键接的.........
[1]施用ContentResolver操作ContentProvider中的数据
来源: 互联网 发布时间: 2014-02-18
使用ContentResolver操作ContentProvider中的数据
当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver
类来完成,要获取ContentResolver
对象,可以使用Activity提供的getContentResolver()方法。
ContentResolver 类提供了与ContentProvider类相同签名的四个方法:
public Uri insert(Uri uri, ContentValues values)
该方法用于往ContentProvider添加数据。
public int delete(Uri uri, String selection, String[] selectionArgs)
该方法用于从ContentProvider删除数据。
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
该方法用于更新ContentProvider中的数据。
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
该方法用于从ContentProvider中获取数据。
这些方法的第一个参数为Uri,代表要操作的是哪个ContentProvider和对其中的什么数据进行操作,假设给定的是:
Uri.parse(“content://cn.itcast.provider.personprovider/person/10”),那么将会对主机名为cn.itcast.provider.personprovider的ContentProvider进行操作,操作的数据为person表中id为10的记录。
------------------------------------------------------------------------------------------------------------------------
使用ContentResolver对ContentProvider中的数据进行添加、删除、修改和查询操作:
ContentResolver resolver =
getContentResolver();
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person");
//添加一条记录
ContentValues values = new ContentValues();
values.put("name", "itcast");
values.put("age", 25);
resolver.insert(uri, values);
//获取person表中所有记录
Cursor cursor = resolver.query(uri, null, null, null, "personid desc");
while(cursor.moveToNext()){
Log.i("ContentTest", "personid="+ cursor.getInt(0)+ ",name="+ cursor.getString(1));
}
//把id为1的记录的name字段值更改新为liming
ContentValues updateValues = new ContentValues();
updateValues.put("name", "liming");
Uri updateIdUri = ContentUris.withAppendedId(uri, 2);
resolver.update(updateIdUri, updateValues, null, null);
//删除id为2的记录
Uri deleteIdUri = ContentUris.withAppendedId(uri, 2);
resolver.delete(deleteIdUri, null, null);
[2] presentModalViewController 的卡通效果
来源: 互联网 发布时间: 2014-02-18
presentModalViewController 的动画效果
共有以下四种动画效果:
自定义:
系统自带(四种效果):
presentModalViewController模态的动画效果设置:
UIViewController *detailViewController = [[UIViewController alloc] init]; detailViewController.modalTransitionStyle = UIModalTransitionStylePartialCurl; // 设置动画效果 [self presentModalViewController:detailViewController animated:YES]; [detailViewController release];
共有以下四种动画效果:
typedef enum { UIModalTransitionStyleCoverVertical = 0, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2 UIModalTransitionStylePartialCurl, #endif } UIModalTransitionStyle;
自定义:
CATransition *animation = [CATransition animation]; [animation setDuration:0.5]; [animation setType:kCATransitionPush]; [animation setSubtype:kCATransitionFromRight]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [[myViewController.view layer] addAnimation:animation forKey:@"SwitchToView"]; [self presentModalViewController:myViewController animated:NO];
[3] 6410 Eboot 平添键盘控制
来源: 互联网 发布时间: 2014-02-18
6410 Eboot 添加键盘控制
Key.c的实现如下:
升级的时候,需要搞个提示,加个键盘控制神马的。
所以,咱得把这个键盘加到Eboot里面。
由于Eboot里面使用不了这个中断,所以只能使用扫描按键的方式。
按键接的是:
行:GPK8~GPK13
列:GPL0~GPL4(这里只需要使用到一列就够了,就使用GPL0吧,这样就有6个按键了)
参照键盘驱动KeyPad,这里把其简化,分成初始化和循环扫描处理,按键识别三部分。
使用的时候,咱先初始化一下键盘:
调用
ret = InitKey();
初始化成功后,在循环里面调用
KScan_Proc();
去检测按键按下,接着再通过
keyValue = GetKeyDown();
去获取按下的按键,然后做识别处理。
6个按键,根据行列扫描后的键值,定义如下:(Key.h)
#define KEY_ENTER (0x1) #define KEY_SCAN (0x2) #define KEY_CANCEL (0x4) #define KEY_DELETE (0x8) #define KEY_BACKSPACE (0x10) #define KEY_UP (0x20)
Key.c的实现如下:
// *** you add *** // for 6410 key. // use row0 & col0~col5 #include "Key.h" #include <windows.h> #include "Winbase.h" #include <oal.h> #include <s3c6410.h> //#ifdef _KEY_H_ //#define _KEY_H_ // define #define SIZE_COLS 1 #define KEYIF_Row_Read (pKeyPadReg->KEYIFROW) // KEYIFCON #define FC_EN_DIS (0<<3) #define FC_EN_EN (1<<3) #define DF_EN_DIS (0<<2) #define DF_EN_EN (1<<2) #define INT_R_ENABLE (0<<1) #define INT_R_DISABLE (1<<1) #define INT_F_ENABLE (0<<0) #define INT_F_DISABLE (1<<0) // KEYIFFC #define FC_DIV_VAL(n) (((n)&0x3ff)<<0) #define KEY_POWER_ON (1<<11) // PCLKCON #ifndef FIN #define FIN 12000000 #endif #define FT_CLK_DIV (FIN/32000 - 1) // KEYIFSTSCLR #define CLEAR_P_INT (0xFF<<0) #define CLEAR_R_INT (0xFF<<8) // global variable volatile S3C6410_GPIO_REG *pGPIOReg2 = NULL; volatile S3C6410_KEYPAD_REG *pKeyPadReg = NULL; volatile S3C6410_SYSCON_REG *pSysConReg = NULL; DWORD KeyState[SIZE_COLS]; // function BOOL InitKey(); void KScan_Proc(); DWORD GetKeyDown(); void ClearKey(); BOOL InitKey() { // GPIO Virtual alloc pGPIOReg2 = (S3C6410_GPIO_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_GPIO, FALSE); if(pGPIOReg2 == NULL) return FALSE; // Keypad Virtual alloc pKeyPadReg = (S3C6410_KEYPAD_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_KEYPAD, FALSE); if(pKeyPadReg == NULL) return FALSE; // Syscon Virtual alloc pSysConReg = (S3C6410_SYSCON_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_SYSCON, FALSE); if(pSysConReg == NULL) return FALSE; // enable the Keypad Clock (PCLK) pSysConReg->PCLK_GATE |= KEY_POWER_ON; pKeyPadReg->KEYIFCON = INT_F_DISABLE|INT_R_DISABLE|DF_EN_EN|FC_EN_DIS; //Keypad interfae debouncing filter clock division register pKeyPadReg->KEYIFFC = FC_DIV_VAL(FT_CLK_DIV); pKeyPadReg->KEYIFCOL = (0x00<<8); // select all column - Set Keypad column GPIO to output(low) //pGPIOReg2->GPLCON0=(pGPIOReg2->GPLCON0 & ~(0xfffff<<0)) | (0x33333<<0); //KBC_0(GPL0)~ KBC_4(GPL4) pGPIOReg2->GPLCON0=(pGPIOReg2->GPLCON0 & ~(0xf<<0)) | (0x3<<0); //KBC_0(GPL0) pKeyPadReg->KEYIFCOL = (0x0 & 0xff); // configure - Set Keypad row GPIO to [Key PAD ROW] pGPIOReg2->GPKCON1=(pGPIOReg2->GPKCON1 & ~(0xffffff<<0)) | (0x333333<<0); //KBR_0(GPK8)~ KBR_5(GPK13) // unmask the key interrupt pKeyPadReg->KEYIFSTSCLR = CLEAR_P_INT|CLEAR_R_INT; // Clear Pressed/Released Interrupt return TRUE; } void KScan_Proc() { int i=0; volatile int m=0; // Read the Matrix // KBC_0 ~ KBC_7 for(i = 0 ; i < SIZE_COLS; i++){ pKeyPadReg->KEYIFCOL = (0x0 & 0xff); // select a column pKeyPadReg->KEYIFCOL = pKeyPadReg->KEYIFCOL | (0xff & ~(0x1 << i)); for(m=0; m<2000; m++); KeyState[i] = (~KEYIF_Row_Read) & 0xff; for(m=0; m<2000; m++); } pKeyPadReg->KEYIFCOL = (0x0 & 0xff); } DWORD GetKeyDown() { DWORD key = 0x0; int i=0; for(i = 0 ; i < SIZE_COLS; i++){ if(KeyState[i] & KEY_ENTER) key |= KEY_ENTER; if(KeyState[i] & KEY_SCAN) key |= KEY_SCAN; if(KeyState[i] & KEY_CANCEL) key |= KEY_CANCEL; if(KeyState[i] & KEY_DELETE) key |= KEY_DELETE; if(KeyState[i] & KEY_BACKSPACE) key |= KEY_BACKSPACE; if(KeyState[i] & KEY_UP) key |= KEY_UP; } return key; } void ClearKey() { memset(KeyState, 0, sizeof(KeyState)/sizeof(DWORD)); } //#endif
特此记录一下。
仅供参考,请勿模仿~~
若存在错误,请大家指出
最新技术文章: