I prefer you being terse and giving understandable answers than no one
answering me :p. Thanks ;)
On 4 mar, 18:09, Romain Guy wrote:
> 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" 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 :
>
>
>
> android:id="@+id/RelativeLayout01"
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> xmlns:android="http://schemas.android.com/apk/res/android"; >
>
> 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" />
>
>
--~--~-~--~~~---~--~~
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