标签: android-event

如何区分onTouchEvent()中的move和click?

在我的应用程序中,我需要处理移动和单击事件.

单击是一个ACTION_DOWN操作的序列,几个ACTION_MOVE操作和一个ACTION_UP操作.理论上,如果您获得ACTION_DOWN事件然后获得ACTION_UP事件 - 这意味着用户刚刚单击了您的视图.

但实际上,这个序列在某些设备上不起作用.在我的三星Galaxy Gio上,只需单击我的视图:ACTION_DOWN,几次ACTION_MOVE,然后ACTION_UP即可获得此类序列.即我使用ACTION_MOVE动作代码获得了一些无法预料的OnTouchEvent激活.我从未(或几乎从不)获得序列ACTION_DOWN - > ACTION_UP.

我也不能使用OnClickListener,因为它没有给出点击的位置.那么如何检测点击事件并将其与移动区分开来呢?

android event-handling touch-event android-event

70
推荐指数
6
解决办法
4万
查看次数

Android获取所选单选按钮的值

我有一个RadioGroup rg1,我想获得所选单选按钮的值.

我知道我可以使用以下方法获取id所选单选按钮:

if(rg1.getCheckedRadioButtonId()!=-1)
int id= rg1.getCheckedRadioButtonId()
Run Code Online (Sandbox Code Playgroud)

这给了我id,但我想要那个按钮的值.

android android-event

26
推荐指数
2
解决办法
8万
查看次数

View.onTouchEvent仅注册ACTION_DOWN事件

我正在实现一个自定义TextView,我想在触摸视图时执行一些操作.我认为该onTouchEvent方法可以在不必使用的情况下为视图提供全方位的触摸setOnTouchListener(我正在尝试在视图中而不是在活动中完成所有工作,因此它是可移植的),但是唯一注册的触摸事件是ACTION_DOWN.如果我OnTouchListener使用此设置活动,我会获得全部触摸事件,但onTouchEvent不会.

任何人都知道为什么会这样,或者任何人都可以提供一个不涉及使用的解决方案setOnTouchListener(这会阻止实现活动设置自己的监听器)?

android android-custom-view touch-event android-event

24
推荐指数
1
解决办法
8965
查看次数

onTouchEvent执行两次

任何人都可以向我解释为什么onTouchEvent执行两次,我怎么能设置它只运行一次?我找不到解释.谢谢.

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    _iv = new ImageView(this);

    _map = BitmapFactory.decodeResource(getResources(), R.drawable.image);

        _iv.setImageBitmap(_map);
        _iv.invalidate();

    setContentView(_iv);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    double X = event.getX();
    double Y = event.getY();

    Toast.makeText(this, "X: " + X + " Y: " + Y, Toast.LENGTH_SHORT).show();

    return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

android android-event

19
推荐指数
1
解决办法
7792
查看次数

检测android软键盘显示/隐藏事件

我试图在phonegap上检测showKeyboard和hidekeyboard事件.为此,在deviceready事件中我放置了以下代码:

  bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
    document.addEventListener("menubutton",app.onMenuKeyPress,false);
    document.addEventListener("backbutton",navigateBack,false);
    document.addEventListener("hidekeyboard", onKeyboardHide, false);
    document.addEventListener("showkeyboard", onKeyboardShow, false);
},
Run Code Online (Sandbox Code Playgroud)

这里后退按钮事件被解雇和罚款,但工作hidekeyboardshowkeyboard事件从未被触发.

为了检测它,我尝试使用window.onresize在浏览器中工作的事件.以下是其代码:

window.onresize = function(){
    var screenHeight = $(window).height();
    alert(screenHeight);
    var diff = screenInitialHeight - screenHeight;
    var newHeight = screenInitialHeight-diff;
    alert(newHeight);
    $('#mainpage').height(newHeight);
    $('#nav_container').height(newHeight);
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码也没有在show或hide键盘上执行.此功能仅在首次应用时执行.开始了.我在某些地方看到,对于某些人来说这些事件正在发挥作用,所以我觉得我身边有一些问题,可能是在一些配置文件等等.所以下面是androidmanifest.xml代码:

    <?xml version='1.0' encoding='utf-8'?> …
Run Code Online (Sandbox Code Playgroud)

javascript-events android-softkeyboard android-event cordova cordova-3

13
推荐指数
1
解决办法
2万
查看次数

如何在android中发送关键事件?

我正在修改Android 4.0.3.r1的自定义导航栏,并希望发送"Home"和"Back"等关键事件.我的应用程序不是一个系统:

IWindowManager mWindowManager = IWindowManager.Stub.asInterface(
                ServiceManager.getService(Context.WINDOW_SERVICE));
mWindowManager.injectKeyEvent( ev, false );
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为我无法android.permission.INJECT_EVENTS从系统应用程序中获取.我怎样才能做到这一点?

android android-event

8
推荐指数
3
解决办法
3万
查看次数

为什么view.startAnimation(动画)在从事件调用时不起作用?

我创建了一个自定义视图,它使用虚拟TranslateAnimation来设置一些布局属性.我使用Interpolator计算高度,并将其应用于TranslateAnimation的applyTransformation()方法内的视图.

如果我从我的Activity中触发动画,这工作得很好.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Log.i("test", "onCreate()");
    view.expand(); // This method starts the animation
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用触摸事件做同样的事情时,没有任何反应.

@Override
// This method is touch handler of the View itself
public boolean onTouch(View v, MotionEvent event) {
    Log.i("test", "onTouch()");
    this.expand(); // onTouch is part of the view itself and calls expand() directly
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我的expand方法如下所示:

public void expand() {
    Log.i("test", "Expand!");

    TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 0) {

        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-event

7
推荐指数
1
解决办法
3153
查看次数

区分常规菜单KeyEvent与IME打开

在侦听ActionBarSherlock中的关键事件时,为了在ICS前设备上显示溢出菜单,我正面临一个有趣的问题.看起来我无法区分简单的按键与用户长按菜单键以显示IME的情况.两个KeyEvent实例完全相同,看起来像这样:

是否有一种直接的方法来区分这两个不同的事件?

android android-event actionbarsherlock

7
推荐指数
1
解决办法
327
查看次数

使用Android接收onTouch和onClick事件

我有一个视图需要处理onTouch手势 onClick事件.实现这个目标的正确方法是什么?

我有一个onTouchListener和一onClickListener组视图.每当我触摸视图时,首先onTouch触发事件,然后触发onClick.但是,从onTouch事件处理程序我必须返回truefalse.返回true意味着正在使用该事件,因此android事件系统将不再传播该事件.

因此,onClick永远不会生成事件,至少在我的事件处理程序中onClick返回时,我的侦听器永远不会被触发.另一方面,返回时没有选项,因为这会阻止侦听器接收为识别手势所必需的任何其他事件.解决这个问题的常用方法是什么?trueonTouchfalseonTouch

android android-event

7
推荐指数
2
解决办法
2万
查看次数

Android - 用于捕获View属性中的更改的侦听器(例如android:layout_marginTop)

在Android中,您是否可以创建一个侦听器来捕获视图属性中的更改(相对于屏幕顶部的宽度/高度/边距/位置)?

我想在layout_marginTop ="10dp"更改为其他值时触发事件.

android listener android-layout android-view android-event

7
推荐指数
1
解决办法
1万
查看次数