Android-显示活动/视图的预览';内容
我正在构建一个类似电子书的Android应用程序。标准翻页、查看图像等。其中一个要求是在多个位置可以看到页面外观的预览。它将是该页面的确切内容,只是尺寸较小 我一辈子都不能让这个预览按我需要的方式运行。我编写了一个活动,它将显示播放音频或视频的控件,具体取决于在extras中传递的一些值。那很好。预览应该是此活动,但只能以较小的尺寸显示,并显示在单独的活动中。以下是我试图让活动的较小版本显示的内容: 首先,我偶然发现了文档记录不完整的ActivityGroup对象。我想我可以用它来调用活动,然后获取视图并以某种方式将其放入父视图中。下面是代码的样子:Android-显示活动/视图的预览';内容,android,android-layout,android-widget,Android,Android Layout,Android Widget,我正在构建一个类似电子书的Android应用程序。标准翻页、查看图像等。其中一个要求是在多个位置可以看到页面外观的预览。它将是该页面的确切内容,只是尺寸较小 我一辈子都不能让这个预览按我需要的方式运行。我编写了一个活动,它将显示播放音频或视频的控件,具体取决于在extras中传递的一些值。那很好。预览应该是此活动,但只能以较小的尺寸显示,并显示在单独的活动中。以下是我试图让活动的较小版本显示的内容: 首先,我偶然发现了文档记录不完整的ActivityGroup对象。我想我可以用它来调用活动,然后
public class GroupTest extends ActivityGroup {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grouptest);
LocalActivityManager manager = getLocalActivityManager();
Intent intent = new Intent();
intent.setClass(getBaseContext(), ViewElement.class);
intent.putExtra("ElementID", 22);
intent.putExtra("PackID", 10);
Window w = manager.startActivity("videoelement", intent);
View v = w.getDecorView();
// Grab the table and add a view to it.
TableLayout tl = (TableLayout)findViewById(R.id.tlTest);
TableRow tr = new TableRow(this);
tr.addView(v);
tl.addView(tr);
}
}
下面是布局的样子:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
android:id="@+id/tlTest">
</TableLayout>
布局(如果我能让它工作的话,我会把预览放到实际的布局中):
这完全不起作用。就我所知,调用w.getDecorView()不会返回实际具有任何高度、宽度或绘制属性的视图。如果我运行该代码,我会得到错误“宽度和高度必须大于0”,如果我输入宽度和高度的值,除了黑色图像外,什么也不会显示。因此,我接着创建了一些简单的东西,比如TextView,并将其绘制到位图中以显示在我的LinearLayout中,但也无法让它正常工作。我已经完全厌倦了在安卓系统中操纵用户界面
那么,有没有其他人做过类似的事情来预览另一项活动,你是如何完成的?我是不是走错了路?我已经在谷歌上搜索了所有的地方,我的一部分感觉好像有人以前解决过这个问题,但是我已经在这个问题上浪费了一天的时间,我现在无法投入更多的时间
感谢您的帮助。您必须等待视图在屏幕上呈现,然后您可以要求它在任何画布上绘制自己。如果视图未显示在屏幕上,它将创建一个空的0x0图像。如果我没有弄错,您希望在活动上放置一个缩略图,该缩略图实际上是单击此缩略图图像视图时打开的活动的预览
public class GroupTest extends ActivityGroup {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tocrow);
LocalActivityManager manager = getLocalActivityManager();
Intent intent = new Intent();
intent.setClass(getBaseContext(), ViewElement.class);
intent.putExtra("ElementID", 22);
intent.putExtra("PackID", 10);
Window w = manager.startActivity("videoelement", intent);
View v = w.getDecorView();
Bitmap image = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
v.draw(new Canvas(image));
ImageView img = (ImageView)findViewById(R.id.ivwElementPreview);
img.setImageBitmap(image);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/ivwElementPreview"
android:layout_width="75px"
android:layout_height="75px"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:id="@+id/txtElementTitle"
android:layout_width="300px"
android:layout_height="0dip"
android:layout_weight="1"
/>
<ImageView
android:id="@+id/ivwPackIcon"
android:layout_width="15px"
android:layout_height="15px"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<ImageView
android:id="@+id/ivwPackIcon"
android:layout_width="15px"
android:layout_height="15px"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<TextView
android:id="@+id/txtElementComments"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
</LinearLayout>
</LinearLayout>