フリープログラマー日記

iOS,アンドロイド開発を気ままにしながら生きてるおじさんのブログです。

第8回 文字入れ(Android版)

もとの画像のように大きな文字で、4つのメニュー文字を入れてみます。

あんまり時間がなかったので、今日はAndroid版だけです。

mainMenu.javaの内部関数として書いています。

    void menuBigChar(String string,int width, float y, int position, Canvas canvas ) {

        // この関数は緑色の文字を大きめのサイズで右に傾けた表示をするように特化しています。
        // 引数は、表示文字、画面幅、上下位置(y座標)、ポシション(左0、右1)

        final float charSize = width * 0.1f;   // サイズは横幅の10%くらい

        // android では Paintクラスを使って色やスタイルを決めていく
        final Paint paint = new Paint();

        // 色の指定
        paint.setColor(Color.GREEN);

        // 文字サイズの指定
        paint.setTextSize(charSize);

        float positionX;        // 文字を配置するための基準のx座標
        if (position == 1) {
            paint.setTextAlign(Paint.Align.RIGHT);
            positionX = width*0.95f;
        } else {
            paint.setTextAlign(Paint.Align.LEFT);
            positionX = width*0.05f;
        }

        // 文字の傾き
        paint.setTextSkewX(-0.3f);

        canvas.drawText(string,positionX, y,paint);
    }


単純な書き方をしています。
プログラムは人に読んでもらうものではないのかもしれないけど、自分のためにも分かりやすく書くのがいいんじゃないでしょうか?

さて、今回のこの関数、緑の大きな文字を右か左に配置する以外に他の使い道はありません。参考にしてもらえるとしたら、文字サイズの決めるところでしょうか。横幅を基準にしているので、どんな端末でもほぼ同じように表示できると思っています。


この関数の呼び出し部分です

// コマンド4箇所

        final float upper = height/2 - width*0.32f;
        final float lower = height/2 + width*0.38f;

        menuBigChar("Entry", width, upper,0,canvas);
        menuBigChar("Setting", width, upper,1,canvas);
        menuBigChar("Run", width, lower,0,canvas);
        menuBigChar("Record", width, lower,1,canvas);

f:id:momonga117:20180509203254p:plain

ちょっと、文字が細いのが不満。
太字設定しても良かったかな。

恥ずかしいスペルミスは目をつむってください。