Articles of resize

android:运行时resize的图像质量

我想使用drawBitmap()方法显示图像。 但在我想根据屏幕尺寸resize之前。 我的结果图像质量有问题。 您可以在下面看到屏幕截图和测试代码。 如何在运行时以高质量调整图像大小? 谢谢你的解决方案。 原始图片: alt text http://img.androidcookie.com/android/gradient.png 设备上的结果屏幕截图: alt text http://img.androidcookie.com/android/device.png import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Rect; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import java.io.IOException; import java.io.InputStream; public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout container = (LinearLayout) findViewById(R.id.container); container.addView(new View(this) […]

为什么Galaxy Nexus / Android 4上的视口标签不起作用?

我正在开发一个webApp,它应该调整到设备可能具有的任何屏幕尺寸。 在iOS和较旧的Android版本上,视口标记工作正常。 屏幕上的图片始终resize以适合屏幕。 (如下所述: https : //developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW19 ) 在Galaxy Nexus(Android 4.0)上它无法运行。 在左侧和右侧约20px空间,我不知道他为什么这样做。 我的viewport标签如下所示: 无论我对标签做了什么改变,空间总是存在,内容不适合屏幕。 我已经制作了一个示例页面来向您展示效果: http : //easyeve.w3y.de/link/index.html 如果您在iPhone上打开此链接,内容完全适合(您将看不到任何黄色=正文),文档宽度为320px。 在Galaxy Nexus上,您将看到黄色空间,文档宽度为360px(正好是显示分辨率的一半)。 这应该是320px! 你有这个问题吗?有办法解决它吗? 更新:我在Galaxy Note / Android 2.3.6上发现了同样的问题因此它不是Android 4的问题。 它与我猜的大屏幕尺寸有关..

如何在Android中使用双三次插值在canvas上绘制和缩放位图?

我想在canvas上绘制一个比它更大的位图。 我可以使用canvas.drawBitmap(bitmap,null,destRect,null); 但是如果源图像比目标矩形小得多,则结果是像素化的,质量很差。 如何使用双线性或双三次重采样绘制我的位图? 任何帮助将不胜感激,thanx。

大小更改后,自定义ViewGroup内的视图无法呈现

我遇到了一个让我难过的问题,我希望有人可以给我一些指示。 我正在使用一个使用自定义ViewGroup的应用程序(实际上是一个包含RelativeLayout的FrameLayout)来呈现事件日历。 日历中的事件表示为视图,其大小根据事件的持续时间和包含视图的大小而定。 我遇到了调整包含FrameLayout大小时发生的问题。 当前实现将删除表示事件的所有视图,并尝试添加新事件并根据FrameLayout的当前大小计算其大小。 这项工作是通过View的onSizeChanged()方法触发的,该方法在FrameLayout中被覆盖。 调整视图大小时,将执行此代码并更新视图,但是,它们实际上都不会在屏幕上呈现… FrameLayout中包含的视图根本不可见。 如果我在hierarchyviewer工具中加载视图,它们是视图树的一部分,并在概述中列出它们应该位于的位置,但它们不会显示。 (请注意,视图在FrameLayout的初始渲染中是可见的……只有在resize后它们才会消失。) 看来resize期间的事件顺序如下: onMeasure() onMeasure() onSizeChanged() onLayout() 重置视图后调用requestLayout()(在onSizeChanged()内)似乎没有任何效果。 但是,如果在调用requestLayout()之前导致一些延迟,则视图将变为可见。 我可以通过生成线程和hibernate来创建这种延迟,或者通过创建一个虚拟按钮来简单地调用requestLayout()并在调整自己resize后按下它,或者甚至在onSizeChanged()的末尾放置这个丑陋的黑客: post(new Runnable() { public void run() { requestLayout(); } }); 当我使用这个hack时,包含的视图是可见的,事件的顺序如下: onMeasure() onMeasure() onSizeChanged() onLayout() onMeasure() onMeasure() onLayout() 因此,似乎强制第二个度量传递(在视图树被修改之后)使得包含的视图应该是可见的。 为什么延迟对requestLayout()的调用对我来说这是一个谜。 谁能提供任何关于我做错的指示? 我意识到,如果不查看一些代码,这有点难以理解,因此我创建了一个小型示例应用程序,它展示了我的问题并使其在Github上可用: https://github.com/MichaelSims/ViewGroupResizeTest 我上面提到的黑客致力于一个单独的分支: https://github.com/MichaelSims/ViewGroupResizeTest/tree/post-runnable-hack 如果我能提供任何其他信息,请提前通知我并提前致谢。

适用于Android和Java的image processing库

我目前正在开发一个小项目,该项目将从URL加载图像,resize并使用指定的调色板将其颜色深度更改为仅16种颜色。 对我来说主要的问题是,我想要一个程序,我可以在Android设备和台式计算机上使用它。 你知道一个适用于两个系统的好的image processing库吗? 提前致谢。

如何在onSizeChanged中设置大小和布局?

我不能让我的元素,例如ListView ,正确resize。 我有一个ListActivity用于搜索,带有仪表板,编辑框和列表视图。 这个想法是在键盘显示时隐藏操作栏。 我扩展了LinearLayout ,以监听视图大小的变化( 这里推荐): public class SizeChangingLinearLayout extends LinearLayout { //… @Override protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld) { View actionbar = mainView.findViewById(R.id.actionbar); if (yNew > yOld) actionbar.setVisibility(View.VISIBLE); else if (yNew < yOld) actionbar.setVisibility(View.GONE); super.onSizeChanged(xNew, yNew, xOld, yOld); } } 操作栏的隐藏/显示按预期工作,但ListView下方与隐藏操作栏的高度相同。 只要任何图形发生变化(例如在编辑框中写入), ListView填补空白。 隐藏键盘时,反向出现类似的行为。 [编辑] 更改其他布局时也会出现同样的问题。 更改onSizeChanged中事物的Visibility直接显示,但在其他一些用户操作重绘这些视图之前,不会显示更改大小和边距。 无效在onSizeChanged无效。 […]

如何检测布局resize?

Dianne Hackborn在几个线程中提到,您可以检测布局何时resize,例如,当软键盘打开或关闭时。 这样一个线程是这个… http://groups.google.com/group/android-developers/browse_thread/thread/d318901586313204/2b2c2c7d4bb04e1b 但是,我不理解她的回答:“通过所有相应的布局遍历和回调调整视图层次结构。” 有没有人有进一步的描述或如何检测这个的一些例子? 我可以链接哪些回调以便检测到这个? 谢谢

在运行时调整图像大小时的质量问题

我在磁盘上有一个图像文件,我正在调整文件大小并将其作为新的图像文件保存回磁盘。 为了这个问题,我没有将它们带入内存以便在屏幕上显示它们,只是为了调整它们并重新保存它们。 这一切都很好。 但是,缩放后的图像上有伪像,如下所示: android:运行时resize的图像质量 它们会因为这种失真而被保存,因为我可以将它们从磁盘上取下并在计算机上查看它们,但它们仍然存在同样的问题。 在将图像加载到Bitmap对象以将位图解码到内存时,我使用的代码类似于此奇怪的内存不足问题 : BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(imageFilePathString, options); int srcWidth = options.outWidth; int srcHeight = options.outHeight; int scale = 1; while(srcWidth / 2 > desiredWidth){ srcWidth /= 2; srcHeight /= 2; scale *= 2; } options.inJustDecodeBounds = false; options.inDither = false; options.inSampleSize = scale; Bitmap […]

在Android中调整Drawable大小

我正在为进度对话框( pbarDialog )设置一个drawable,但我的问题是我想每次调整drawable的大小,但无法弄清楚如何。 这是一些代码: Handler progressHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { // some more code case UPDATE_PBAR: pbarDialog.setIcon(mAppIcon); pbarDialog.setMessage(mPbarMsg); pbarDialog.incrementProgressBy(mIncrement+1); break; } } }; pbarDialog.show(); Thread myThread = new Thread(new Runnable() { public void run() { // some code for (int i = 0; i < mApps.size(); i++) […]

调整图像尺度android上的IMAGEVIEW

我有一个在android中的ImageView内的图像。 我使用缩放types(MATRIX)缩放图像通过代码类似于这样的: mtrx.postScale(scale, scale); imageView.setImageMatrix(mtrx); imageView.setScaleType(ScaleType.MATRIX); imageView.invalidate(); 现在,这适当调整ImageView中包含的图像的大小,这很好,但我需要的是将图像重新定位到imageview中的位置0,0,然后将imageView自身调整为缩放图像的大小。 到目前为止,我想出的每个想法都试图重复使用相同的imageView似乎不工作,或者我只是做错了什么。 是我唯一的方法来完成这个摧毁imageview,调整位图大小,创build一个新的imageview包含新的位图创build的规模和添加回来的布局? 我真的不想这样做..我正在碰撞16兆堆堆的限制,因为它是与事情。 如何告诉matrix将图像移动到imageView的0,0位置(imageView最初是用缩放types中心创build的,缩小后图像变小了吗?那我该如何告诉imageView,嘿,你现在只是像缩放图像一样大? 提前致谢。