我正在编写一个小部件。当有人点击小部件按钮时,手电筒正在打开。如果再次单击小组件按钮,则手电筒将关闭。我写了一个小应用程序,有它的作品,因为我的布局xml文件中有一个表面视图。在我的小部件xml上无效。
这是我的widget_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
android:id="@+id/surface"
android:layout_width="1dp"
android:layout_height="1dp" />
<ImageButton
android:id="@+id/button"
android:src="@drawable/off"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:scaleType="center"/>
</FrameLayout>
在开发者页面上,有一个文本:
http://developer.android.com/guide/topics/appwidgets/index.html
A RemoteViews object (and, consequently, an App Widget) can support the following layout classes:
FrameLayout
LinearLayout
RelativeLayout
GridLayout
And the following widget classes:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper
所以我的widget按钮永远不会工作,因为我不能使用表面视图。
答案 0 :(得分:4)
您需要传递虚拟表面纹理而不是表面视图.....例如:
将此添加到turnLightOn代码:
mCamera.setPreviewTexture(new SurfaceTexture(0));