Articles of resize

如何在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,嘿,你现在只是像缩放图像一样大? 提前致谢。

我不希望Android自动调整位图大小

我已经在res / drawable中放置了一些位图。 在我通过BitmapFactory.decodeResource()加载位图之后,我发现它们根据密度自动resize。 这不是我想要的。 我希望他们保持原来的大小(像素大小)。 我该怎么办?

平滑调整图表和地图视图的大小

我在屏幕上有一个饼图和mapview。 在chart和mapview之间,有一个小的imageview。 当imageview移动时,图表和mapview应该会增长和缩小。 它的工作原理,但是当我移动ImageView时,应用程序正在晃动。 我希望他们的尺寸能够顺利地改变。 我认为这是由于饼图。 我怎样才能解决这个问题? 谢谢。 这是我的Java代码: final LinearLayout aboveLinear = (LinearLayout) findViewById(R.id.aboveLinear); final LinearLayout belowLinear = (LinearLayout) findViewById(R.id.belowLinear); final ImageView imageView2 = (ImageView) findViewById(R.id.imageView2); detector = new GestureDetectorCompat(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if ( aboveLinear == null || belowLinear == null […]