Here is a skeleton of the class I'm currently working on.
Unfortunatly, i'm stuck on two problems and it's driving me mad !

The first problem is about the onKeyDown(KeyEvent) : I don't
understand why this method isn't called while I pressed a key on the
emulator.
The second problem deals with padding. Indeed, I'm always creating
widget using fake paddings in order to be sure my widget correctly
handle those values. Unfortunatly, I tried to extend a ProgressBar and
I had some problems because my ProgressBar is clipped.

My code is :

package com.niji.android.myhouse;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.ProgressBar;

public class ProgressWheel extends ProgressBar {

        private static final String TAG_LOG = "ProgressWheel";
        private static final Paint mPaint = new Paint();

        private float oldX;

        public ProgressWheel(Context context, AttributeSet attrs) {
                this(context, attrs, 0);
        }

        public ProgressWheel(Context context, AttributeSet attrs, int
defStyle) {
                super(context, attrs, defStyle);

                mPaint.setStrokeWidth(1.0f);
                mPaint.setColor(Color.MAGENTA);
                mPaint.setStyle(Paint.Style.STROKE);

                setPadding(5, 15, 40, 10)

        }

        @Override
        protected synchronized void onDraw(Canvas canvas) {
                /*
                 * I'm not sure the onDraw(Canvas) method from ProgressBar is
correctly
                 * implemented. Indeed. With padding values, The progressBar 
may be
"clipped"
                 */
                super.onDraw(canvas);
                canvas.drawRect(0, 0, getWidth()-1, getHeight()-1, mPaint);
        }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
                /*
                 * I don't understand why this method is not called
                 */
        int progress = getProgress();
        Log.d(TAG_LOG, "onKeyDown");
        switch (keyCode) {
            case KeyEvent.KEYCODE_DPAD_LEFT:
                Log.d(TAG_LOG, "KEYCODE_DPAD_LEFT");
                if (progress <= 0) break;
                setProgress(progress - 1);
                return true;

            case KeyEvent.KEYCODE_DPAD_RIGHT:
                Log.d(TAG_LOG, "KEYCODE_DPAD_RIGHT");
                if (progress >= getMax()) break;
                setProgress(progress + 1);
                return true;
        }

        return super.onKeyDown(keyCode, event);
    }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
                Log.d(TAG_LOG, "onTouchEvent");
                int progress = getProgress();

                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                        oldX = event.getX();
                        break;
                case MotionEvent.ACTION_MOVE:
                        if (event.getX() > oldX) {
                                setProgress(progress + 1);
                        }
                        else setProgress(progress - 1);
                        oldX = event.getX();
                        break;

                default:
                        break;
                }

                return true;
        }



}

and here is my XML layout :

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
        android:id="@+id/RelativeLayout01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android"; >

        <com.mypackage.ProgressWheel
            style="?android:attr/progressBarStyleHorizontal"
                android:layout_centerInParent="true"
                android:layout_margin="10px"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:progress="35" />

</RelativeLayout>


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to