Androidアプリ開発日誌 3日目

AndroidStudioで新しくプロジェクトつくったら、MainActivity のレイアウトが ConstraintLayout になってました。

よく分からないのでお勉強しておきます。

ConstraintLayout

調べてみたら、2016年に追加された新しめのLayoutでした。

開発者用のページいわく、

ConstraintLayout は、Android Studio 2.2 以降に含まれている Constraint Layout ライブラリで利用できるビュー グループです。ConstraintLayout は Layout Editor とともに一から構築されているため、デザイン エディタからすべての要素にアクセスすることができ、XML を手動で編集する必要はありません。特に ConstraintLayout の制約ベースのレイアウト システムでは、ビュー グループをネストすることなく、ほとんどのレイアウトを作成することが可能です。

Layout Editor による UI の作成 | Android Studio

つまりLinearLayoutとかRelativeLayoutなんて必要なかったわ!とりあえずConstrantLayout使っとけ!という優れもの。

f:id:xterm256color:20170715003318p:plain

動画で使い方もまとめてくれてます。日本語字幕あるの便利。感謝。

www.youtube.com

基本的な使い方は

  • 使い方1: Paletteから使いたいビューをドラッグ。
  • 使い方2: 上下左右の丸ポチをドラッグして画面端なり、他のビューにつなげる。
  • 使い方3: 「マグネット」マークは「Turn On/Off Autoconnect」。有効にしておくとPaletteからドラッグした時点で勝手にConstraintsはってくれる。
  • 使い方4: 「矢印+バツ」マークは「Clear All Constraints」。Constraintを消去する
  • 使い方5: 「キラキラ」 マークを「Infer Constraints」。適当に置いたビューに対して賢くConstraintsはってくれる。これが一番便利。感動する。

という感じかな。

↓の記事が画像付きでわかりやすい。

Androidの新しいLayout、ConstraintLayoutことはじめ - Qiita

ConstraintLayout 使ってる限りは XML の中身を見る必要なさそうだけど、多少は知っておきたいので

XMLファイルを使ってビューを定義 - Android入門

これ見て勉強しておきます。

Androidアプリ開発日誌 2日目

1日目はこちら Androidアプリ開発日誌 1日目 - ネガティブログ

今日は開発する時間とれなかったので、開発環境であるAndroidStudioの整備をしてました。

プラグインの追加

Vimキーバインド使いたかったので IdeaVim というプラグインを追加しました。

プラグインの追加方法をメモしておくと

File > Settings > Plugins > Install JetBrains plugins (下の方にあるボタン) にいって、IdeaVimを検索。 Installボタンを押して再起動すればOK。Vimキーバインドが使えるようになります。やったー。

f:id:xterm256color:20170713235836p:plain

エディタのフォント変更

Myrica という日本語対応フォントが評判よろしいので入れてみました。

1〜3はターミナル上で実行です。

  1. 下のページにある Myrica.ttc zip圧縮版をダウンロードして展開。

    プログラミングフォント Myrica / Estable | Myrica (ミリカ)は、フリーなプログラミング用 TrueType フォントです。

  2. /usr/share/fonts/truetype/にMyricaというディレクトリ作って、展開された Myrica.TTC をその中に移動する。(要root権限)
  3. fc-cache -v -f というコマンドでフォントリストを更新。
  4. AndroidStudioの File > Settings > Editor > Colors & Fonts > Font を開く。
  5. [Save As] を押して適当なスキーマを作成。
  6. Show only monospaced fonts のチェックを外して、Primary font に Myrica M を選択する。フォントサイズはお好きなように。

    f:id:xterm256color:20170714001245p:plain

ちゃんと全角文字が半角文字の2倍幅になってるのも確認できました。

参考サイト:linux - A font doesn’t appear in IntelliJ’s dialog of choosing a font - Stack Overflow

日本語がインライン入力できないんだけど一旦放置しときます。

Androidアプリ開発日誌 1日目

はじめに

Androidアプリの開発をやってみたいなーと前々から思っていたので始めてみました。

以前も同じように考えては入門書読んで挫折してたので、今回は開発日誌をつけつつがんばってみます。

目標は3〜4ヶ月くらいで何かしら単純なアプリをリリースする。ということにします。

開発環境の準備

手元の環境は

です。

AndroidStudioのLinux版は「Android Studio と SDK ツールをダウンロードする | Android Studio」にありました。

プロジェクトの作成

特別なことはせず、EmptyActivityを選択してプロジェクト作成。

.gitignoreファイルをGitHubから取ってきてプロジェクトのルートフォルダに置いておきます。

wget https://github.com/github/gitignore/blob/master/Android.gitignore ${PRJ_ROOT}/.gitignore

Fragmentの実装

今日はFragmentの実装を試してみました。

最近(?)のAndroidアプリはActivityに大きな役割はもたせず、代わりにFragmentがViewを管理したほうがいいらしいです。

Android はじめてのFragment - Qiita

まずは上を参考に、上のリンクにある「レイアウトファイルからFragment追加する方法(静的な追加)」と「コードからFragmentを追加する方法(動的な追加)」のに種類を試してみました。

動的なFragment追加は、あらかじめActivityのレイアウトファイルにLinearLayoutというコンテナ(入れ物)を置いておき、そこにFragmentを追加するって形になるんですね。へー。

今日は力尽きたんでこのへんでおしまいです。

Pythonで複数の配列を同時にソート

Python使ってて、複数の配列を同時にソートしたくなることありますね。

たとえば、キー配列をもとに値配列をソートしたいときとか…

そんなときはzipをうまくつかってください。

a = [2, 0, 1]
b = ["a", "b", "c"]

# zipで二つの配列を統合
c = zip(a, b)

c.sort()

# 統合していた配列をもとに戻す
a, b = zip(*c)

print(a)
print(b)
# (0, 1, 2)
# ('b', 'c', 'a')

結果を見ると配列aをキーにしてソートされていることがわかります。

結果がタプルで得られてることに注意しましょう。

ちなみに、配列が3つ以上でもzip(a, b, c, …)と増やしていけばOKです。

もしソートに使うキー配列を変えたい場合には、itemgetter()を使うとよいです。

from operator import itemgetter

a = ["a", "b", "c"]
b = [2, 0, 1]


c = zip(a, b)

# itemgetterには何番目の配列をキーにしたいか渡します
c.sort(key=itemgetter(1))

a, b = zip(*c)

print(a)
print(b)
# ('b', 'c', 'a')
# (0, 1, 2)

これでいくらでも好きにソートできますね!以上!

Ubuntuのターミナルで丸数字がずれる問題の対処法

問題

Ubuntuのターミナルで丸数字や特殊な全角を使っていると、表示がずれる問題があります。

f:id:xterm256color:20161120202407p:plain

画像のように、丸数字とその後の文字が重なってしまっています。

原因は、丸数字の表示幅が「半角」になってしまっていること。

続きを読む