如何获取用于创建位图的图像视图大小?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我想创建一个显示图表的小部件(不是应用程序)。

经过长时间的研究,我知道我可以用Canvas,Imageviews和Bitmap来做到这一点。

我画的画布应该与Widget Size相同。

所以问题是:我如何知道小部件的大小(或imageview大小),以便我可以将它提供给函数

Bitmap.createBitmap(width_xx,height_yy,Config.ARGB_8888);

代码片段:在定时器运行方法中:

@Override
    public void run() {
        Bitmap bitmap = Bitmap.createBitmap(??, ??, Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);

        //create new paint  
        Paint p = new Paint();
        p.setAntiAlias(true);
        p.setStrokeWidth(1);

        //draw circle
        //here i can use the width and height to scale the circle
        canvas.drawCircle(50, 50, 7, p);
        remoteViews.setImageViewBitmap(R.id.imageView, bitmap);
提问于
用户回答回答于

请看一下方法:

public void onAppWidgetOptionsChanged (Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)

每次启动/调整小部件大小时都会调用它。

获取小部件的宽度/高度可以如下所示:

newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)

用户回答回答于

从我所了解到的情况来看,你只能在Android 4.1+上计算widget的尺寸。在较低的API上时,你必须使用静态维度。关于小部件尺寸:应用小部件设计指南

int w = DEFAULT_WIDTH, h = DEFAULT_HEIGHT;

if ( Build.VERSION.SDK_INT >= 16 ) {
    Bundle options = appWidgetManager.getAppWidgetOptions(widgetId);

    int maxW = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
    int maxH = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

    int minW = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
    int minH = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);

    if ( context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ) {
        w = maxW;
        h = minH;
    } else {
        w = minW;
        h = maxH;
    }
}

扫码关注云+社区