当前位置:  编程技术>移动开发
本页文章导读:
    ▪兑现CCLayer只显示一个矩形可见区域        实现CCLayer只显示一个矩形可见区域CCLayer的区域可能会比较大,怎样让它只显示其中一部分区域呢?  这个还是有很多场景会用到的,例如游戏的帮助, 可能包括几页的文本和图片,它会在.........
    ▪ 障蔽EditText长按导致的弹出输入法的对话框        屏蔽EditText长按导致的弹出输入法的对话框 做了个能手动拖动的EditText,但有个问题导致的体验很不好,就是手放上去开始拖,拖到一段距离后弹出个输入法的对话框,这根本不是我想要的.........
    ▪ 记要小米设备事件获取       记录小米设备事件获取Android 系统里面有很多小工具,运行这些工具,我们可以掌握很多数据,再顺藤摸瓜,就可以针对设备做特殊的操作。 记录获取我手机的event信息,我的手机是小米版:.........

[1]兑现CCLayer只显示一个矩形可见区域
    来源: 互联网  发布时间: 2014-02-18
实现CCLayer只显示一个矩形可见区域

CCLayer的区域可能会比较大,怎样让它只显示其中一部分区域呢?  这个还是有很多场景会用到的,例如游戏的帮助, 可能包括几页的文本和图片,它会在一个矩形区域内显示,用户通过拖动页面,一行行的往下看。


试过后发现setContentSize不行,绘制的还是所有的Layer内容,虽然基类的m_obContentSize变了,但是绘制区域没有变。


不饶弯子了,需要使用CCEGLView的函数setScissorInPoints,它会调用OpenGL的glScissor。


爽快点,直接贴代码了:

void RichTextLayer::visit()
{
    glEnable(GL_SCISSOR_TEST);

    CCPoint point = convertToWorldSpace(CCPointZero);
    CCDirector::sharedDirector()->getOpenGLView()->setScissorInPoints(point.x, point.y, 400, 400);

    CCNode::visit();
    glDisable(GL_SCISSOR_TEST);
}

这个例子将显示RichTextLayer的左下角(0,0)到(400, 400)的矩形区域。


记住了convertToWorldSpace(CCPointZero)这个是必须的,我就是因为这个折腾了半天。因为glScissor的坐标是OpenGL的坐标,或者说是世界坐标,而不是该Node的本地坐标,所以必须转换成世界坐标后使用。


    
[2] 障蔽EditText长按导致的弹出输入法的对话框
    来源: 互联网  发布时间: 2014-02-18
屏蔽EditText长按导致的弹出输入法的对话框


做了个能手动拖动的EditText,但有个问题导致的体验很不好,就是手放上去开始拖,拖到一段距离后弹出个输入法的对话框,这根本不是我想要的效果,于是就想屏蔽它,结果在网上找到一句代码,放上去 顿时解决问题,先贴出来给大家一起分享。文章不在大,不在深,关键是能解决有需要的人的困惑就行


edittext.setLongClickable(false);


    
[3] 记要小米设备事件获取
    来源: 互联网  发布时间: 2014-02-18
记录小米设备事件获取

Android 系统里面有很多小工具,运行这些工具,我们可以掌握很多数据,再顺藤摸瓜,就可以针对设备做特殊的操作。


记录获取我手机的event信息,我的手机是小米版:

F:\eclipse\android_sdk-64\adt-bundle-windows-x86_64-20130219\sdk\platform-tools
adb shell
shell@android:/ $ cat /proc/bus/input/devices
cat /proc/bus/input/devices
I: Bus=0018 Vendor=0001 Product=0001 Version=0001
N: Name="mione-keypad"			---->特殊键 
P: Phys=mione-keypad/input0
S: Sysfs=/devices/platform/msm_ssbi.0/pm8058-core/pm8xxx-keypad/input/input0
U: Uniq=
H: Handlers=event0
B: PROP=0
B: EV=13
B: KEY=40000000 0 0 0 0 0 0 10000 0 0 0 0 0 0 0 0 0 0 0 0 c0000 0 0 0
B: MSC=10


