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

时间:2011-07-03 07:42:44

标签: 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);

提前致谢

1 个答案:

答案 0 :(得分: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。它将类似于:
  3. 示例:

    LinearLayout.LayoutParams layoutParams  = new    
             LinearLayout.LayoutParams(width_physical_pixels, height_physical_pixels);
    imageView.setLayoutParams(layoutParams);
    

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