相关疑难解决方法(0)

Android:如何将整个ImageView转换为Bitmap?

我的应用程序显示不同比例的图像,内部(centerInside)imageView调整大小.我需要的是从ImageView创建包括背景的位图(在这种情况下为黑色).

所以例如我有设备屏幕320x480,全屏imageView图像大小调整为280x480.我怎么能从它获得320x480位图?

在这个imageview的顶部,我有一些我不想包含在位图中的徽标或按钮,它们就像在顶层.我需要的只是带有图像的位图和来自某些边的黑色边框.

android image screen bitmap imageview

40
推荐指数
3
解决办法
11万
查看次数

截取整个视图的屏幕截图

我已经建立了一个基本上由HorizontalScrollView内部完成的表ScrollView.我让用户可以编辑字段.

现在我想将表保存在屏幕上,jpg,png,pdf或其他任何内容.

问题是 - 表几乎总是比屏幕大.

有没有办法制作整个ScrollView布局的屏幕截图?如果不是你认为可以做什么工作?

android screenshot

39
推荐指数
4
解决办法
4万
查看次数

如何将视图转换为位图?

我有两个视图(Textview&ImageView)FrameLayout,我想用文本保存图像.为此,我将View转换为位图.

我的xml是:

<FrameLayout 
     android:id="@+id/framelayout"
     android:layout_marginTop="30dip"
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent">

     <ImageView 
          android:id="@+id/ImageView01"
          android:layout_height="wrap_content" 
          android:layout_width="wrap_content"/>

    <TextView android:id="@+id/text_view"
          android:layout_marginTop="30dip"
          android:layout_width="wrap_content" 
          android:maxLines="20"
          android:scrollbars="vertical"
          android:layout_height="wrap_content"/>

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

android bitmap

34
推荐指数
2
解决办法
4万
查看次数

Android通过代码截取屏幕截图

这不应该是一个问题太难.我希望能够截取我的布局(视图)并通过短信发送.有人可以走我的步骤吗?

谢谢!

编辑:我想,它不一定是一个"截图",只要我们能以某种方式从视图中获取所有渲染像素.

sms android screenshot

16
推荐指数
1
解决办法
1万
查看次数

获取Android视图上包含支持Bitmap的Canvas的点的像素颜色值

我试图找出在视图上给定点获取像素颜色值的最佳方法.我有三种方式写入视图:

  1. 我用View.setBackgroundDrawable(...)设置了一个背景图像.

  2. 我使用Canvas.drawText(...),Canvas.drawLine(...)等将文本,绘制线等写入支持Bitmap的Canvas.

  3. 我通过将子对象(sprite)写入传递给View的onDraw(Canvas画布)方法的Canvas来绘制子对象(精灵).

这是我的类中的onDraw()方法,它扩展了View:

   @Override
   public void onDraw(Canvas canvas) {
      // 1. Redraw the background image.
      super.onDraw(canvas);
      // 2. Redraw any text, lines, etc.
      canvas.drawBitmap(bitmap, 0, 0, null);
      // 3. Redraw the sprites.
      for (Sprite sprite : sprites) {
        sprite.onDraw(canvas);
      }
    }
Run Code Online (Sandbox Code Playgroud)

获得像素的颜色值以考虑所有这些来源的最佳方法是什么?

graphics android view android-canvas

15
推荐指数
1
解决办法
2万
查看次数

从布局中获取位图

我正在尝试给布局充气并使用它来在图像视图上设置位图.然后,我将该imageview添加到线性布局并显示线性布局.这是我尝试过的:

public class TestActivity extends Activity {
    private static Bitmap bitMap;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout l = new LinearLayout(this);

