我创建了一个自定义视图,它使用虚拟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) 我有一个视图需要处理onTouch手势和 onClick事件.实现这个目标的正确方法是什么?
我有一个onTouchListener和一onClickListener组视图.每当我触摸视图时,首先onTouch触发事件,然后触发onClick.但是,从onTouch事件处理程序我必须返回true或false.返回true意味着正在使用该事件,因此android事件系统将不再传播该事件.
因此,onClick永远不会生成事件,至少在我的事件处理程序中onClick返回时,我的侦听器永远不会被触发.另一方面,返回时没有选项,因为这会阻止侦听器接收为识别手势所必需的任何其他事件.解决这个问题的常用方法是什么?trueonTouchfalseonTouch
在Android中,您是否可以创建一个侦听器来捕获视图属性中的更改(相对于屏幕顶部的宽度/高度/边距/位置)?
我想在layout_marginTop ="10dp"更改为其他值时触发事件.
在我的小应用程序中,我从系统(不受我控制)收到一系列排队的onEventXXX().
那些onEventXXX()的时间不保证.唯一保证的是它们按照它们被放入队列的顺序被接收.
在onEventXXX()中,我必须触发一个操作(O),当另一个进程(P)进行时,该操作无法启动.
但我不能放弃这个"开火行动(O)".我必须等到那个过程(P)完成,然后解雇它.
IOW,我必须排队或至少推迟"触发操作"直到该过程(P)完成.
我实现这一点的直接想法是,不是解雇操作(O),而是:
但是,知道Android的丰富性,我怀疑有一种更好的方法,已经内置到系统/ API中.
如果有更好的方法来实现上述目标,它会是什么?
有人可以解释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
恢复问题:将布局上的触摸事件发送到他的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) 我想在可能活动的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) 嗨,我使用手写笔(例如三星笔)开发了一个应用程序.如您所知,当我们单击手写笔上的按钮时,会出现"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 =>按钮).但是,我无法禁用空中命令.
有没有办法禁用空中命令?
最好的祝福.
我有一个包含一些视图的布局。我想在用户单击布局中的任意位置时设置一些操作,因此我为布局设置了一个 OnClickListener,该布局工作清晰。但是我怎么知道点击了哪个视图?我想根据点击的视图分配不同的动作;或者可能没有点击视图,它只是布局本身。所以问题是,如果我为其中一个视图设置 OnClickListener,与布局和视图相关的 OnCLickListeners 都将被激活,但我只想要视图操作。提前致谢。
我有一张带有一些标记的地图。我设置了拖动侦听器:
map.setOnMarkerDragListener(this);
Run Code Online (Sandbox Code Playgroud)
但是只有在用户长按标记后才能启用拖动。我想立即启用拖动。有没有办法用 Android Maps (v2) 做到这一点?