当前位置:  编程技术>移动开发
本页文章导读:
    ▪施用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 添加键盘控制

升级的时候,需要搞个提示,加个键盘控制神马的。

所以,咱得把这个键盘加到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


特此记录一下。

仅供参考,请勿模仿~~

若存在错误,请大家指出



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
技术文章 iis7站长之家
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3