是否可以创建一个包含 GestureOverlayView 的小部件?
我的目标是创建一个在手势板左侧有 4 个按钮堆叠的小部件。在我的活动和片段中,我目前正在使用 GestureOverlayView,它允许我读取手势,并将它们与保存的手势模式库进行匹配,以确定特定的动作。
在项目的下一个阶段,我想将片段和活动中的手势窗格复制到放置在 Android 主屏幕上的小部件上。
我读过一篇文章说 Android 中允许使用 FrameLayouts,看到 GestureOverlayView 如何从 framelayout 扩展,我理想主义的自我认为这是可能的。
到目前为止,我已经获得了一个具有我希望使用的相同图像和布局的小部件,并且它在没有功能的情况下显示得很好。布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout_app"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".2"
android:background="@drawable/draw_pad_background"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/call" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/text" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/app" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/contact" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".03"
android:background="@drawable/button_divider"
android:orientation="vertical" >
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight=".85" >
<LinearLayout
android:id="@+id/llSeparateLayer_app"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- <LinearLayout android:layout_width="fill_parent" android:layout_height="1dip"
android:background="#FFFFFF" android:layout_centerVertical="true" /> <ImageView
android:layout_height="30dip" android:src="@drawable/call" android:layout_width="wrap_content"
android:scaleType="centerInside" android:layout_centerHorizontal="true" />
<LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_centerInParent="true"> <ImageView android:layout_height="30dip"
android:src="@drawable/text" android:layout_width="wrap_content" android:scaleType="centerInside"
android:layout_marginTop="30dip" /> </LinearLayout> -->
<LinearLayout
android:id="@+id/llOpenDSR"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight=".5"
android:background="@drawable/draw_pad_background"
android:gravity="center" >
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
如果我添加手势视图,它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout_app"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".2"
android:background="@drawable/draw_pad_background"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/call" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/text" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/app" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/contact" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".03"
android:background="@drawable/button_divider"
android:orientation="vertical" >
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight=".85" >
<LinearLayout
android:id="@+id/llSeparateLayer_app"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- <LinearLayout android:layout_width="fill_parent" android:layout_height="1dip"
android:background="#FFFFFF" android:layout_centerVertical="true" /> <ImageView
android:layout_height="30dip" android:src="@drawable/call" android:layout_width="wrap_content"
android:scaleType="centerInside" android:layout_centerHorizontal="true" />
<LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_centerInParent="true"> <ImageView android:layout_height="30dip"
android:src="@drawable/text" android:layout_width="wrap_content" android:scaleType="centerInside"
android:layout_marginTop="30dip" /> </LinearLayout> -->
<LinearLayout
android:id="@+id/llOpenDSR"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight=".5"
android:background="@drawable/draw_pad_background"
android:gravity="center" >
</LinearLayout>
</LinearLayout>
<android.gesture.GestureOverlayView
android:id="@+id/appGestures"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:eventsInterceptionEnabled="false"
android:fadeOffset="400"
android:gestureColor="@color/default_gesture_color"
android:gestureStrokeAngleThreshold="0.1"
android:gestureStrokeLengthThreshold="80"
android:gestureStrokeSquarenessThreshold="0.1"
android:gestureStrokeType="multiple"
android:orientation="horizontal"
android:uncertainGestureColor="@color/default_gesture_color_uncertain" >
<ImageView
android:id="@+id/image_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</android.gesture.GestureOverlayView>
</RelativeLayout>
</LinearLayout>
当我将此小部件添加到我的主屏幕时,我得到“问题加载小部件”
然后我找到了文档的这一部分:
“虽然小部件可以理解为“迷你应用程序”,但在开始设计小部件之前,需要了解一些重要的限制:
手势
由于小部件位于主屏幕上,因此它们必须与在那里建立的导航共存。与全屏应用程序相比,这限制了小部件中可用的手势支持。例如,虽然应用程序可能支持允许用户在屏幕之间横向导航的视图寻呼机,但该手势已经在主屏幕上用于在主面板之间导航。
可用于小部件的唯一手势是:
触摸垂直滑动”
http://developer.android.com/design/patterns/widgets.html
那么这是否意味着我不能使用这个视图?