0,0 → 1,177 |
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(); |
} |
} |