简单布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0099cc"
tools:context="com.testzoom.app.FullscreenActivity">
<TextView android:id="@+id/fullscreen_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:textColor="#33b5e5"
android:textStyle="bold"
android:textSize="50sp"
android:gravity="center"
android:text="@string/dummy_content" />
<Button android:id="@+id/dummy_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/dummy_button"
android:layout_gravity="bottom"
/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/dummy_image"
/>
</FrameLayout>
目标 - 按下底部的按钮,使用半尺寸的屏幕截图位图设置imageview(与屏幕大小相同)。结果 - 奇怪的渲染,为什么fitXY无法正常工作?
点击处理程序:
findViewById(R.id.dummy_button).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
View view = getWindow().getDecorView();
Bitmap bmp = Bitmap.createBitmap(view.getWidth()/2, view.getHeight()/2, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.scale(0.5f,0.5f, bmp.getWidth(), bmp.getHeight());
view.draw(c);
((ImageView)findViewById(R.id.dummy_image)).setImageBitmap(bmp);
}
});
屏幕截图的结果:
请注意,此任务是合成的,所以不要问为什么我这样做,这只是问题的证明。
答案 0 :(得分:1)
问题在于缩放画布的调用。您提供的枢轴点是bmp.getWidth()和bmp.getHeight(),它们基本上位于屏幕中间。
findViewById(R.id.dummy_button).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
View view = getWindow().getDecorView();
Bitmap bmp = Bitmap.createBitmap(view.getWidth()/2, view.getHeight()/2, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.scale(0.5f,0.5f);//no pivot points
view.draw(c);
((ImageView)findViewById(R.id.dummy_image)).setImageBitmap(bmp);
}
});
答案 1 :(得分:0)
我认为渲染不像新ImageView的放置那么多。 FrameLayout中包含所有三个项目,它们无法确定视图的顺序或位置。放置新创建的ImageView的代码在哪里?