I: Bus=0018 Vendor=4654 Product=5000 Version=0100
N: Name="ft5x0x"			----> 触摸屏
P: Phys=/devices/i2c-3/3-0038/input/input1
S: Sysfs=/devices/i2c-3/3-0038/input/input1
U: Uniq=
H: Handlers=event1
B: PROP=0
B: EV=9
B: ABS=6640000 0


I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="pmic8xxx_pwrkey"			---->按键
P: Phys=pmic8xxx_pwrkey/input0
S: Sysfs=/devices/platform/msm_ssbi.0/pm8058-core/pm8xxx-pwrkey/input/input2
U: Uniq=
H: Handlers=event2
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0


I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="lightsensor"			---->光感应器
P: Phys=/devices/virtual/input/input3
S: Sysfs=/devices/virtual/input/input3
U: Uniq=
H: Handlers=event3
B: PROP=0
B: EV=9
B: ABS=100 0


I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="proximity"			---->近距离感应器(脸颊感应)
P: Phys=/devices/virtual/input/input4
S: Sysfs=/devices/virtual/input/input4
U: Uniq=
H: Handlers=event4
B: PROP=0
B: EV=9
B: ABS=100 2000000


I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="accelerometer"			---->加速度计
P: Phys=/devices/virtual/input/input5
S: Sysfs=/devices/virtual/input/input5
U: Uniq=
H: Handlers=event5
B: PROP=0
B: EV=9
B: ABS=7


I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="compass"			---->定位仪
P: Phys=/devices/virtual/input/input6
S: Sysfs=/devices/virtual/input/input6
U: Uniq=
H: Handlers=event6
B: PROP=0
B: EV=9
B: ABS=7


I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="8660_handset"			---->线控按键
P: Phys=pmic8058_othc/input0
S: Sysfs=/devices/platform/msm_ssbi.0/pm8058-core/pm8058-othc.1/input/input7
U: Uniq=
H: Handlers=event7
B: PROP=0
B: EV=23
B: KEY=10000 110 0 0 0 0 0
B: SW=4

然后我们用getevent了解设备运作,getevent用来监听Handler 指定设备事件,如:
> adb shell getevent /dev/input/event1   (event1为屏幕事件)

接着点击一下手机屏幕,会看到类似以下内容:

[type] [code] [value]
0003 0039 00000000   --》开始   (57)
0003 0035 0000015d   --》x轴0x15d的位置 (53)
0003 0036 0000011d   --》y轴0x11d的位置  (54)
0003 003a 00000010   --》ABS_MT_PRESSURE  (58)
0003 0032 00000010   --》ABS_MT_WIDTH_MAJOR  (50)	 
0000 0002 00000000   --》SYN                 (2)
0000 0000 00000000
0003 0039 00000000   --》开始
0003 0035 0000015d   --》x轴0x15d的位置
0003 0036 0000011d   --》y轴0x11d的位置
0003 003a 00000001   --》ABS_MT_PRESSURE 
0003 0032 00000001   --》ABS_MT_WIDTH_MAJOR
0000 0002 00000000   --》SYN
0000 0000 00000000
0000 0002 00000000
0000 0000 00000000


参见 /frameworks/base/include/ui/EventHub.h 可知code意义
#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device (finger, pen, ...) */
#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */

一次快速单击app图标触屏的监听:

getevent /dev/input/event1

0003 0039 00000037     初始化事件id
0003 0039 00000000     初始化事件结束
0003 0035 000000ae     坐标x
0003 0036 000001ca     坐标y
0003 003a 00000010	
0003 0032 00000010
0000 0000 00000000     压下结束
0003 003a 00000020
0003 0032 00000020
0000 0000 00000000     移动结束
0003 0039 ffffffff     事件id清空
0000 0000 00000000     一个事件的结束


    
最新技术文章:
▪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