我有一个WebView,它利用内置的Zoom控件,如下: wv = new WebView(this); wv.getSettings().setBuiltInZoomControls(true); 注意:这激活了两个主要功能 - 捏对Zoom和InvokeZoOmpicker()(后者仅在视图上完成刷动动作时调用,简单的触摸不会启用它) ) 我也希望发生触摸事件时发生的事情,使用以下 wv.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { Log.i("touch", "touched!"); return false; } }); 当WebView加载并点击屏幕时,每次与屏幕交互时,日志状态都会按照预期的方式"触摸".但是,如果我做的事情会引起InvokeZ
以下是关于 ontouchlistener 的编程技术问答
如果我的标题还不够清楚,我将详细解释: 说我们有一个屏幕上装有多个按钮(10+),然后按一个按钮,激活OnTouch/onClick.如果我们现在移动手指而不举起手指,我希望它激活其滑过的任何其他按钮.在这种特殊情况下,我希望当您滑过虚拟钢琴时播放声音. 我知道onTouchListener-solution,您可以在其中注册每个动作_ move并找到一些激活新事件的边界,但是如果您有多个按钮,并且想允许平滑的滑动毫不延迟. 我还阅读 this thread 这表明我们将视图的触摸列者与活动中的eSturelistener结合在一起,但再次对我的处境感到最佳. 我尚未尝试将触摸列器与gesturelistener相结合,但是如果有人告诉我他们没有其他方法,我会继续这样做. 解决方案 我实际上使用ACTION_DOWN和ACTION_MOVE使用"简单"出路,并使用ACTION_DOWN和ACTION_MOVE使用坐标计算,与event.getX()和event
我制作了一个实现View.OnTouchListener的应用程序.但是,当我将其上传到Android Market(Google Play商店)时,我收到了以下消息: 此APK请求1个功能将用于Android市场 过滤:android.hardware.touchscreen 我本身不需要触摸屏.您也可以"单击"视图,这很好.如果我使用OnClickListener,而不是OnTouchListener,此要求会消失吗? 什么百分比的Android设备没有触摸屏?从OnTouchListener到OnClickListener的更新应该是新的潜在用户的值得的吗? 解决方案 OnTouchListener比OnClicklistener更细粒度的控制.如果您真正关心的是点击 - 即,触摸/上触摸/no-Drag的组合 - 然后使用onclicklistener,那就是它的目的.
我有一个装有按钮的屏幕,但希望OnTouch-Method使用整个屏幕的坐标.我首先尝试使用Relativelayout与OnTouchListener一起使用,但从未设法与听众"连接"(即,触摸屏幕时什么都没发生),我也尝试将imageview放在屏幕顶部,然后使此视图不可见. 这种最后的方法对OnClicks做出了正确的回复,但我从未设法使其变得不可见. 如果这是最好的解决方案,我非常怀疑,我如何使imageView完全看不见,而不会失去其OnTouchListener(我已经尝试了白色背景色和setalpha(0)). 我可以以某种方式使用全局坐标使OnTouchListener对整个屏幕做出反应,而屏幕正在显示(和更改)几个按钮(最好是无形的ImageView)? 如果您不了解我的要求,请随时抱怨.我会根据需要填补空白. 编辑: 我现在通过使用常规的OnTouch方法来解决问题.我遇到了几个问题,使Action_Down和Action_Move
我有一个自定义视图,在我的活动中分配了以下OnTouchListener: private OnTouchListener MyOnTouchListener = new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { System.out.println("onTouch called."); System.out.println("x" + event.getX() + ", y: " + event.getY()); return true; } }; 这是按预期在日志中注册并显示事件,直到用户向上或向下移动手指超过几个像素为止.在此之后,直到用户删除并重新涂抹手指,否则触摸事件不会传递给听众.但是,使用adb shell getevent表明事件仍在生成.可以在 http://pastebin.com/7ebm2
所以我对OnTouch方法遇到了一些问题,它没有做任何事情,一开始我想到了代码的某些内容,但是后来我做到了,当我触摸屏幕时,它仍然无法使用.有人知道有什么问题吗? thnx. { 私人fartpianoview fpv; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); fpv = new FartPianoView(this); setContentView(fpv); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-g
我写了一个简单的动态练习,其中我要做的就是记录事件的参数.我通过在主要活动中实施 ontouchlistener 和覆盖 ontouch(). 对于一个按钮,我在ontouch()末尾返回 true .那里没有问题. 对于另一个按钮,我在ontouch()末尾返回 false .这就是它变得有趣的地方.通过仅返回" false",一个致命的例外带有一个微小的暗示,我并不真正理解:"回收两次!". 这是什么意思? 更新:根据下面的评论中的建议,我添加了logcat的例外详细信息: 03-08 10:35:14.275: ERROR/AndroidRuntime(521): FATAL EXCEPTION: main 03-08 10:35:14.275: ERROR/AndroidRuntime(521): java.lang.RuntimeException: MotionEvent{405215b0 action=0 x=66.0 y=78.0 press
我正在尝试以编程方式创建视图,并根据单击状态更改其背景. 我知道我可以使用XML Drawables做到这一点,但是我也想学会编程. 但是,如果我按自己的视图,然后滑动我的手指,景色会粘在紧迫的状态下. (白色= 0xaaffffff背景) 我的代码是: 编辑: 我解决了问题.这是工作代码: mainContainer.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub int action = event.getAction(); if (action==MotionEvent.ACTION_D
我的屏幕上有多个ImageViews.每当用户将手指移到其中一个或多个手指上时,我都希望触摸手指的手指,并将其删除并创建新的ImageViews. @Override public boolean onTouch(View view, MotionEvent motionEvent) { ((ViewGroup) view.getParent()).removeView(view); createNewImageViews(); return true; } 问题是,我的应用程序崩溃了.我认为原因是,再次称为触摸列器,它已经删除了它的视图并尝试再次删除它. java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.removeView(android.view.View)' on a null object refere
我正在使用OnTouchListener进行布局.我想在布局之外单击.我将OnTouchListEtener设置为布局.但是运动事件总是显示Action_Down.即使我触摸了视图,也没有显示Action_outside.任何人都可以帮助我找出为什么它没有显示不变的action_outside.这是我正在使用的代码 Layout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("action",event.getAction()+""); if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { Toast.makeText(getApplicationContext(), "
我想在Android上构建一个工具,用户可以在图片上绘制一些简单的对象(例如,线,圆圈或箭头).我首先开始尝试该线的部分,的确,我可以成功地绘画.逻辑是,用户在某一时刻敲击,然后拖动手指,绘画线条.我使用这样的课程(它基于 dongru的答案 ): public class DrawView extends View { Paint paint = new Paint(); float Sx, Sy, Lx, Ly; public DrawView(Context context, float x1, float y1, float x2, float y2) { super(context); paint.setColor(Color.RED); Sx=x1; Sy=y1; Lx=x2; Ly=y2; } @Override
我是Android开发的新手,目前我必须决定在哪里控制手势输入,但我只是不知道在哪里获得触摸输入的利弊.我得到了两种选择,您能向我解释哪种方式的利弊? 在视图上设置侦听器;实施方法: faceView.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View arg0, MotionEvent arg1){ return false; } ); 或 在视图中覆盖方法 public boolean onTouchEvent(MotionEvent event){ return false; } 解决方案 方法1:匿名内部类型. faceView.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View arg0, MotionEvent arg1){
public class UnitConverterActivity extends Activity implements OnTouchListener { /** Called when the activity is first created. */ LinearLayout mLinearLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLinearLayout = new LinearLayout(this); ImageView i = new ImageView(this); i.setImageResource(R.drawable.mainmenu); //i.setAdjustViewBounds(false); i.setScaleType(Scale
为孩子们创建应用程序是一项艰巨的任务,我赋予了创建连接DOTS应用程序的任务. 示例 我做了一些Ontouchevent的教程. 我知道如何在屏幕上绘画用手指绘制canvas a android 我使用此 Android:如何在图像/ImageView中获得X y坐标?示例 ,但我真的不知道如何实现这一目标. 我真的很高兴能解决这个问题!谢谢! 输入映像是 编辑 @Override protected void onDraw(Canvas canvas) { //backgroundBitmap is the image i want to show in background if(DISPLAY_ALPHABET==0) { canvas.drawBitmap(backgroundBitmap, 0f, 0f, null); DISPLAY_ALPHABET=1; } show(canvas); } public void
检测AppWidget上的OnTouch.如果有可能? 你好!我正在尝试为Android 2.1创建我的第一个AppWidget,其中客户端可能有机会在我的自定义视图上选择一个项目.我将创建一个自定义视图,并为其创建一个滑块,客户可以通过在自定义视图上拉滑块来选择.为此,我想检测AppWidget的OnTouch(确定X-,Y-坐标),是否可以做到这一点? 我看到了可以在AppWidget中使用的有效小部件的列表: AnalogClock 按钮 计时仪 image button ImageView progressbar textview ViewFlipper ListView GridView stackView AdapterViewFlipper 但是它们不符合我的需求.我已经搜索过这个,但没有找到任何可以帮助我的. 有什么方法可以检测AppWidget中的OnTouch?也许这需要我拥有一个较新的API版本. 解决方案 似乎没有办
我在一个布局中有一个ImageView,并在ImageView上设置OnTouchListener以拖动ImageView.它正常工作.我的问题是如何防止移动imageView到布局范围之外? 这是我的代码: 活动类: public class RepositionTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.reposition_test_layout); ImageView imageView = (ImageView)findViewById(R.id.android); imageView.setOnTouchListener(n
我的应用程序,我有一个元素,需要用户在屏幕上移动它,并且要执行此操作,我正在使用Relativelayout和OnTouchListener. 我遇到的问题是,在我的onTouchListener内部,我得到了一些getX()和getY()的奇怪结果. 我将以下代码行添加到我的onTouch() - > ACTION_MOVE块中: Log.v("example", "Touch: {x:" + event.getX() + " } {y:" + event.getY() + "}"); 以下是我的logcat结果. 04-29 03:16:11.000:v/myapp(24188):降低! 04-29 03:16:11.057:v/myapp(24188):触摸:{x:69.78699} {y:107.774216} 04-29 03:16:11.103:v/myapp(24188):触摸:{x:77.86926} {y:173.37648} 04-
视图的onTouchEvent有什么区别: public class MyCustomView extends View { // THIS : @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } } 及其onTouchListener: MyCustomView myView = (MyCustomView) findViewById(R.id.customview); myView.setOnTouchListener(new View.OnTouchListener() { @Override public void onClick(View arg0) { // do something } }); 或 public class M
在视图上处理OnTouchEvent非常简单,因为每个视图都有setOntouchListener()方法可以做到这一点. a,虽然 listPreference 是一种视图,不是在布局XML中定义,因此无法通过FindViewById()访问.所以...我似乎不知道如何为此setOntOntouchListener(). 我的想法是在pysenceactivity的onCreate(),然后是getDialog(). 28%29" rel =" nofollow"> getCurrentFocus(),但在那个特定的时刻,它没有焦点,甚至没有对话框(getDialog()返回null,已确认). 任何想法如何解决这个问题? 解决方案 如果您对所有首选项感兴趣,则使用registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener),如果您只想知道一个项目的更改,