Android以编程方式设置图像大小

erd*_*ter 1 android widget

如何以编程方式在窗口小部件上设置图像大小?我使用此代码更改图像但我如何设置大小?

RemoteViews updateViews = new RemoteViews(EditPreferences.this.getPackageName(), R.layout.widgetmain2);
updateViews.setImageViewBitmap(R.id.ImageView00, ((BitmapDrawable)EditPreferences.this.getResources().getDrawable(R.drawable.normal_black_op100)).getBitmap());
ComponentName thisWidget = new ComponentName(EditPreferences.this, HelloWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(EditPreferences.this);
manager.updateAppWidget(thisWidget, updateViews);
Run Code Online (Sandbox Code Playgroud)

提前致谢

Jar*_*iuk 6

事实上,这是一个非常广泛的问题.它有多个答案:

  1. 通常你在layout.xml中设置适当的布局参数(width,height)和scaleType:http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType .这可以处理很多情况 - 每当设置图像时,它的缩放将根据它的参数重新计算.

  2. 但有时您需要以编程方式执行此操作.但它更复杂,因为它需要考虑屏幕的密度和位图的密度,屏幕尺寸独立的像素大小等等.这里有两点:

    • 获取正确大小的位图.这取决于您是从资源加载位图(似乎是这样),还是手动加载它.如果你想完全控制位图的大小,那么你必须要了解它是如何工作的 - 我建议阅读http://developer.android.com/guide/practices/screens_support.html,特别是创建缩放位图对象章节在运行时.
    • 在屏幕上设置位图的尺寸.如果要在运行时执行此操作,并且已经按物理像素计算了所需的大小.请记住,还有独立的像素,您需要将物理像素转换为另一个像素(在http://developer.android.com/guide/practices/screens_support.html中查看"密度无关像素"定义和计算算法.一旦知道了物理像素,您可以将LayoutParameters应用于ImageView.它将类似于:

例:

LinearLayout.LayoutParams layoutParams  = new    
         LinearLayout.LayoutParams(width_physical_pixels, height_physical_pixels);
imageView.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

重要!这里的LinearLayout就是一个例子.它应该是ImageView的PARENT类 - 因此布局参数始终是对象容器的类型而不是它们所设置的对象的类型.