标签: android-event

为什么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
查看次数

使用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万
查看次数

推迟事件的最佳方法?

在我的小应用程序中,我从系统(不受我控制)收到一系列排队的onEventXXX().

那些onEventXXX()的时间不保证.唯一保证的是它们按照它们被放入队列的顺序被接收.

在onEventXXX()中,我必须触发一个操作(O),另一个进程(P)进行时,该操作无法启动.

但我不能放弃这个"开火行动(O)".我必须等到那个过程(P)完成,然后解雇它.

IOW,我必须排队或至少推迟"触发操作"直到该过程(P)完成.

我实现这一点的直接想法是,不是解雇操作(O),而是:

  1. 启动一次定时器,定期检查过程(P)
  2. 当计时器过去时,如果过程(P)未完成,则再次开始时间(自身).
  3. 当计时器过去时,如果过程(P)完成,则开火操作(O).

但是,知道Android的丰富性,我怀疑有一种更好的方法,已经内置到系统/ API中.

如果有更好的方法来实现上述目标,它会是什么?

android android-asynctask android-event

6
推荐指数
1
解决办法
192
查看次数

android:添加日历事件时的EXDATE格式

有人可以解释EXDATE在向android日历添加事件时如何使用?关于EXDATE应该放置的格式,文档还不清楚.我尝试了很多格式,其中一些是:

values.put(Events.EXDATE, "TZID=Europe/London:20130116T080000");
values.put(Events.EXDATE, "20130116T080000Z");
values.put(Events.EXDATE, "20130116T080000");
values.put(Events.EXDATE, "20130116");
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.任何想法如何使一个事件不出现在特定的日期,如果RRULE它应该出现?

android android-contentprovider android-calendar android-event

6
推荐指数
1
解决办法
1268
查看次数

从一个视图发送触摸事件到他的WebView兄弟

恢复问题:将布局上的触摸事件发送到他的WebView兄弟,实现与默认WebView滚动相同的滚动(使用fling)

我在这个xml之后的WebView上有一个frameLayout:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">


    <com.app.ObservableWebView
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:id="@+id/observableWebView">

    </com.app.ObservableWebView>


    <FrameLayout
        android:layout_width="match_parent" android:layout_height="200dp"
        android:id="@+id/frameLayout">

    </FrameLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

在应用程序开始时,一个空的html占位符放在WebView Dom的某个位置,并且他的位置由JavascriptInterface给出.此位置使用像素比率转换,FrameLayout位于frameLayout上方.当WebView内容移动时,占位符使用FrameLayout(从Observable WebView发出的事件)移动了一个.到目前为止,一切都在按预期工作.

布局架构

在frameLayout中,我需要轻触它,所以我在这一步之后设置了一个TouchListener:

private boolean mIsNativeClick = false;
private float mStartNativeX;
private float mStartNativeY;
private final float SCROLL_THRESHOLD = 10;

private void init(){
    mRootFrameLayout.setOnTouchListener(this);
}


@Override
public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            mStartNativeX = event.getX();
            mStartNativeY = event.getY();
            mIsNativeClick = true;
            return true;
        case MotionEvent.ACTION_MOVE:
            if (mIsNativeClick && (Math.abs(mStartNativeX - event.getX()) > SCROLL_THRESHOLD
                    || …
Run Code Online (Sandbox Code Playgroud)

android android-event

6
推荐指数
1
解决办法
4660
查看次数

布局中定义的Android EditText onClick Listener失败,显示异常

我想在可能活动的Layout-XML中为EditText定义一个onClick侦听器,但它始终以一个模糊的异常失败.

布局setContentView()onCreate我的活动的-Method中注入.我没有在这里使用Fragment,我很清楚XML定义的onClickListener不适用于片段.

出于测试目的,我将相同的处理程序方法添加到位于EditText旁边的ImageView.处理程序工作,在EditText上失败.所以这是EditText的特殊之处,而不是错位处理程序方法的一般问题.

这是我的布局文件的相关部分:

<ImageView
     android:layout_gravity="center_horizontal|top"
     android:layout_rowSpan="3"
     android:src="@drawable/ic_action_event"
     android:onClick="onCreationClicked"
     />

<EditText
     android:id="@+id/creation_edit"
     android:focusable="false"
     android:clickable="true"
     android:layout_gravity="fill_horizontal"
     android:hint="@string/enter_creation"
     android:onClick="onCreationClicked"
     style="@style/PickerEditText"
     />
Run Code Online (Sandbox Code Playgroud)

当我单击ImageView时,将执行关联的方法并启动DialogFragment.当我点击EditText时,我得到以下异常:

    java.lang.IllegalStateException: Could not find a method onCreationClicked(View) in the activity class android.support.v7.internal.widget.TintContextWrapper for onClick handler on view class android.support.v7.widget.AppCompatEditText with id 'creation_edit'
            at android.view.View$1.onClick(View.java:3994)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NoSuchMethodException: onCreationClicked [class android.view.View]
            at …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-edittext android-event

6
推荐指数
1
解决办法
3129
查看次数

如何在Android设备上禁用"air command"?

嗨,我使用手写笔(例如三星笔)开发了一个应用程序.如您所知,当我们单击手写笔上的按钮时,会出现"Air command"(弹出窗口).我的目标是" 空中命令覆盖到我的自定义函数中 "

首先,我从*SpenHoverListener开始"(由Samsung Spen SDK 5.0支持)并覆盖onHover函数,如下所示.

private SpenHoverListener mHoverListener = new SpenHoverListener() {
    @Override
    public boolean onHover(View view, MotionEvent event) {
        Log.e("Test",""+event.getButtonState());
        updateHoverUI(event.getRawX(), event.getRawY(), event.getPressure(), event.getAction(), "Hover");
        return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

我可以成功监控按钮单击事件(单击BUTTON_STYLUS_PRIMARY =>按钮).但是,我无法禁用空中命令.

有没有办法禁用空中命令

最好的祝福.

android android-event samsung-mobile stylus-pen

6
推荐指数
1
解决办法
4088
查看次数

如何知道在布局 OnClickListener 中单击了哪个视图?

我有一个包含一些视图的布局。我想在用户单击布局中的任意位置时设置一些操作,因此我为布局设置了一个 OnClickListener,该布局工作清晰。但是我怎么知道点击了哪个视图?我想根据点击的视图分配不同的动作;或者可能没有点击视图,它只是布局本身。所以问题是,如果我为其中一个视图设置 OnClickListener,与布局和视图相关的 OnCLickListeners 都将被激活,但我只想要视图操作。提前致谢。

android android-layout android-view android-event

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

如何在单次触摸后启用拖动标记(Android Map Api v2)?

我有一张带有一些标记的地图。我设置了拖动侦听器:

map.setOnMarkerDragListener(this);
Run Code Online (Sandbox Code Playgroud)

但是只有在用户长按标记后才能启用拖动。我想立即启用拖动。有没有办法用 Android Maps (v2) 做到这一点?

android google-maps android-event android-maps-v2

5
推荐指数
1
解决办法
809
查看次数