gpt4 book ai didi

android - 如何在布局上绘制动态绘图

转载 作者:太空狗 更新时间:2023-10-29 13:41:25 24 4
gpt4 key购买 nike

我正在尝试制作温度计。为此,我插入了一张温度计图像(一个 png 文件)使用 ImageView 进入布局。现在我想在此图像上画一条线以显示温度读数的效果。

这是我的代码。

主.xml

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
</ImageView>
<com.focusone.Android.DrawExample.CustomDrawableView
android:id="@+id/custom_drawable_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
height='100'
/>
</AbsoluteLayout>

DrawExample.java

package com.focusone.Android.DrawExample;

public class DrawExample extends Activity {
/** Called when the activity is first created. */

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

}

}

CustomDrawableView.java

public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;

public CustomDrawableView(Context v,AttributeSet as){
super(v,as);
drawShape(as);
}
public void drawShape(AttributeSet ast) {

int x =45; int y=15 ; int width=5; int height=0 ;
height= Integer.parseInt(ast.getAttributeValue(null, "height"));
mDrawable = new ShapeDrawable(new RectShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}

现在我可以使用这个程序在温度计图像上画一条线。

但是我如何在运行时更改行的高度。由于 height=100 写在 xml 文件中,我不知道如何更改它。

请有人帮助我。

最佳答案

首先,我认为您不需要在 drawShape(AttributeSet ast) 中传递属性,只需在构造函数 CustomDrawableView() 中传递高度即可。然后正如 Chris 所说,您应该在自定义 View 中使用另一种方法,例如

public void setTemperature(int tmp){
drawShape(tmp);
invalidate(); //this will call onDraw()
}

在你的主要 Activity 中引用你的自定义 View ,这样你就可以调用它的公共(public)方法

  CustomDrawableView temperatureView = 
(CustomDrawableView) findViewById(R.id.custom_drawable_view);

temperatureView.setTemperature(50);

关于android - 如何在布局上绘制动态绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com