onkeydown: make sure your view is focusable and focused.

Padding: known bug, fixed in cupcake.

Sorry for being terse, sent from my phone :)

On Mar 4, 2009 9:05 AM, "Cyril M" <cyrilmott...@gmail.com> wrote:


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