Android-显示活动/视图的预览';内容

Android-显示活动/视图的预览';内容,android,android-layout,android-widget,Android,Android Layout,Android Widget,我正在构建一个类似电子书的Android应用程序。标准翻页、查看图像等。其中一个要求是在多个位置可以看到页面外观的预览。它将是该页面的确切内容,只是尺寸较小 我一辈子都不能让这个预览按我需要的方式运行。我编写了一个活动,它将显示播放音频或视频的控件,具体取决于在extras中传递的一些值。那很好。预览应该是此活动,但只能以较小的尺寸显示,并显示在单独的活动中。以下是我试图让活动的较小版本显示的内容: 首先,我偶然发现了文档记录不完整的ActivityGroup对象。我想我可以用它来调用活动,然后

我正在构建一个类似电子书的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>