2014年11月18日

東京メトロオープンデータ活用コンテスト

DSC00304.JPG

Android担当してます。森脇です。
最近iPhone6に機種変更したのですが、Samsung Galaxyシリーズとデザインが酷似してて実機での検証時によく間違えるので困ってます。一周回ってAppleがSamsungにデザインを寄せてきてるみたいになってますね…

さて表題の件なんですが、東京メトロオープンデータ活用コンテストなるものを皆さんご存知でしょうか。

東京メトロオープンデータ活用コンテスト

東京メトロさんが今年で10周年を迎えるということで様々な企画が催されているのですが、こちらもその中の一つになります。東京メトロ各路線や各列車の情報をオープンデータとして提供しようという試みで、欧米ではこういった取り組みはよく見られるのでついに日本でも…!というかんじで夢が広がりますね。しかも今回はアプリのコンテストということで、賞金も出るらしい…
ということで応募してみました。

東京メトロガイド - Google Play の Android アプリ

駅の情報や各駅の時刻表、列車の運行情報などを表示するアプリです。
当初はもうちょっと機能がある予定だったのですが、通常業務の合間を縫っての作業、難解なAPI仕様、そしてなぜか直前でMaterialDesignを取り入れようと思ったあの日…その他諸々の影響で今のかんじに落ち着きました。そもそも京都在住で作るのが無理あったのかもしれないですが…
残念ながらAndroidのみになりますが、もしよければダウンロードして使ってみてください。宜しくお願いします。
posted by Seesaa京都スタッフ at 12:58| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2014年08月26日

AndroidでGIFアニメ -2014.08.06 Kyoto.LT-

先日、某養豚場ミーティングに参加してきました。森脇です。

少し遅くなりましたが、先日弊社で参加した勉強会の資料を公開させていただきます。
内容としては、AndroidでGIFアニメを動かそうとあれこれがんばった話になっています。



うまくいったかと思いきや結局OS側のバグに阻まれるというAndroidならではの結果になっておりますが、一応サンプルも公開していますので興味がある方はぜひ。
https://github.com/yysk/GifImageDecoderSample
posted by Seesaa京都スタッフ at 20:20| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2014年02月25日

[Android]xmlで独自フォントを指定できるTextViewを作る

先日、某音ノ木坂学院主催のライブに参加してきました。森脇です。
今回はAndroidのTextViewのフォントを独自フォントに変更してみたいと思います。

まずソースコード内で動的に変更する場合はこんなかんじです。
 
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);

	TextView sample = (TextView)findViewById(R.id.sample);
	sample.setTypeface(Typeface.createFromAsset(getAssets(), "Koruri.ttf"));
}

フォントファイルさえ用意すれば、上記のような実装をするだけでTextViewのフォントを簡単に変更することができます。
しかし毎回これを書くのも面倒なので今回はTextViewを拡張したクラスを別途用意し、xmlから独自フォントを指定できるようにしたいと思います。

1.まずはフォントファイルを用意し、assetsディレクトリ内に配置します。
ファイル構成は下図のようになります。
fontsample00.png

今回はFONT FREEさんを参考に、小瑠璃フォント自由の翼フォントを使用させていただきました。

2.次に拡張クラス用の属性ファイルを作成します。
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <attr name="font" format="string"/>

    <declare-styleable name="CustomTextView">
        <attr name="font"/>
    </declare-styleable>

</resources>

3.TextViewを拡張したクラスを作成します。
public class CustomTextView extends TextView {

	private String mFont = "Koruri.ttf";

	public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		getFont(context, attrs);
		init();
	}

	public CustomTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		getFont(context, attrs);
		init();
	}

	public CustomTextView(Context context) {
		super(context);
		init();
	}

	/**
	 * フォントファイルを読み込む
	 *
	 * @param context
	 * @param attrs
	 */
	private void getFont(Context context, AttributeSet attrs) {
		TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
		mFont = a.getString(R.styleable.CustomTextView_font);
		a.recycle();
	}

	/**
	 * フォントを反映
	 */
	private void init() {
		Typeface tf = Typeface.createFromAsset(getContext().getAssets(), mFont);
		setTypeface(tf);
	}
}

4.最後に拡張クラスをレイアウトファイルに配置します。
拡張クラス内でフォントのファイル名を指定するだけでフォントを変更することができます。
名前空間の宣言を忘れがちなので気をつけましょう。
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fontsample="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/sample01"
        android:text="Hello world!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        style="?android:attr/textAppearanceLarge"/>

    <jp.seesaa.fontsample.app.CustomTextView
        android:id="@+id/sample02"
        android:text="Hello world!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        style="?android:attr/textAppearanceLarge"
        fontsample:font="Koruri.ttf"/>

    <jp.seesaa.fontsample.app.CustomTextView
        android:id="@+id/sample03"
        android:text="Hello world!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        style="?android:attr/textAppearanceLarge"
        fontsample:font="JiyunoTsubasa.ttf"/>

</LinearLayout>

結果はこんなかんじになります。
fontsample01.png
上から順に、Roboto(デフォルト)、小瑠璃フォント、自由の翼フォントです。
ちなみにフォントファイルを丸々アプリケーション内に配置することになるので、必然的にアプリケーションの容量は増えてしまいます。あまり多用しすぎると大変なことになるので気をつけてください。
posted by Seesaa京都スタッフ at 18:18| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする