我的应用程序显示不同比例的图像,内部(centerInside)imageView调整大小.我需要的是从ImageView创建包括背景的位图(在这种情况下为黑色).
所以例如我有设备屏幕320x480,全屏imageView图像大小调整为280x480.我怎么能从它获得320x480位图?
在这个imageview的顶部,我有一些我不想包含在位图中的徽标或按钮,它们就像在顶层.我需要的只是带有图像的位图和来自某些边的黑色边框.
我已经建立了一个基本上由HorizontalScrollView
内部完成的表ScrollView
.我让用户可以编辑字段.
现在我想将表保存在屏幕上,jpg,png,pdf或其他任何内容.
问题是 - 表几乎总是比屏幕大.
有没有办法制作整个ScrollView
布局的屏幕截图?如果不是你认为可以做什么工作?
我有两个视图(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) 这不应该是一个问题太难.我希望能够截取我的布局(视图)并通过短信发送.有人可以走我的步骤吗?
谢谢!
编辑:我想,它不一定是一个"截图",只要我们能以某种方式从视图中获取所有渲染像素.
我试图找出在视图上给定点获取像素颜色值的最佳方法.我有三种方式写入视图:
我用View.setBackgroundDrawable(...)设置了一个背景图像.
我使用Canvas.drawText(...),Canvas.drawLine(...)等将文本,绘制线等写入支持Bitmap的Canvas.
我通过将子对象(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)
获得像素的颜色值以考虑所有这些来源的最佳方法是什么?
我正在尝试给布局充气并使用它来在图像视图上设置位图.然后,我将该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.有什么我做错了吗?
我正在尝试为我的地图集群设置视图.我正在从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) 这段代码中缺少什么?这个代码适用于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) 是否可以在 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) 我想将layout
它的内容(views
)转换成Drawable图像?
我试图使用以下代码来获取图像的位图,这是从相机中获取的.我使用这个概念,因为我将图像作为水印添加到拍摄的照片中.所以我只是将活动绘制为位图.
虽然我这样做我得到以下错误(无法包裹回收位图错误发生)
我想将此位图发送到另一个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)
谢谢
**注意:(对于书呆子)请勿将其标记为重复的问题.
NullPointerException
.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 ×13
bitmap ×4
view ×3
screenshot ×2
drawingcache ×1
google-maps ×1
graphics ×1
image ×1
imageview ×1
screen ×1
scrollview ×1
sms ×1
xml ×1