Archive for 十月 2012

PHP 计算md5,返回byte数组(移植Java MessageDigest.diges方法)

Java中的MessageDigest.diges方法可以传入一个byte数组计算摘要,返回一个byte数组,但php中没有相应的方法,md5只能传入一个字符串参数,且默认返回的计算完的string,但md5方法可传入一个bool参数,返回原始的16位2进制数据。


$raw_md5=unpack("c*", md5($orign,true));

unpack方法用指定的格式解包返回数组,这里返回的就是byte数组。

iOS开发 使用NSUserDefaults 保存数据

NSUserDefaults类似android中的SharedPreferences,可以把数据持久化到设备中。 Continue reading “iOS开发 使用NSUserDefaults 保存数据” »

Android开发 自定义RadioGroup RadioButton

RadioButton是单选按钮,N个RadioButton从属于一个RadioGroup,一个RadioGroup中,只有一个RadioButton是可以被选中的。
Gallery里,可以用RadioGroup指示当前播放的是第几张,效果如下图: Continue reading “Android开发 自定义RadioGroup RadioButton” »

Android自定义控件 使用自定义属性

说明:下面的例子使用了AndroidAnnotation,并非标准的开发模式,但是几行重要代码都是相同的。
这个例子是一个按钮,外层是LinearLayout,垂直布局,里面是一个ImageView,一个TextView,需要添加自定义的属性,以支持在Xml中写入ImageView的图片和TextView的文字。 Continue reading “Android自定义控件 使用自定义属性” »

iOS开发 两个场景间传递数据

原理:UIViewController中的- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法,会在场景切换前被调用,在该方法中设置指定的属性作为传递到下一个场景的参数,在下一场景中,通过presentingViewController属性,可以得到切换到该场景的前一个场景的实例,然后再读取前面设置的属性,实现数据的传送。
假设ViewController传送到SecondViewController: Continue reading “iOS开发 两个场景间传递数据” »

iOS开发 跳转场景的三种方式

假设A跳转到B,三种方法:
1.按住ctrl键,拖动A上的控件(比如说UIButton)到B上,弹出菜单,选择Modal.不需要写任何代码,在A上点击Button就会跳转到B
2. 按住ctrl键,拖动A上的View Controller到B上,弹出菜单,选择Modal,两个场景间自动添加连接线和图标,选中该图标,打开Storyboard Segue,identifier输入一个标识符,这里以"aaaa"为例.A里需要跳转时,执行下面的代码:


 [self performSegueWithIdentifier:@"aaaa" sender:self];

3.完全用代码来实现,代码如下:


    //先获取UIStoryBoard对象,参数为文件名
    UIStoryboard *mainStoryBoard=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    //获取SecondViewController实例,参数是StoryBoard ID,选中View Controller,在Identity Inspector中
    SecondViewController *second=[mainStoryBoard instantiateViewControllerWithIdentifier:@"second"];
    //设置过渡的样式,和显示的样式
    second.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
    second.modalPresentationStyle=UIModalPresentationFormSheet;
    //显示
    [self presentViewController:second animated:YES completion:nil];

iOS开发 使用System Sound Services播放音频文件

System Sound Services只能播放不越过30秒的声音,且支持格式只有wav,没有提供操纵声音和控制音量的功能,一般只用于播放通知。


    SystemSoundID soundId;
    //后面将使用soundId引用音频文件
    NSString *soundFile=[[NSBundle mainBundle] pathForResource:@"aaa" ofType:@"wav"];
    //通过NSBundle的 mainBundle方法返回一个NSBundle对象,该对象对应当前应用程序可执行二进制文件所属目录。pathForResource方法获取aaa.wav的真实路径。
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundFile], &soundId);
    //创建soundFile的SystemSoundID,(__bridge CFURLRef)是强制转换成CFURLRef对象,因为此处要将一个c语言的结构转换为Objective-c对象,所以必须加上__bridge
    AudioServicesPlaySystemSound(soundId);
    //播放音频 System Sound Services不能播放越过30秒的声音,且只支持wav

Objective-c中判断某对象是否为某个类的实例

Objective-c中判断某对象是否为某个类的实例


- (IBAction)changeSpeed:(id)sender {
    //判断sender是不是UISlider
    if ([sender isMemberOfClass:[UISlider class]]) {
        speedStepper.value=speedSlider.value;
    }else{
        speedSlider.value=speedStepper.value;
        
    }
    speed.text=[NSString stringWithFormat:@"%f",speedSlider.value ];
}