Go to most recent revision |
Blame |
Last modification |
View Log
| RSS feed
package org.ligi;
import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
import android.graphics.*;
import android.os.Bundle;
import android.os.*;
import android.view.View;
import java.util.Random;
import android.view.Window;
import android.view.WindowManager;
import android.view.KeyEvent;
import android.graphics.Region.Op;
import org.bluez.*;
public class DUBwiseView
extends View
implements DUBwiseDefinitions
{
private Paint mPaint =
new Paint();
public static int LCD_CHAR_COUNT=
222;
// some images we need
private Bitmap bg_img,lcd_tiles,lcd_img
;
// pos for scrolling
private int pos=
0;
String str1=
"";
String[] lcd_lines
;
long last_run=
0;
int last_key=
0;
int wi,he
;
// Activity context;
Activity root
;
int lcd_top
;
int menu_y=
0;
public DUBwiseView
(Context context
) {
super(context
);
root=
(Activity
) context
;
lcd_lines=
new String[main_menu_items.
length];
for (int y=
0;y
<main_menu_items.
length;y++
)
lcd_lines
[y
]=
" " + main_menu_items
[y
];
// needed to get Key Events
setFocusable
(true);
}
public Bitmap resize_to_screen
(Bitmap orig,
float x_scale_,
float y_scale_
)
{
// createa matrix for the manipulation
Matrix matrix =
new Matrix
();
float x_scale,y_scale
;
if (y_scale_
!=0f
)
y_scale=
(getHeight
()*y_scale_
)/orig.
height();
else // take x_scale
y_scale=
(getWidth
()*x_scale_
)/orig.
width();
if (x_scale_
!=0f
)
x_scale=
(getWidth
()*x_scale_
)/orig.
width();
else
x_scale=
(getHeight
()*y_scale_
)/orig.
height();
matrix.
postScale(x_scale , y_scale
);
return Bitmap.
createBitmap(orig,
0,
0,
(int)( orig.
width()),
(int)( orig.
height()), matrix,
true);
}
public boolean onKeyDown
(int keyCode,
KeyEvent event
)
{
switch ( keyCode
)
{
case KeyEvent.
KEYCODE_DPAD_DOWN :
menu_y++
;
break;
case KeyEvent.
KEYCODE_DPAD_UP :
menu_y--
;
break;
case KeyEvent.
KEYCODE_DPAD_CENTER :
root.
finish();
break;
}
last_key=keyCode
;
calc_lcd
();
invalidate
();
return true;
}
@
Override protected void onSizeChanged
(int w,
int h,
int oldw,
int oldh
)
{
bg_img = resize_to_screen
(BitmapFactory.
decodeResource(getResources
(), R.
drawable.
starfield),0f,1f
);
lcd_tiles = resize_to_screen
(BitmapFactory.
decodeResource(getResources
(), R.
drawable.
lcd_green),0.05f
*LCD_CHAR_COUNT,0f
);
calc_lcd
();
}
public void calc_lcd
()
{
lcd_top=getHeight
()-lcd_lines.
length*lcd_tiles.
height();
Paint paint = mPaint
;
lcd_img= Bitmap.
createBitmap(getWidth
(),lcd_lines.
length*lcd_tiles.
height()+
100,
false);
Canvas lcd_canvas=
new Canvas();
lcd_canvas.
setDevice(lcd_img
);
lcd_canvas.
drawColor(Color.
WHITE);
int char_width=
(int)(lcd_tiles.
width()/LCD_CHAR_COUNT
);
for ( int lcd_line=
0 ; lcd_line
< lcd_lines.
length ; lcd_line++
)
for (int char_pos=
0;char_pos
<20;char_pos++
)
{
int act_char=
0;
if (char_pos
<lcd_lines
[lcd_line
].
length())
act_char=lcd_lines
[lcd_line
].
charAt(char_pos
)-
32;
if ((menu_y==lcd_line
)&& (char_pos==
0))
act_char=
30;
lcd_canvas.
clipRect(new RectF
(char_pos
*char_width,lcd_tiles.
height()*lcd_line,
(char_pos+
1)*char_width,lcd_tiles.
height()*(lcd_line+
1)),Op.
REPLACE );
lcd_canvas.
drawBitmap(lcd_tiles,
(char_pos-act_char
)*(char_width
),lcd_tiles.
height()*(lcd_line
) , paint
);
}
}
public void tick
()
{
pos--
;
pos
%=bg_img.
getWidth();
//SystemClock.sleep(50);
}
@
Override protected void onDraw
(Canvas canvas
) {
tick
();
Paint paint = mPaint
;
paint.
setAntiAlias(true);
canvas.
drawBitmap(bg_img,pos,
0 , paint
);
if ((bg_img.
width()+pos
)<(getWidth
()))
canvas.
drawBitmap(bg_img,pos+bg_img.
width(),
0 , paint
);
canvas.
drawBitmap(lcd_img,
0,lcd_top , paint
);
paint.
setColor(Color.
GREEN);
canvas.
drawText("LastKeyCode:"+last_key,
10,
10,paint
);
invalidate
();
}
}