自定义ImageView不显示位图

时间:2012-06-06 10:43:41

标签: android android-imageview ondraw

我正在制作一个简单的罗盘视图,显示在MapView之上。 MapView和其他视图的布局在布局xml文件中声明。
我正在使用this文章作为示例。 我为罗盘视图编写了onDraw方法,但它没有显示任何内容。 Compass对象在onSensorChanged方法中失效。
为什么不显示图片?

XML布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.mapviews.MyCompass
        android:id="@+id/compass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp" />

    <com.mapviews.TransparentPanel
        android:id="@+id/transparent_panel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="3dp"
        android:padding="5dp" />

    <ImageButton
        android:id="@+id/map_zoom_out"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:contentDescription="@string/cd_zoom_out"
        android:src="@drawable/zoom_out" />

    <ImageButton
        android:id="@+id/map_zoom_in"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/map_zoom_out"
        android:contentDescription="@string/cd_zoom_in"
        android:src="@drawable/zoom_in" />

    <ImageButton
        android:id="@+id/map_center_user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/map_zoom_in"
        android:contentDescription="@string/cd_center_user"
        android:src="@drawable/directions" />

    <com.mapviews.MyMap
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="MyAPIKey"
        android:clickable="true"
        android:state_enabled="true" />


MyCompass类的一部分

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawColor(Color.TRANSPARENT);

        canvas.rotate(
                -1 * Values.accelValues[0]
                , Values.width / 10
                , Values.height / 10);

        canvas.drawBitmap(
                bitmap
                , Values.width / 10 - bitmap.getWidth() / 10
                , Values.height / 10 - bitmap.getHeight() / 10
                , paint);
    }

    public void setup(Context c) {
        paint = new Paint();
        bitmap = BitmapFactory.decodeResource(c.getResources(), R.drawable.compass1);
    }


onCreate方法中

    compass = (MyCompass) findViewById(R.id.compass);
    compass.setup(this);
    compass.bringToFront();

0 个答案:

没有答案