        bitMap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(), 
                getWindowManager().getDefaultDisplay().getHeight(), 
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitMap);
        LayoutInflater inflater = LayoutInflater.from(this);
        View v1 = inflater.inflate(R.layout.main, null);
        v1.layout(0, 0, getWindowManager().getDefaultDisplay().getWidth(), 
                getWindowManager().getDefaultDisplay().getHeight());
        v1.draw(canvas);

        ImageView i1 = new ImageView(this);
        i1.setImageBitmap(bitMap);
        i1.setAdjustViewBounds(true);
        i1.setLayoutParams(new FrameLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth(), 
                getWindowManager().getDefaultDisplay().getHeight()));

        l.addView(i1);
        setContentView(l);
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有正确创建bitMap.有什么我做错了吗?

android

10
推荐指数
1
解决办法
2万
查看次数

如何将视图转换为Drawable?

我有一个View,我想将其转换为图像,以便将其存储在某个地方.但是如何将其转换View为图像?

android

9
推荐指数
2
解决办法
2万
查看次数

android将XML视图转换为Bitmap而不显示它

我正在尝试为我的地图集群设置视图.我正在从XML膨胀视图并根据群集大小设置文本,我想显示该视图.在下面的代码中,我得到一个null位图作为回报:

private Bitmap createClusterBitmap(int clusterSize) {
    View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null);        
    cluster.setText(String.valueOf(clusterSize));
    cluster.setDrawingCacheEnabled(true);
    cluster.buildDrawingCache(true);
    Bitmap bm = cluster.getDrawingCache();
    return bm;
}
Run Code Online (Sandbox Code Playgroud)

在下面的代码中我得到第四行的空指针(布局参数):

private Bitmap createClusterBitmap(int clusterSize) {
    View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null);
    TextView clusterSizeText = (TextView) cluster.findViewById(R.map.cluster);
    clusterSizeText.setText(String.valueOf(clusterSize));
    Bitmap clusterBitmap = Bitmap.createBitmap( cluster.getLayoutParams().width, cluster.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas clusterCanvas = new Canvas(clusterBitmap);
    cluster.layout(cluster.getLeft(), cluster.getTop(), cluster.getRight(), cluster.getBottom());
    cluster.draw(clusterCanvas);
    return clusterBitmap;
}
Run Code Online (Sandbox Code Playgroud)

当将其更改为以下代码时,我得到的不是错误,但没有绘制任何内容:

