我有一个无法解决的问题...
我有一个自定义的imageview,它会根据更大的尺寸改变大小——包含该视图的布局的宽度或高度。它的工作方式总是适合布局。
public class AspectRatioImageView extends ImageView {
public AspectRatioImageView(Context context) {
super(context);
}
public AspectRatioImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AspectRatioImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (getDrawable() == null) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} else {
int height = MeasureSpec.getSize(heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
if (width > height) {
width = height * getDrawable().getIntrinsicWidth() / getDrawable().getIntrinsicHeight();
} else
height = width * getDrawable().getIntrinsicWidth() / getDrawable().getIntrinsicHeight();
setMeasuredDimension(width, height);
}
}
@Override
protected void onDetachedFromWindow() {
setImageDrawable(null);
super.onDetachedFromWindow();
}
}
它的布局是这样的:
<RelativeLayout
android:id="@+id/layMap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/mFlipper"
android:layout_above="@+id/layControl" >
<com.mobiler.pogodynka.controls.AspectRatioImageView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:scaleType="fitXY"
android:src="@drawable/ostrzezenia_hydro"/>
<RelativeLayout
android:id="@+id/layMapOverlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/map"
android:layout_alignBottom="@+id/map"
android:layout_alignLeft="@+id/map"
android:layout_alignRight="@+id/map"/>
</RelativeLayout>
我正在努力实现的是,我有尺寸为1000x1000px的原始地图。在这张地图上,我有一些点。我必须在Android上显示这张地图,并在与原始地图相同的点上添加其他视图。
所以举个例子:
>
我用这个得到屏幕宽度:
public int getScreenWidth(){DisplayMetrics DisplayMetrics=new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(DisplayMetrics);int wt=DisplayMetrics.widthPixels;返回wt;}
即在Nexus 4上我有800像素
不幸的是问题来了首先,我的原始位置是点的中心,但对于视图,我只能设置顶部和左侧偏移。如果我减去它的一半大小,我会得到我的观点的新中心点。-其次是密度。。。我到底该如何在不同的屏幕上定位这个东西?我想知道这是否有效:
public int getPositionX(int imageWidth) {
Resources resources = getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
int position = (int) ((imageWidth * (X - metrics.density * 20)) / 1000);
return position;
}
我已经在NExus 4和7上检查过了,可以正常工作了。但在其他设备上——不是,新的点放错了地方。。。这个“20”是什么我不确定。我最初认为应该有一半的图像大小,但不是-如果我把“18”,那么它将是错误的对齐。。。
这是它看起来的样子:-它应该看起来怎么样-http://imageshack.com/a/img560/9417/6mz8.png-它不应该看起来怎么样-http://imageshack.com/a/img24/2822/2u6p.png
有人能帮我解决这个问题吗?
我设法做到了。看来我的方法不错。
要通过适当的像素值来抵消ImageView,我只需要将其宽度/高度的一半(以获得中心)相乘,并从原始缩放位置减去它。
DisplayMetrics metrics = getResources().getDisplayMetrics();
final int offset = (int) (36/2 * metrics.density);
然后设置正确的偏移量:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(marker.getPositionX(mMap.getWidth()) - offset,
marker.getPositionY(mMap.getHeight()) - offset, 0, 0);
point.setLayoutParams(params);
其中getPosition根据1000px映射将位置缩放到实际设备大小:
public int getPositionX(int imageWidth) {
int position = (int) ((imageWidth * X) / 1000);
return position;
}
我该怎么做?
我对图像进行了收缩缩放,但是当我第一次加载应用程序时,整个图像不可见,只有一部分。图像填充了屏幕的宽度,但其上下都有空白。此外,当缩放图像时,图像变得非常短。纵横比应保持不变。 我希望在应用程序加载时使整个图像可见,然后我希望能够用两根手指缩小图像,其中图像不会小于屏幕的大小,以便屏幕始终充满(图像是地图)。 为了放大,图像应该超出手机屏幕的宽度和高度。这样我就可以平移过去查看地图的细节。 任何帮
在用图像创建mp4幻灯片时,我在网上为zoompan提供了一些示例,但我仍然没有完全掌握如何使它们从图像中的某个位置开始。下面是典型的命令: ffmpeg-i image-000。jpg-filter_complex“color=c=black:r=60:s=1920x1080[demo];[0:v]格式=pix_fmts=yuva420p,比例=8000:-1,zoompan=z='min(zo
我在RShiny中的中有一个地图,其中绘制了标记,一旦我单击一个标记,它就会在地图上添加圆圈,显示所有与标记相关的点。 我想做的是设置地图的缩放/视图,使所有相关的圆圈都可见。 标记的圈数因标记而异,有些标记有1或2个圈,而有些标记有更多圈。此外,圆圈的位置在美国各地不同,所以它们可以放在一个城市或另一个州。 map=带标记的原始映射Df=lng图中所选标记相关性质的圆的lng 我想设置缩放级别,
问题内容: 改变的大小的图像在GWT部件改变所述图像元素的大小,但不重新调整屏幕上的图像。因此,以下操作将无效: 这是因为GWT 通过使用CSS 将HTML 元素的设置为图像来实现其Image小部件。 如何获得要调整尺寸的实际图像? 问题答案: 我看到了此博客条目,该条目通过使用GWT DataResource而不是ImageResource解决了问题。事实证明,如果您按以下方式使用它,则Imag
以下是CardView的XML代码: 我尝试对ImageView(和LinearLayout)的属性使用wrap_content,并尝试包含属性android: caleType="fitXY",但它没有帮助,似乎没有任何效果。 谁能帮我一下吗?我非常感谢您的每一句评论,也非常感谢您的帮助。