手机部分为什么ipad触屏不灵灵怎么玩横屏游戏

ma_haile 的BLOG
用户名:ma_haile
文章数:38
评论数:24
访问量:513104
注册日期:
阅读量:24883
阅读量:249456
阅读量:990688
阅读量:145450
[匿名]51cto游客:
51CTO推荐博文
&在上一章我 我们没有把标题栏和状态栏给去掉 &, &如果在游戏中 是不会显示 显示标题栏和状态栏的, 如何去掉了, 很简单, &在mainActivity 的onCreate方法中加入下面两句 即可 &:
&requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题
&getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //设置全屏
&赶紧去试试吧 , 写程序就是要 多试 嘻嘻..
图片有了 ,我们怎么样才能让图片有行为呢 ? &那就需要人机交互了,通过触摸屏让游戏具有行为
先在这里 说明下android 的坐标系
android 的坐标系 &左上定点为原点坐标(0,0), 向右为X轴,向下为Y轴 说明这个位置是因为有些游戏引擎是 以 左下为原点的哦 , 大家要记住喔,后面如果用引擎的话 也有个概念
下面 我们来看看android 的 触摸屏事件是怎么处理的
我们先来分析下 现在的用户界面 都是通过事件驱动 实现人机交互的,当屏幕的界面接受到事件时 根据不同情况 进行不同的处理 就可以实现人机交互了
android 支持的触摸屏事件有:按下、弹起、移动、双击、长按、滑动。
按下、弹起、移动(down、move、up)是简单的触摸屏事件 我们本章就来说说这个东东.
而双击、长按、滑动、滚动需要根据运动的轨迹来做识别的。在Android中有专门的类去识别,android.view.GestureDetector。 这一块我们后面的章节 在讲
那如何实现呢?
&在Android中任何一个控件和Activity都是间接或者直接继承于android.view.View。一个View对象可以处理测距、布局、绘制、焦点变换、滚动条,以及触屏区域自己表现的按键和手势,因为我们的view 是继承了surfaceView,surfaceView又是继承view 所以要实现简单的触摸屏事件,只需要重写父类view 里面的onTouchEvent 方法就可以实现简单的触屏屏事件了&
下面我们来实现一个功能 &用上一章的程序 来实现 把图片显示在点击触摸屏的地方和图片能根据手指移动而移动
直接看代码&
import android.content.C
import android.content.DialogI
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.C
import android.view.MotionE
import android.view.SurfaceH
import android.view.SurfaceV
import android.view.SurfaceHolder.C
&* android surfaceview触摸屏事件学习
&* @author mahaile
public class GameSurfaceView extends SurfaceView implements Callback{
//线程标示位 当为false时停止刷新界面
SurfaceHolder surfaceH
GameViewThread gameViewT
float x=0,y=0;
int direction=0; &//图片运行方向 控制图片向上 或向下运动
int width,
Bitmap bitmap_
public GameSurfaceView(Context context) {
super(context);
surfaceHolder=this.getHolder();
surfaceHolder.addCallback(this); //添加回调
bitmap_role=BitmapFactory.decodeResource(getResources(), R.drawable.role);
//设置焦点 如果不设置焦点的话 在该界面下 点击触摸屏是无效的 默认为false
setFocusable(true);
public void onDraw(Canvas canvas){
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bitmap_role, x-bitmap_role.getWidth()/2, y-bitmap_role.getHeight()/2, null);
&& &//重写父类中的 onTouchEvent就可以监听到 &触摸事件了 记住要设置焦点喔&
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){ //处理屏幕屏点下事件 手指点击屏幕时触发
x=event.getX();
y=event.getY();
}else if(event.getAction()==MotionEvent.ACTION_UP){//处理屏幕屏抬起事件 &手指离开屏幕时触发
}else if(event.getAction()==MotionEvent.ACTION_MOVE){//处理移动事件 手指在屏幕上移动时触发
x=event.getX();
y=event.getY();
&//此处需要返回true 才可以正常处理move事件 详情见后面的 &说明
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) {
public void surfaceCreated(SurfaceHolder surfaceHolder) {
//获取屏幕的 宽高 只有在 surface创建的时候 才有效 ,才构造方法中获取 宽高是获取不到的
width=this.getWidth();
height=this.getHeight();
//初始化绘图线程
gameViewThread=new GameViewThread();
gameViewThread.flag=
gameViewThread.start();
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
gameViewThread.flag= //销毁线程
class GameViewThread extends Thread{
public void run(){
while(flag){
Canvas canvas=
canvas=surfaceHolder.lockCanvas(); //锁定画布 并获取canvas
onDraw(canvas);//调用onDraw 渲染到屏幕
surfaceHolder.unlockCanvasAndPost(canvas); //此步不要忘记了喔 否则界面上显示不出来的
}catch(Exception e){
e.printStackTrace();
Thread.sleep(10);//线程休眠时间 &控制帧数
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} &//每10毫秒刷新一次
MainActivity 类 &这里就不贴代码了,因为和上一章一样 ,很简单的
onTouchEvent() 返回值 解释
&& &onTouchEvent(),预设使用Oeverride这个方法,通常情r下去呼叫super.onTouchEvent()并传回布林值。但是这里要注意一点,预设如果去呼叫super.onTouchEvent()t很有可能super里面并没做任何事,并且回传false回恚坏┗卮false回恚芸赡芎竺娴event (例如:Action_Move、Action_Up) 都会收不到了,所以为了确保保后面event能利收到,要注意是否要直接呼super.TouchEvent()。
下一张 我们看看如果使用android的手势识别
最后还要注意一点:在初始化的时候不要忘记setFocusableInTouchMode(true);触屏模式获取焦点,比较类似&setFocusable(true);
&& & & &&&setFocusable(true);//此方法是用来响应按键!如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.
原代码下载地址
&&在android 中使用触摸屏 在模拟机中&我们的鼠标当点击一次模拟器屏幕然后释放,先触发 ACTION_DOWN 然后 ACTION_UP ;如果是在屏幕上移动那么才会触发 ACTION_MOVE 的动作;这个很正常, 但在真机中呢 ,是不是 也是这样的呢 ? &答案是否定的 &如果我们那真机测试的话 流程如下
先触发 ACTION_DOWN 如果手指不抬起的话 会一直触发ACTION_MOVE事件(就是不移动也会触发)&&然后 ACTION_UP
原因有两点:第一点是因为,Android 对于触屏事件很敏感!第二点:虽然我们的手指感觉是静止没有移动,其实事实不是如此!当我们的手指触摸到手机屏幕上之后,感觉静止没动,其实手指在不停的微颤抖震动。 所以才会一直触发action_move事件 &&
这样的情况对我们的程序有什么影响呢&
比如我们app线程绘图时间每次用了10ms,当手指触摸屏幕,这短暂的0.1秒内大概会产生10个左右的MotionEvent ,并且系统会尽可能快的把这些event发给监听线程, 这样的话在这一段时间内cpu可能忙于处理onTouchEvent事件 从而造成app 的界面没有足够资源去处理,而照成界面刷新一卡一卡的。
那么我们其实根本用不着按键响应这么多次,而是需要在我们每次绘图后,或者绘图前接受一次用户触摸事件就OK了,这样能让帧率不至于下降的太厉害不是么?!如果我们能把触屏监听事件 触发的事件 给慢下来 不就是可以解决这个问题了吗 &,嘻嘻 就是这么优化的
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){&
}else if(event.getAction()==MotionEvent.ACTION_UP){
}else if(event.getAction()==MotionEvent.ACTION_MOVE){
&& & & & synchronized(this){
&& & & & & try{
&& & & & & & & this.wait(Time); & & //让事件线程休眠 减少触发次数
&& & & & & &}catch(InterruptedException e){
&& & & & & & e.printStackTrace();
&& & & & & } & & & &&
&& & & & &}
&上面的代码 加到你的onTouch 里面 但有一点要注意喔 ,上面的线程同步对象使用了this ,如果这个类 也被别的类作为同步对象的话 ,可能发生死锁喔, &如果这个类已经被作为了同步对象的话 , &我们重新初始化的时候 新new 一个对象 作为onTouch的同步对象就可以了本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)后使用我的收藏没有帐号?
所属分类: &
查看: 620|回复: 1
列王的纷争 怎么才能横屏玩??
列王的纷争 怎么才能横屏玩??
楼主什么手机
找手游 上18183
TA的勋章:
楼主什么手机
指尖每日首次回帖可以赚5金币()收起回复展开回复
找手游 上18183
《我叫MTOnline》买了个表勋章
花费100金币购买获得,一表在手,紫卡不愁!
限量十二星座勋章:处女座
花费1500论坛金币在勋章商店中购买
限量十二星座勋章:射手座
花费1500论坛金币在勋章商店中购买
限量十二星座勋章:双子座
花费1500论坛金币在勋章商店中购买
限量十二星座勋章:狮子座
花费1500论坛金币在勋章商店中购买
限量十二星座勋章:天秤座
花费1500论坛金币在勋章商店中购买我的ipad玩游戏触屏有点不灵了,怎么破?_百度知道
我的ipad玩游戏触屏有点不灵了,怎么破?
提问者采纳
之前出现过这样情况,后来自己好了
那就用没电,别冲过一天在冲。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
般触摸屏故障处理恢复式: 、硬件性损坏物理性损坏1、手机触摸屏按键全部失灵(忽全失灵)【能触摸屏些原件松或损坏需要送医加固加焊或更换屏幕或元件】2、手机触摸屏失灵按键【 换触屏松损坏需要送医维修或更换】(用软件cpu坏少见)3、手机触摸屏偏校校偏【 恢复厂或格码片(1m) 校候故意偏校换触屏】4、手机机校画面校完直让校准【需要更换触屏格码片 】5、手机触摸失灵 拆机.装机失灵【 触摸屏四条边太紧密封条拆掉 触屏引线根部断线虚连】其硬件性损坏或影响:1 使用习惯:经玩游戏或者操作造屏幕发热等问题屏幕则能烧坏【能更换屏幕】2 电池故障使用充电器或者数据线能解决3.磁场影响【远离磁场或消磁处理】4.静电汗水油污影响体特定情况能现静电汗水油污应积极清洁防护5.高温低温影响环境温度触摸屏或整体机器影响都【40摄氏度极容易产问题请要使用】二 、系统性损坏1.死机或者假死机问题关闭屏幕或者重新启手机能解决;2.系统文件损坏由于root手机更改删除系统文件【解决办刷机再恶性循环啊家慎重删除系统文件】3.固件升级失败由于升级网络或其问题导致断等系统受损坏导致触摸类文件调用【刷机解决】4.系统设置错乱朋友喜欢性化设置能导致些系统设置错乱部功能受损【使用手机助手电脑设置—备份重置—恢复手机厂设置】5.针win8系统平板能现触摸屏bios系统性加载睡眠或暂性黑屏容易导致屏幕经性关闭导致预载触摸程序故障【问题难解决旦发通系统内软件调试能通进入bios使其自加载屏幕启等】三 、软件性损坏手机使用程软件接触程序软件使用能导致整手机些问题屏幕失灵或部故障见问题1.病毒性软件导致系统染病毒【刷机解决】2.型软件导致手机承受【卸载软件导致系统崩溃能刷机】3.软件支持触摸屏【卸载软件】
为您推荐:
其他1条回答
那岂不是里面东西都没了
设置一个字账号
好吧,不懂
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 surface pro4触控不灵 的文章

 

随机推荐