当前位置:  编程技术>移动开发
本页文章导读:
    ▪xcode真机调试(无证件)        xcode真机调试(无证书)第一步:制作证书 1)打开   Finder->应用程序->实用工具 ->  钥匙串访问  2)单击:"钥匙串访问"选择  "证书" 再选择"创建证书"过程如下图:   注意:证书.........
    ▪ 忘记阅读,现在你可以听热门网站上的文章了        忘掉阅读,现在你可以听热门网站上的文章了 首先用户可以注册一个帐户来创建播放列表,并管理最喜欢的文章,当然,即使没注册,也能完整使用该应用程序。注册账户的方式可以是通过.........
    ▪ 【小弟我的应用系列】(三)动画的使用之Tween动画       【我的应用系列】(三)动画的使用之Tween动画【前言】对于一款应用而言,除了程序健壮之外,就是用户体验要好了。用户体验是更为直观的展现和吸引用户的手段,一方面是要符合用户的.........

[1]xcode真机调试(无证件)
    来源: 互联网  发布时间: 2014-02-18
xcode真机调试(无证书)
第一步:制作证书 1)打开   Finder->应用程序->实用工具 ->  钥匙串访问 
2)单击:"钥匙串访问"选择  "证书" 再选择"创建证书"过程如下图:
 
注意:证书名称必须填写为 iPhone Developer
 

 










 
第二步:修改XCode配置文件 注:如遇到文件无法解锁没有权限不能修改,可以复制一份出来,修改好之后将原来的替换掉
1)修改SDKsettings.plist文件 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
打开该目录下的SDKSettings.plist文件,把CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED的值改成NO
 
2)修改Info.plist文件 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/
用XCode打开该目录下的Info.plist文件,右击--Add Row,增加两项:
PROVISIONING_PROFILE_ALLOWED 值为 NO
PROVISIONING_PROFILE_REQUIRED 值为 NO
 
3)将上面Info.plist文件中的 "XCiPhoneOSCodeSignContext" 替换成 "XCCodeSignContext"(共3处) 如果不进行此步,编译Device Release版本时會报错:
1. Code Sign error: a valid provisioning profile matching the application’s Identifier ‘com.yourcompany.xxxx’ could not be found 
 
 
第三步:设置gen_entitlements.py脚本权限 注:如果你的电脑联网了,那么执行1)的命令后会在相应的目录自动创建iphoneentitlements文件夹及其下的gen_entitlements.py文件,如执行后没有生成指定文件,请重复执行下面的命令或者换第二种方法,两种生成脚本文件的方法任选一种。
1)在终端执行如下命令:


mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements


cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements


curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt


mv gen_entitlements.txt gen_entitlements.py
sudo chmod 777 gen_entitlements.py


2)上面的命令执行成功之后,会在/Applications/Xcode.app/Contents/Developer/目录下生成一个iphoneentitlements文件夹和其下的gen_entitlements.py文件,如果你的电脑没有联网或者不能自动生成相关目录文件,那么需要手动在相应的目录创建指定的文件,随后需要给gen_entitlements.py设置权限。
gen_entitlements.py脚本文件的内容如下:


#!/usr/bin/env python


import sys
import struct


if len(sys.argv) != 3:
print "Usage: %s appname dest_file.xcent" % sys.argv[0]
sys.exit(-1)


APPNAME = sys.argv[1]
DEST = sys.argv[2]


if not DEST.endswith('.xml') and not DEST.endswith('.xcent'):
print "Dest must be .xml (for ldid) or .xcent (for codesign)"
sys.exit(-1)


entitlements = """
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>%s</string>
    <key>get-task-allow</key>
    <true/>
</dict>
</plist>
""" % APPNAME


f = open(DEST,'w')
if DEST.endswith('.xcent'):
f.write("\xfa\xde\x71\x71")
f.write(struct.pack('>L', len(entitlements) + 8))
f.write(entitlements)
f.close()


在终端给gen_entitlements.py设置权限(可能会要你输入密码)
sudo chmod 777 /Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py
 
第四步:修改项目属性 1)点击项目图标,找到"Build Settings"选项下的"Code Sign Identity",将其值全部改为"Don't Code Sign"

 


  
2)切换到Build Phases选项,点击右下角的Add Build Phase,然后单击Add Run Script,然后在Run Script中输入以下脚本:


export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then
/Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi

 



第五步:连接设备(iphone/ipad) 点XCode右上角的Organizer图标,然后选中你的设备,在右边窗口中点击“Use for Development” 即可,此时你的设备名称旁边应该显示黄色的小灯,重新拔插数据线,Organizer中会出现一个进度条,等这个进度条跑完,小灯就会变成绿色,开发模式已经启用。

 



 
 
测试真机调试:
创建一个Page-based Application工程,修改Build Settings和Build Phases下面的相关配置(参考第四步)
1)选择你的设备
 
 
2)随便拖一个button,然后点击运行(Run)
 
 
3)iphone运行效果截图
  








    
[2] 忘记阅读,现在你可以听热门网站上的文章了
    来源: 互联网  发布时间: 2014-02-18
