« android LatTime にGPXファイルインポート機能開発中! | トップページ | GooglePlay(android market)アップロードエラー対応 »

2012年2月23日 (木)

androidソフトカーソルキーをつくった!

Device20120223140832 自分の初めてのandroid機HT-03Aには便利なトラックボールがあった。
最近のスマートフォンはタッチ専用になってフリックの苦手な自分にはカーソルを移動に苦労する。

それでソフトカーソルキー(十字キー・方向キー)なるものをつくってみた。

1.カーソルキー

// cx;中心x座標,cy;中心y;座標,cr;半径,cw;キー幅
void cursorKey(float cx,float cy,float cr,float cw){
    paint.setColor(Color.argb(127, 200, 200, 200));
    paint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(cx,cy,cr+1,paint);
    paint.setColor(Color.argb(127, 255, 255, 255));
    Arrow(cx,cy-cr,cx+cw/2,cy-cr+cw,cx-cw/2,cy-cr+cw);    //up
    Arrow(cx,cy+cr,cx+cw/2,cy+cr-cw,cx-cw/2,cy+cr-cw);    //down
    Arrow(cx-cr,cy,cx-cr+cw,cy-cw/2,cx-cr+cw,cy+cw/2);    //left
    Arrow(cx+cr,cy,cx+cr-cw,cy-cw/2,cx+cr-cw,cy+cw/2);    //right
    canvas.drawCircle(cx,cy,cw/2,paint);
}
//三角矢印三点(x1,y1),(x2,y2),(x3,y3)
void Arrow(float x1,float y1,float x2,float y2,float x3,float y3){
   Path path=new Path();
   path.moveTo(x1, y1);
   path.lineTo(x2, y2);
   path.lineTo(x3, y3);
   canvas.drawPath(path, paint);
}

 

2.呼び出しとタッチイベントの処理

void gMain(){
//十字キー表示・非表示
if(cursorsw==1)cursorKey(cx,cy,cr,cw);
}
//タッチイベント
@Override
public boolean onTouchEvent(MotionEvent event) {
    int touchAction=event.getAction();
    if (touchAction==MotionEvent.ACTION_DOWN) {
        touchDown=true;
        touchX=(int)(event.getX());
        touchY=(int)(event.getY());
    }
       canvas=holder.lockCanvas();
       onTick(canvas);
       holder.unlockCanvasAndPost(canvas);
    return true;
}
//キャンバス
    private void onTick(Canvas canvas) {
    if(touchDown){
    touchDown=false;
            if(cursorsw==1)MenuPlus();
    }
void MenuPlus(){
if((touchX>cx+cw/2&&touchX<cx+cr)&&(touchY>cy-cw/2&&touchY<cy+cw/2)){
(RIGHT処理)
return;
}
if((touchX>cx-cr&&touchX<cx-cw/2)&&(touchY>cy-cw/2&&touchY<cy+cw/2)){
(LEFT処理)
return;
}
if((touchX>cx-cw/2&&touchX<cx+cw/2)&&(touchY>cy+cw/2&&touchY<cy+cr)){
(DOWN処理)
return;
}
if((touchX>cx-cw/2&&touchX<cx+cw/2)&&(touchY>cy-cr&&touchY<cy-cw/2)){
(UP処理)
return;
}
if((touchX>cx-cw/2&&touchX<cx+cw/2)&&(touchY>cy-cw/2&&touchY<cy+cw/2)){
(決定処理)
return;
}
    }

|

« android LatTime にGPXファイルインポート機能開発中! | トップページ | GooglePlay(android market)アップロードエラー対応 »

Android/Chrome」カテゴリの記事

コメント

サブルーチンにするほどのものでないのでここのをコピー&ペーストで使って頂きたい。

投稿: 大和 | 2012年3月24日 (土) 17時16分

このソフトカーソルキー、すごく欲しいです。
どうか配布していただけないでしょうか?

投稿: ky | 2012年3月24日 (土) 09時11分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/112439/54052789

この記事へのトラックバック一覧です: androidソフトカーソルキーをつくった!:

« android LatTime にGPXファイルインポート機能開発中! | トップページ | GooglePlay(android market)アップロードエラー対応 »