2014年5月28日水曜日

【アプリ開発】アイコンに多言語のテキスト追加

アイコン等の画像を用意するとき、テキスト付きのアイコンを用意する場合があると思います。

以前にも【アプリ開発】画像への描画について書きましたが、今回はボタン用のアイコンに
多言語のテキストを描画してわざわざ多言語用のアイコンを用意せずにアプリで利用しようという
方法になります(^^)

自分もよくテキスト付きのアイコンを使っていたのですが、
日本語以外の言語に対応する場合、他の言語用のアイコンを用意する必要が出てしまい、
とても面倒でした(´・ω・`)

なので、テキストなしのアイコンのみ用意して、
プログラム内で画像にテキストを描画したものをBitmapとして使う方法がとても便利でしたので、
紹介していきます♪




用意するアイコン

最近データフォルダで追加したアイコンになりますが、
データフォルダで複数選択時、画面下に表示するテキスト無しのアイコンになります。


データフォルダでの複数選択時

 


アイコンにテキストを描画してBitmapとして使用しています。
最初に用意したテキスト無しのアイコンだけで他言語用のアイコンを作成できるため、
個別に各言語用のアイコンを用意する必要がありません。




描画処理

以下の関数に読み込んだアイコンのBitmapと書き込みたいテキストを渡して、
テキストの色とサイズを指定すれば、画像の下部にテキストを追加できます。

2014年5月23日金曜日

【WEB】円形プログレス

CSSとJavaScriptとHTMLのコードだけで使えるブログ用のパーツとして使えるものが他にもありましたので、紹介します(^^)

円形のプログレスが上がったり下がったりするアニメーションをしますが、
カスタマイズすれば色々と使えるのではないかと思います。




円形プログレス









参考


というサイトで他にも色々と使ってみたいコードがあります♪

また良い物があれば紹介していきます~(^O^)/

【WEB】計算機


CSSとJavaScriptとHTMLのコードだけで使える計算機を見つけましたので紹介します(^^)
(ブログでちゃんと動くかは未確認ですが(^^;))



計算機




C
7 8 9 + 4 5 6 - 1 2 3 ÷ 0 . = x





参考


というサイトで他にも色々と使ってみたいコードがあります♪
また良い物があれば紹介していきます~(^O^)/

2014年5月9日金曜日

【アプリ開発】CSVファイル読込クラス

CSVファイルを読み込むだけの汎用的なクラスが欲しくて作成しました(^^;


CSVファイル読込クラス


/***************************************************************************
* CSVコントロールクラス
***************************************************************************/
public class CSVCtrl
{
    /***************************************************************************
    * CSVファイルから読み込んだデータリストを取得
    *
    * @param csContext        コンテキスト
    * @param strCsvFileName   CSVファイル名
    * @return 読み込んだCSVデータリスト
    *
    * @author k0j1
    ***************************************************************************/
    static public List ReadCSV(Context csContext, String strCsvFileName)
    {
        InputStream csInputStream = null;
        BufferedReader csBufReader = null;
        List sCsvList = new ArrayList();

        try
        {
            AssetManager csAsset = csContext.getResources().getAssets();
            csInputStream = csAsset.open(strCsvFileName);
            csBufReader = new BufferedReader(new InputStreamReader(csInputStream));

            // タイトル処理
            // タイトルは読み捨てる
            csBufReader.readLine();

            // データ処理
            {
                // 最終行まで読み込む
                for( String line = ""; (line = csBufReader.readLine()) != null; )
                {

                    // 1行をデータの要素に分割
                    StringTokenizer csStringToken = new StringTokenizer(line, ",");

                    // リストに保持
                    sCsvList.add(csStringToken);
                }
                csBufReader.close();
            }

        } catch (FileNotFoundException e) {
            // Fileオブジェクト生成時の例外捕捉
            e.printStackTrace();
        } catch (IOException e) {
            // BufferedReaderオブジェクトのクローズ時の例外捕捉
            e.printStackTrace();
        }

        return sCsvList;
    }
}


上記の関数で以下のような最初の1行がタイトル行であるCSVファイルを処理できます。


❏timetable.csv
番号,50音順(1:あ行、2:か行、…),地域区分,区,愛称,経路区分,経路・時刻表名,URL
1,1,1,荒川区,さくら・汐入さくら,1,運行ルート,http://yamatocreation.cocotte.jp/bus/arakawa/keiro
2,1,1,荒川区,さくら・汐入さくら,2,さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/sakura
3,1,1,荒川区,さくら・汐入さくら,3,汐入さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/sioiri
4,1,1,荒川区,さくら・汐入さくら,4,町屋さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/matiya
:

2014年5月3日土曜日

【アプリ開発】pxからdip(dp)への変換

アプリ開発をしててコード上でレイアウト調整するときなんかに
よく使う関数ですので紹介しときます(^^)




pxからdip(dp)に変換する関数(メソッド)


    /*******************************************
     * ChangeDip()
     * ピクセルからDipにサイズを変換
     * 
     * @param  ac  Activity
     * @param  nPixel 変換するピクセル値
     * @return  Dip値
     *******************************************/
    static public int ChangeDip(Activity ac, int nPixel)
    {
        final float scale = ac.getResources().getDisplayMetrics().density;
        return (int) (nPixel * scale);
    }

dip(dp)とは
ピクセル(px)は端末ごとに異なる画面密度(dpi)によっては同じピクセル値でも見えてくるサイズが変わるため、端末ごとで一定の値となるdip(=dp)に変換しています。1dipは160dpiの画面で1px、320dpiの画面で2pxです。