忘掉阅读,现在你可以听热门网站上的文章了

如果你在寻找一种新途径,在乘坐交通工具上下班、晨跑或是健身的同时也能找点乐子的话,iOS或安卓用

户不妨试试这个新的免费应用:Umano。Umano背后的理念简单之极,然而令人惊讶的是在此之前居然无人能想到。Umano拥有专业的配音团队,专门录读来自各类热门网站或网络杂志上的文章。这一将播客和有声读物元素加入到高速发展的博客和在线文章中去的方式,极具意义

首先用户可以注册一个帐户来创建播放列表,并管理最喜欢的文章,当然,即使没注册,也能完整使用该应用程序。注册账户的方式可以是通过登陆Facebook授权使用账户,或者用邮箱新注册一个。创建播放列表的真正优势在于可以离线播放,特别适用于在上下班或健身锻炼的时候收听新闻等。

注册账户后(可直接跳过),用户可以根据文章的受欢迎程度或主题内容来浏览。菜单的第一部分包含最受欢迎文章、播放列表以及收藏文章(或标书签的文章)三个部分,第二部分设有6个主题(或兴趣方向):娱乐,不可不知,极客,商业,创意,科学。用户可以从浏览最受欢迎文章开始,最受欢迎排行榜包含来自《福布斯》、《每日科学》、Flavorwire网站、Lifehacker网站以及《纽约客》等其他知名网站上的文章。

点击想听的文章随即开始播放,每篇文章都附有原文链接,可通过自带浏览器查看。同时附有文章出处(换句话说,附有原文网站),这样能够让读者从源网站上轻松阅读更多文章。另外,用户可以轻松把Umano上的文章一键共享至Twitter,Facebook,Google+上,也可通过电子邮件分享。用户也可通过点击文章旁的“喜欢”图标来收藏该文章。

双击所朗读的文章即可添加该文章至播放列表,此时文章具有离线收听功能。首次访问添加了文章的播放列表时,可选择自动下载音频供离线收听,或关闭自动下载功能,用户可根据需要在应用程序的设置中对此项进行更改,同时可设定仅在WiFi连接状态下下载音频。

该应用的设置中还包括自动播放网站上的下一篇文章,接受每日提醒信息以及自动分享“喜欢”文章或正在收听的文章至Facebook好友等设置选项。

该应用程序最为重要的特点即能够收听文章,因其采用真人朗读而不是靠机器发声,与收听播客的方式无异。如此,无论读者兴趣何在,都可以像享受有声读物那样收听喜爱的在线资源。此外,用户在欣赏Umano上朗读的文章同时,无需担心非得在智能手机屏上四处寻找文章的来源网站或杂志名称,因为每篇文章的首段介绍中,都包含了来源信息,这一做法尤其值得称赞。

Umano上的文章来源相对固定,一般都来自最热门的网站或杂志。用户也可利用Umano这一特征来搜索文章和信息。目前尚不完全清楚每一站点中的文章是通过何标准选择至Umano的。

当然,Umano的用户体验中依旧存在微小瑕疵。但应用本身设计得流畅直观,更重要的是听觉体验令人愉悦。在这一点上,很难想象在没有使用Umano的日子里,上下班的时间是有多难熬。

你觉得Umano如何?在评论中告诉我们吧。

 

原文:Nancy Messieh    编译:伯乐在线 – 肖翔

【非特殊说明,转载必须在正文中标注并保留原文链接、译文链接和译者等信息,谢谢合作!】



    
[3] 【小弟我的应用系列】(三)动画的使用之Tween动画
    来源: 互联网  发布时间: 2014-02-18
【我的应用系列】(三)动画的使用之Tween动画

【前言】对于一款应用而言,除了程序健壮之外,就是用户体验要好了。用户体验是更为直观的展现和吸引用户的手段,一方面是要符合用户的操作习惯,另外就是要有让人愉悦的界面。纵观市面上的应用,无不是在这几方面下功夫。使用动画是让应用变得更绚丽的重要手段,当然,是适度合理的使用动画。从早前的Android版本开始,系统就提供了两种动画,补间动画(Tween)和帧动画(Frame),Android3.0后又提供了属性动画(Property)。结合canvas和camera的使用,我们就可以实现各种各样的动画效果了(甚至伪3D效果)。

先说说补间动画,补间动画和帧动画都是应用于View及其子类(widget)的动画,其原理是在View绘制过程中应用各种变化效果(平移/缩放/旋转/渐变),View本身在播放动画过程中和结束后其属性并没有改变,你可以理解为“障眼法”,至于更为详细的动画播放原理,大家可以多了解了解源码中View的绘制机制,这里不解释了。

补间动画有两种实现方法,硬编码和读取XML文件。

硬编码就是在编码中使用Anamation抽象类的几个具体实现类TranslateAnimation,RotateAnimation,AlphaAnimation,ScaleAnimation。从类名就可以看出,这几个实现类分别对应了补间动画的4个效果,当然,更多时候我们需要结合这几种动同时播放的时候,就要用到AnimationSet这个类。

