首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取用于创建位图的图像视图大小

获取用于创建位图的图像视图大小
EN

Stack Overflow用户
提问于 2012-02-27 02:25:32
回答 8查看 3.6K关注 0票数 17

我是一名具有Windows背景的程序员,我对Java和Android的东西是新手。

我想创建一个显示图表的小部件(而不是应用程序)。经过长时间的研究,我知道我可以用Canvas,imageviews和Bitmap做到这一点。我绘制的画布应该与Widget的大小相同。

如何知道小部件大小(或图像视图大小),以便将其提供给函数?

代码语言:javascript
复制
Bitmap.createBitmap(width_xx, height_yy, Config.ARGB_8888);

代码片段:

在timer run方法中:

代码语言:javascript
复制
@Override
public void run() {
    Bitmap bitmap = Bitmap.createBitmap(??, ??, Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);

    // Create a 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);
EN

回答 8

Stack Overflow用户

发布于 2014-01-31 05:50:31

据我所知,你只能在Android 4.1+上计算部件尺寸。当使用较低的API时,您必须使用静态维度。关于构件尺寸:App Widget Design Guidelines

代码语言:javascript
复制
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;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2014-03-20 13:11:59

看一下这个方法:

代码语言:javascript
复制
public void onAppWidgetOptionsChanged (Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)

它将在您每次启动/调整小部件大小时被调用。

获取小部件的宽度/高度可以按如下方式完成:

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2014-02-20 19:19:18

我目前使用的是:

代码语言:javascript
复制
private void run() {

    int width = 400, height = 400;

    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(bitmap);

    Paint p = new Paint();
    p.setColor(Color.WHITE);
    p.setStyle(Paint.Style.STROKE);
    p.setStrokeWidth(1);
    p.setAntiAlias(true);

    c.drawCircle(width/2, height/2, radius, p);

    remoteViews.setImageViewBitmap(R.id.imageView, bitmap);

    ComponentName clockWidget = new ComponentName(context,
    Clock_22_analog.class);
    AppWidgetManager appWidgetManager = AppWidgetManager
    .getInstance(context);
    appWidgetManager.updateAppWidget(clockWidget, remoteViews);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9455819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档