我正在尝试制作温度计。为此,我有一个我插入的温度计(png文件)的图像 使用ImageView进入布局。现在我想在此图像上画一条线来显示温度读数的影响。
这是我的代码。
main.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文件中,我不知道如何更改它。
请有人帮助我。
答案 0 :(得分:1)
你可以:
CustomDrawableView
setHeight(int height)
,您可以在其中更改高度值。(CustomDrawableView)findViewById(R.id.custom_drawable_view)
来获取对viewObject的引用。setHeight(x)
希望有所帮助
答案 1 :(得分:1)
首先,我认为你不需要在drawShape(AttributeSet ast)中传递属性,而只需要在构造函数CustomDrawableView()中传递高度。然后克里斯说你应该在自定义视图中有另一种方法,如
public void setTemperature(int tmp){
drawShape(tmp);
invalidate(); //this will call onDraw()
}
在您的主要活动中,引用您的自定义视图,以便您可以调用其公共方法
CustomDrawableView temperatureView =
(CustomDrawableView) findViewById(R.id.custom_drawable_view);
temperatureView.setTemperature(50);