Я пытаюсь сделать термометр. Для этого у меня есть изображение термометра (файл 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-файле, я не знаю, как его изменить.
Пожалуйста, помогите мне.
Кстати .. почему вы просто не расширили класс ImageView? Тогда вам не придется заботиться о рисовании изображения. Вы можете сосредоточиться на рисовании своей фигуры. – Chris
Я бы попробовал FrameLayout. Первое изображение, а затем пользовательский вид сверху, поскольку AbsoluteLayout устарел. Чтобы поместить термометр в любом месте экрана, вы можете вставить этот FrameLayout в RelativeLayout, установив его верхнее и левое поле. – Lumis