【Android】strings.xml内でプレースホルダが使える

はじめに


Androidアプリの開発をしていると文字列のリテラルなどはstrings.xmlに書くと思います。これは多言語アプリを開発してる場合は特にそうだと思います。
少しそれますが、日本だけで個人プロジェクトの様な場合はコードに直接書く場合もあるかもしれませんね。

そんなstrings.xmlですが、とある多言語化対応しているアプリを開発していてふと困ったことが起きました。

例えば画面上に

これには2つの問題があります
This has 2 problems

という表示をしたいと考えた場合を例に考えてみます。

最初、プレースホルダが使えることを知らなかった僕は

ja/strings.xml


strings.xml


それでJavaのロジックの部分で

なんてことをしてしまってました!

そう、多言語どうのと言うよりstringsの文字列中に変数使いたい場合こんなに面倒なことしなきゃいけないのか。
という少し別の問題に気がついたのです。多言語化のアプリの場合この面倒が対応する言語の数だけ倍増するということですね。それはそれで問題です。

解決方法


いろいろ調べると以下のようにできそうです。

ja/strings.xml


strings.xml




これはもちろんprintf関数などにも使われる記法に準拠していて、今回の例では数字を使いましたが、文字列の場合はdとなっている部分をsに変更するだけです。

最後に


このプレースホルダを知っているだけで、奇妙な文字列連結からも、冗長なstrings.xmlの追記からも救われます。
こういう細かいところをあんまり意識してこなかったですが、多言語対応アプリを開発している時にめんどくささが倍増して押し寄せて来たことで意識できるようになりました。

たまにはいつもと違ったことしてみるのも勉強になりますね。

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

スポンサーサイト

Tag:Android  Trackback:0 comment:0 

【AndroidStudio】外部のaarをプロジェクトに取り込む方法

はじめに


広告配信の会社が提供する広告SDKや特殊なハードウェアとアプリの連携サービスなどを提供している会社のSDKなど、外部にSDKとして仕組みを提供している会社さんは、取り込んでもらいやすいようにaarなどの形式にして用意してくれていることがあります。

とは言ったものの改めてaarを取り込むのどうやるんだっけ?と忘れていたのでメモしていきます。
今回の例ではExternalSDK.aarというaarファイルが手元にあってそれをプロジェクトに取り込むという想定で進めていきたいと思います。

プロジェクトレベルのbuild.gradleを変更




アプリケーションレベルのbuild.gradleではないので気をつけて下さい。

アプリケーションレベルのbuild.gradleを変更




nameでファイルの拡張子以外を、extで拡張子をしています

さいごに


以上で外部のaarをAndroidStudioでプロジェクトに取り込む方法でした

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

Tag:Android  Trackback:0 comment:0 

【Android】RecyclerView.AdapterでnotifyItemRemovedするときは気をつける

はじめに


Androidアプリの開発するとき何かの一覧表示をするような機能を実装する場合、実装方法としてListViewからRecyclerViewにすっかり置き換わったような気がします。昔のアプリを触る場合などを除いて新しく作る場合などは特にそうですね。
今回はRecyclerViewを使って一覧のある要素を消す時に注意しなければ行けないポイントを紹介します。

具体例





細かい処理は全て割愛しますが、上記のようにAdapterに対して要素を消すメソッドを用意して、一覧からposの位置にあるデータを消せるようにしたとします。

これだけで見た目は削除されていますが、実はハマりどころがあります。
たとえば2個目のアイテムを削除したあとに4個目(2個目が消える前の5個目)を削除しようとすると、上記の処理だけでは消した要素以降の順番が消される前のままなので、順番がずれてしまっていて意図しない要素が削除されてしまうことになりかねません。

解決方法として以下のメソッドを呼び出します。



このnotifyItemRangeChangedを呼び出すことで今削除されたpos以降のアイテムたちに自分たちのpositionが変わっていることを通知することができます。

念のため最終的なコードにしてみます。



最後に


この問題の本当に怖いところは(notifyItemRangeChangedを呼ばずに)削除した後にスクロールなどして、削除された要素の数個の要素が一度画面から離れてしまうとこのズレた状態が再現しないことです。
連続した要素が消されたりする場合などに気をつけなければいけないので注意が必要です。
ListViewを使っていた頃(ちょっと昔ですが…)に比べると柔軟に処理ができるようになった感触はあるものの気をつけないといけませんね。

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

テーマ : プログラミング
ジャンル : コンピュータ

Tag:Android  Trackback:0 comment:0 

【Android】Android TwitterBootstrapのBootstrapTextにテキストとFontAwsomeIconの両方を設定する方法

はじめに


デザインができないエンジニアが「ほぼ、間違いではないだろう」デザインを簡単に実装できるTwitterBootstrapという仕組みがあるんですが、Webだけだと思いきやAndroidのネイティブでもあるので普段から使わせていただいてます。

Bearded-Hen/Android-Bootstrap

今回は導入などは割愛させて頂き、FontAwsomeのアイコンとテキストを同時に設定する方法を紹介します。
知らなくてちょっとハマりました。

Javaからテキストとfont awesome iconを設定する





BootstrapText.Builderに対してaddFontAwesomeIconとaddTextの両方を続けて実行しなければいけないのがポイントです。

layoutのxmlでテキストとfont awesome iconを設定する方法



Javaで設定する方法よりは直感的です。



このようにapp:bootstrapTextにfont-awsomeを指定しつつテキストを指定するだけです。

おわりに


TwitterBootstrapはデザイナーが居ないチームにとってはかなり有り難い仕組みだと思うのでうまく使っていけるといいですね。こういった細かいTipsも気が付き次第残せていければと思います。

ちなみにFontAwsomeのアイコンは以下のリンクにありますのでご参考まで。
Font Awesome Icons

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

テーマ : プログラミング
ジャンル : コンピュータ

Tag:Android  Trackback:0 comment:0 

【Android】ActionBarの影を消す

ActionBarの直下に付いている影を消す方法です。

res/values/styles.xml


以前はこれだけでも行けたと思ったんですが。。。
アプリのAPIレベルのターゲットを21未満も対応している場合は以下のようにelevationを0にしてあげないとダメみたいですね。



とりあえず解決したので残しておきます。

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

テーマ : プログラミング
ジャンル : コンピュータ

Tag:Android  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる