How to draw a dynamic drawing over a layout

I'm trying to make a thermometer. For this, I have a thermometer image (png file), which I pasted into the layout using ImageView. Now I want to draw a line above this image to show the effect of the temperature reading.

Here is my code.

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);
    }
}

Now I can draw a line on top of the thermometer image using this program.

But how to change the line height at runtime. Since height = 100 is written in an XML file, I do not know how to change it.

Please help me.

+3
source share
2 answers

, 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);
+1

:

  • "" CustomDrawableView
  • setHeight(int height), .
  • (CustomDrawableView)findViewById(R.id.custom_drawable_view), viewObject.
  • , , setHeight(x)

,

+1

All Articles