80,351
社区成员
发帖
与我相关
我的任务
分享
package app.example.draglinearlayout;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Vibrator;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.LinearLayout;
public class DragLinearLayout extends LinearLayout {
private Vibrator vibrator;
/**
* 是否可以拖拽,默认不可以
*/
private boolean isDrag;
/**
* 用来处理是否为长按的Runnable
*/
private Runnable onLongRunnable = new Runnable() {
@Override
public void run() {
isDrag = true; // 设置可以拖拽
vibrator.vibrate(100); // 震动一下
// 隐藏自己
// DragLinearLayout.this.setVisibility(View.INVISIBLE);
}
};
private Handler handler = new Handler();
@SuppressLint("NewApi")
public DragLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
vibrator = (Vibrator) context
.getSystemService(Context.VIBRATOR_SERVICE);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
// 使用Handler延迟dragResponseMS执行onLongRunnable
handler.postDelayed(onLongRunnable, 1000);
break;
case MotionEvent.ACTION_MOVE:
Log.d("2", "*************");
break;
case MotionEvent.ACTION_UP:
Log.d("1", "*************");
break;
}
return super.dispatchTouchEvent(ev);
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<app.example.draglinearlayout.DragLinearLayout
android:layout_width="200dp"
android:layout_height="300dp"
android:background="#FAFDAD" />
</RelativeLayout>
@Override
public boolean onTouchEvent(MotionEvent event) {
return true;
}
为毛就行了???成功的显示了日志