private Bitmap createClusterBitmap(int clusterSize) {
    View cluster = LayoutInflater.from(context).inflate(R.layout.map_cluster, null);
    TextView clusterSizeText = (TextView) cluster.findViewById(R.map.cluster);
    clusterSizeText.setText(String.valueOf(clusterSize));
    Bitmap clusterBitmap = Bitmap.createBitmap( 50,50 …
Run Code Online (Sandbox Code Playgroud)

xml android bitmap

8
推荐指数
1
解决办法
5195
查看次数

启用滚动时,调用`getDrawingCache`返回null

这段代码中缺少什么?这个代码适用于ICS.在API 8上,滚动出现,一些内容超出屏幕.在这种情况下如何获得绘图缓存?

码:

TableLayout page = (TableLayout) findViewById(R.id.page);
page.setDrawingCacheEnabled(true);
page.buildDrawingCache();

// getDrawingCache returns null...
Bitmap pageBmp = Bitmap.createBitmap(page.getDrawingCache(true));
page.destroyDrawingCache();
page.setDrawingCacheEnabled(false);
Run Code Online (Sandbox Code Playgroud)

android view drawingcache

6
推荐指数
1
解决办法
7915
查看次数

在布局 XML 中定义的谷歌地图标记

是否可以在 Layouts 文件夹(Android)中定义一个 XML 文件,在其中指定我的指针/标记的外观?例如,我想要一个图像和一个 TextView 作为标记(不是弹出窗口,而是标记本身)。

我一直在使用 Google Maps Utility Library 在 Google Maps 上使用 Clusters,但他们只有示例如何使用带有背景的普通白色标记(示例

可以说我想要他们有什么,除了周围的白板。

你知道我怎样才能做到这一点吗?

提前致谢。

编辑:

我正在尝试将本教程 与 Google Maps Utility Library (Clusters)结合起来。现在我有这个,但不起作用:

custom_cluster_marker_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="55dp"
        android:layout_height="65dp"
        android:src="@drawable/cluster" />

    <TextView
        android:id="@+id/num_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="19dp"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:text="0"
        android:textColor="#ce8223"
        android:textSize="25dp"
        android:textStyle="bold" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

MeterRender.java

private class MeterRenderer extends DefaultClusterRenderer<MyMeter> {


        private TextView mClusterTextView;

        public MeterRenderer() {
            super(c, map, mClusterManager);

            View custom_cluster_view = ((LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_cluster_marker_layout, …
Run Code Online (Sandbox Code Playgroud)

android google-maps google-maps-markers

5
推荐指数
1
解决办法
3229
查看次数

如何将linearlayout转换为图像

我想将layout它的内容(views)转换成Drawable图像?

android view android-linearlayout

4
推荐指数
1
解决办法
1万
查看次数

java.lang.IllegalStateException:无法包裹发生回收的位图错误

我试图使用以下代码来获取图像的位图,这是从相机中获取的.我使用这个概念,因为我将图像作为水印添加到拍摄的照片中.所以我只是将活动绘制为位图.

虽然我这样做我得到以下错误(无法包裹回收位图错误发生)

我想将此位图发送到另一个Activity.

如何检查我是否收到图像?

else if(v.equals(findViewById(R.id.ok_button))){


                topbar.setVisibility(View.GONE);
                menubar.setVisibility(View.GONE);
                bottom.setVisibility(View.GONE);

                View s = ml.getRootView();
                s.setDrawingCacheEnabled(true);

                b = s.getDrawingCache();
                Log.e("ok","ok");
                Intent i=new Intent(CameraActivity.this,Update.class);
                 i.putExtra("data",b);
                 startActivity(i);
      //           s.setDrawingCacheEnabled(false);
        //         s.setVisibility(View.GONE);
                 finish();
Run Code Online (Sandbox Code Playgroud)

谢谢

android

1
推荐指数
1
解决办法
5402
查看次数

view.getDrawingCache()仅在Samsung Galaxy note 8.0中返回null?

**注意:(对于书呆子)请勿将其标记为重复的问题.

  1. 是的,我知道它是什么NullPointerException.
  2. 是的我尝试view.getDrawingCache从Stackoverflow返回null答案.

我正在尝试单独为平板电脑开发绘图应用程序.我创建了一个用于绘图的自定义视图.自定义视图包含在内部ScrollView以使用户滚动图像(如果它太大).

activity_drawing.xml

 <RelativeLayout
            android:id="@+id/container"
            android:layout_marginLeft="@dimen/activity_correction_answer_horizontal_margin"
            android:layout_marginRight="@dimen/activity_correction_answer_horizontal_margin"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <in.com.hourglass.views.ImageScroll   
                android:layout_centerInParent="true"
                android:id="@+id/image_scroll"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <FrameLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <ImageView
                        android:id="@+id/image"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <in.com.hourglass.views.DrawView
                        android:id="@+id/draw_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />
                </FrameLayout>
            </in.com.hourglass.views.ImageScroll>
  </RelativeLayout> 
Run Code Online (Sandbox Code Playgroud)

因此,当完成视图上的绘图时,用户可以保存图像并进行思考Canvas.

我正在调整图像大小并将其附加到自定义视图Bitmap,并将它们保存为单个图像.整个过程很好用三星平板电脑10.1.

但是当我尝试在较低屏幕设备samsung Note 8.0中测试相同的时候.view.getDrawingCache()给我一个空的Bitmap.

我已经调试并检查了自定义视图的宽度和高度,它们指定了宽度和高度的scrollview,并且customview中也有一个位图.

Bitmap尽可能地重用以减少app堆内存使用量.

我知道,我必须对此警告采取措施:

W/View: View too large to fit into drawing cache, needs 4380332 bytes, only 4096000 available
Run Code Online (Sandbox Code Playgroud)

错误日志:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: …
Run Code Online (Sandbox Code Playgroud)

android bitmap scrollview android-canvas

1
推荐指数
1
解决办法
1815
查看次数