cocos调android原生支付,Cocos2dx:在安卓平台使用原生输入框

《cocos2d Android 平台EditBox 2.x升级到3.12 输入框使用 原生控件 可以复制 粘贴》

http://blog.csdn.net/Phan_Chen/article/details/53141990

最终解决方案:

更改windowSoftInputMode为adjustNothing:

将Cocos2dxActivity.java中的下面一句代码注释掉:

window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

在AndroidMainfest.xml文件中加入:

android:windowSoftInputMode="adjustNothing|stateHidden"

在cocos2dx中自己计算并更新输入框的位置:具体为在键盘弹出前,先将editBox移动到键盘的最终位置的上方;这个方案居然能解决光标的问题,也是醉了。

editBox->setPosition() ;

待优化接口:

1键盘高度,2键盘弹出和隐藏回调。

没有达到预期效果的解决方案:

为布局文件的最顶层加上一个ScrollView布局。

移植到Cocos2dX 。

键盘需要设置为adjustResize。

android:windowSoftInputMode="adjustResize|stateHidden"

主题不能全屏

android:theme="@android:style/Theme.NoTitleBar" >

Android原生输入框:

Cocos2dX实现了2个输入框,UIEditBox 和 UITextField.

其中3.7.1版本以后的cocos2dx支持直接调用Android原生输入框,比较好的进行复制,粘贴等操作。

目前Cocos2dx只能下载最早的V3.7.1版本,可能更早的也支持原生输入框。

UITextField是用来替代TextFieldTTF的?

修正:

原生输入框Cocos2dx很早就支持,而支持换行的Android原生输入框,

是从Cocos2dx V3.8的UIEditBox开始的。

IME:是指Input method editor , 即输入法编辑器。

UIEditBox

游戏>主城>更多>好友>搜索:

FriendSearchView -> m_searchBox ;

FriendAddPage -> m_searchBox ;

游戏>主城>头像>编辑>更换名字:

ChangeNickNameView.m_editBox;

GenCode_ChangeNickName.m_editBox;

ChatView.m_editNode.Add(m_editBox) ;

接口定义:

插入QQ表情:InsertOneChar() ;

键盘显示和隐藏时更新相应位置:UpdatePosition() ;

待解决问题:

支持多行输入

Cocos2dxEditBox.java

this.setSingleLine(false) ;

this.setHorizontallyScrolling(false) ;

输入时是多行,点击确认后变成单行

Cocos2dxEditBox.java

文本的跨行选中和复制粘贴有问题

(这个Bug已经有人提在了谷歌的issuetracker:

https://issuetracker.google.com/issues/36987452)

1833379b6268?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

EditText Cursor Bug.png

具体表现为,无法跨行选中,无法跨行复制粘贴;就是光标只能在同一行移动,起初怀疑是Cocos2dxEditBox中的onSelectionChanged相关函数不小心屏蔽了Android的某些触摸事件。

Cocos2dxEditBox.java

onSelectionChanged();

后来经过Debug查找得知,

在原生的Android应用中,这种情况也存在。而且,这种情况只会会在输入框的起始位置低于键盘弹出后的位置时才发生。如果键盘弹出后位置在之前输入框之下,则不会发生这种情况。

也就是说,这里不是Cocos2dx的bug,而是Android的Bug。

这里暂时搁置,如果需要,查下Android源码。

而且有个细节,无法跨行选中,并非绝对:

手指拖动光标一直向上滑动,大概经过半屏的距离后光标可以向上移动一行。

所以,如果要定位Android的这个bug,可以作为查找细节。

这种情况目前只在红米3S上出现,不知道是不是MIUI做了定制。尴尬呀真的是。

Cocos2d-x只支持上方对齐。需要添加对齐方式设置接口。

SetVerticalAlignment() ;

获取文本的实际大小。

随着文本的增加,要不断改变mEditText->setContentSize() 的大小。

所以需要知道当前文本的实际大小。

TextPaint textPaint = editText.getPaint() ;

//float textWidth = textPaint.measureText(editText.getText().toString()) ;

StaticLayout sl = new StaticLayout() ;

光标跨行选择的问题:

实现思路:修改Android系统的Bug。

修改方式:定义一个子类来重写Override相应的函数。(继承)

1)点击和滑动使用的不是同样的位置算法。

HandleView.onTouchEvent()

{

case MotionEvent.ACTION_MOVE:

{

}

}

//TextView.java

void onDragEvent()

{

case DragEvent.ACTION_DRAG_LOCATION:

final int offset = getOffsetForPosition(event.getX(), event.getY());

Selection.setSelection((Spannable)mText, offset);

return true;

}

TextView.SelectionStartHandleView

OnSpanChganged();

Cocos2dx部分升级:EditBox升级为3.12

UIEditBox目录替换成3.12的目录

platform/android目录下的相关文件替换成3.12的文件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值