4

是否可以创建一个包含 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

那么这是否意味着我不能使用这个视图?

4

0 回答 0