因为这几种都是继承于Animation这个基类,所以我们先了解下Animation的几个重要属性:

1.duration 动画持续时间,由于补间动画本质上来说是一种变化效果,所以持续时间就是这种变化效果的时间,在编码中,我们通过setDuration()来设置;

2.interpolator 动画速率变换器 结合这个变换器动画可以做出各种不同的效果,比如先快后慢(默认)的播放,匀速播放,以及更为复杂的反弹播放等;

@android:anim/accelerate_interpolator: 越来越快
@android:anim/decelerate_interpolator:越来越慢
@android:anim/accelerate_decelerate_interpolator:先快后慢
@android:anim/anticipate_interpolator: 先后退一小步然后向前加速
@android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点
@android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点
@android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点
@android:anim/linear_interpolator:均匀速度。

3.stratOffset 播放时间偏移 这个属性在几个动画联合播放的时候更多用到,主要是播放的时间先后顺序。

而start,cancel方法则是对外的接口。

而作为实现类,TranslateAnimation等除了以上的几个基本参数外,还有各种播放动画需要的参数,比如平移动画的起始位置和结束位置,缩放动画的X,Y轴缩放位置等这些都是通过实现类的构造注入的;比如

RotateAnimation (float fromDegrees, float toDegrees)

TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

AlphaAnimation(float fromAlpha, float toAlpha)

ScaleAnimation (float fromX, float toX, float fromY, float toY)

在设置了这些动画的属性后,我们就可以应用于View上来播放动画效果了;看代码


img = (ImageView) findViewById(R.id.img);  
Animation translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 100,  
                Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 100);  
        translate.setDuration(2000);      
        img.startAnimation(translate);

上面是平移动画的一个简单实现,有几个地方值得注意,首先我们说过补间动画是应用于View的,所以设置动画和播放动画的都是由View来完成的,其次构造函数的几个动画参数中,除了平移的初始坐标以及完成坐标外,还有几个参数是相对位置的类型(分为绝对位置类型,相对于自己位置和相对于父控件位置),如果不设置这几个类型的话,都是默认为相对于自己位置的。最后就是要设置动画的持续时间。

说道动画的位置我们有一点要明白,Android的原始锚点是在屏幕的左上角(即X,Y轴的0,0点),往下Y正,往右X正,反之亦然。所以在表示起始位置和结束位置的时候,我们除了可以用绝对的位置坐标之外,还可以用诸如100%,0%p,-100%p来表示:



再看看渐变动画,渐变动画只有起始alpha值和结束alpha值两个参数,0代表完全透明,1则是完全不透明。

img = (ImageView) findViewById(R.id.img);

animation = new AlphaAnimation(0, 1) ;

animation.setDuration(2000);

img.startAnimation(animation);


下面是缩放动画,缩放动画的参数里面,起始大小1代表本身View的大小,0代表不可见,2即代表了2倍于原始的大小


img = (ImageView) findViewById(R.id.img);

animation = new ScaleAnimation(1, 2, 1, 2, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0);

animation.setDuration(3000);

img.startAnimation(animation);


最后是旋转动画


img = (ImageView) findViewById(R.id.img);

animation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 1.0f);

animation.setDuration(3000);

img.startAnimation(animation);


应用这四种动画并不难,重要的是理解每个参数的意义,特别注意一下伸缩模式和伸缩值的实际作用。

说完了硬编码方式实现补间动画,另外一种实现方式就是读取XML文件实现动画了,这个在平时项目中也用的较为频繁,我们在XML文件里定义好动画的属性和顺序,然后在编码中读取播放之。


<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate

android:fromXDelta="0"

android:toXDelta="50"

android:fromYDelta="0"

android:toYDelta="100"

android:duration="2000"

android:interpolator="@android:anim/accelerate_interpolator"/>

<rotate

android:fromDegrees="0"

android:toDegrees="90"

android:duration="2000"

android:startOffset="2000"/>

</set>


如上图所示,在XML文件里设置好一个动画集合,集合里可以包括我们上面提到的4种动画的任意一种或多种。

animation = AnimationUtils.loadAnimation(this, R.anim.myanim);

img.startAnimation(animation);


说道AnimationSet,我再补充一下硬编码中播放动画集合的实现,通过AnamationSet可以组合多种动画效果,达到和上面XML读取动画集合的效果:

AnimationSet set = new AnimationSet(false); // 设置平移动画的起始位置和结束位置

TranslateAnimation trans = new TranslateAnimation(0, 100, 0, 100); // 设置平移动画的持续时间

trans.setDuration(2000); // 将平移动画加入到集合

set.addAnimation(trans); // 设置旋转动画的起始角度和结束角度

RotateAnimation rotate = new RotateAnimation(0, 90); // 设置旋转动画的持续时间

rotate.setDuration(2000); // 设置旋转动画的播放延迟(设置成2000表示旋转动画在前面的平移动画结束后才开始播放)

rotate.setStartOffset(2000); // 把旋转动画加入集合

set.addAnimation(rotate); // 播放动画

img.startAnimation(set);



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪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