寒川アクアブログ

美容師しながらアプリ開発していて水草が趣味の私のブログです

「友達に紹介する」機能を実装する

個人でアプリを開発している場合、 なかなかユーザー数が増えないのが悩みのタネです。インパクトのあるゲームなら、ツイッターによる拡散やユーチューバーが紹介したりすると、 爆発的にダウンロードが増えたりもしますが、堅実なツール系のアプリだと、そ…

PreferenceActivityに、空のボタンを実装する

PreferenceActivityでは、チェックボックスやスイッチを簡単に実装できますが、 一つの行にタイトルだけを表示し、ボタンのようにタップしたら何かを実行したい。 そのような領域を作成するには、PreferenceScreenを利用します。 xmlでPreferenceScreenを配…

フリック操作を検出する方法

ユーザーによるフリック操作の検出と、その方向を検出する方法の例 変数の定義 private GestureDetector gestureDetector; private enum Type { UP, DOWN, RIGHT, LEFT, } 方向を表す上下左右の4種類の列挙型を定義します。 フリックの方向によって、これら…

Androidアプリ タイマープラス(無料・有料)

タイマープラス Androidアプリ 無料・有料 play.google.comお料理に、勉強に、ヨガやエクササイズに・・・etc。 タイマープラスは、シンプルなキッチンタイマーと、簡単に使いこなせる便利な機能を備えています。 無料版・有料版ともに、同一の機能について…

shapeで定義した図形の色を動的に変える方法

xmlでshapeにより定義した図形に、動的にカラーフィルターをかける方法です 以下のようなshapeのリソースを、後述するリニアレイアウトのバックグラウンドに指定しているとします。 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="5dp" /> <stroke android:width="2dp"/> </shape> コードから、上のshapeの図形にカラーフィルターをかけてい…

Toolbarのメニューアイコンの色を変える方法

Toolbarの右側に並ぶメニューアイコンの色を変える方法です アプリの外観を動的に変える機能を持ったアプリなどは、 メニューアイコンの色も変えると、統一感や、洗練された印象を与えることができます。メニューアイコンは、以下の方法で、色や透明度を変え…

フォントサイズを自動調整するテキストビュー

テキストビューに文字列を表示させる際、 文字列がテキストビューの縦・横幅にぴったり納まるように フォントサイズを自動調整するテキストビューです。こちらのサイトを参考にさせていただきました! 思った通りのレイアウトができ、本当に助かりました。あ…

計算結果に”E”が含まれる場合

doubleからStringに変換したときに、計算結果に”E”の文字が含まれて表示される場合の対処 一見、エラー(ERROR)の「E」では、と思うかもしれませんが、これは桁数が大きくなっても正確な値を表すための表現で、Eより左の数 × 10 の (Eより右の数 乗)を表し…

ボタンをタップした時に動的に色を変える方法

たとえばカラーのカスタマイズが出来るアプリのように、 アプリ内から動的にボタンの色を変更した後、その色に基づいて タップした時に色を変える方法です。ボタンを”押した感”を演出します。ColorTintListや、セレクター等を使わずに、 ビューの色を取得 → …

FragmentDialogを使う

備忘録は、確認が完全でないため、不確かな情報が含まれる場合があります。 フラグメントダイアログを継承した、独自のダイアログの作成方法です フラグメントダイアログは、newInstanceでインスタンス化する。 また、その際に任意のパラメーターを定義する…

NotificationCompat 内容を一部更新する

NotificationCompatを利用したノーティフィケーションの発行、部分的な更新の方法 通知が出るときのアニメーション無しに、通知の一部を更新する方法です。 また、スワイプや、”通知を全て消去”しても消えない通知を作る方法です。(注) 端末を上から下にス…

APIレベルを取得する(処理を分ける)

APIレベルによって処理を分ける方法です。 APIレベルを取得する わずか一行で取得可能です。 int apiInt = Build.VERSION.SDK_INT; OSのAPIレベルを整数値で取得できます。 各レベルは、コードネームの定数で定義されています。 Build.VERSION_CODES.LOLLIPO…

◆AndroidStudio◆メモリを2G→4Gにした結果

アンドロイドスタジオがいい加減重いと感じたので、 メモリ増設を決断しました。 メモリ増設なんてやったことなかったので、不安でしたが、 スマホでいろいろ調べてみると、 意外と敷居が低そうなので、やってみることに。 まずPCのマニュアルから、適合する…

サウンドピッカーを呼び出して着信音等を取得する

着信音や通知音を取得できるサウンドピッカーを呼び出す方法と、その結果の受け取り方 黙示的インテントから、サウンドピッカーを呼び出します。 Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXT…

アニメーションさせる(Canvasを使ったゲームなど)

パズルゲームなどで、タイルを動かした時に、瞬時に移動するのではなく、 滑らかにアニメーションしながら移動したい。 なおかつ、端末の処理速度などによって、早くなったり遅くなったりせず、どのような端末でも一貫した動きが欲しい。 そのような機能を求…

サイズをdp(dip)で指定する

ピクセル密度が異なる端末でも、対象の図形やビューをおおかた同じ大きさで表示させるには、dp値を指定します。 dp(dip)についての詳細は、ここでは省略させていただきます。 dp値から、実際のピクセル数を求める ピクセル = getDisplayMetrics().density *…

FREETEL MIYABI(雅)のレビュー

FREETEL MIYABI(シャンパンゴールド)を買ったので、さっくりとレビューします。 いいところ SIMフリーであること 当然といえば当然なんですが、なんといってもSIMフリーであることです。 大手三社以外の電話会社が選べるので、中にはとても安いところもあ…

NotSiblingエラー

is not a sibling in the same relativelayout [NotSibling]のようなエラー文が出た場合の対処方法 アプリケーションのAPKファイルを作成する際に、上記のようなエラーが発生しました。 原因としては、レラティブレイアウトの相対関係において、基準となるビ…

スリープ状態を解除する(コードから解除する)

端末をスリープ状態から解除するコードの一例です アラームやタイマーアプリの鳴動時に、ユーザーに知らせるために端末のスリープ状態を解除したい場合に有効です。 端末をスリープから解除する(画面の明かりを点ける)ための処理をサンプルメソッドのwakeF…

UNO新ルールで王様ゲーム化!?

今年45周年となるUNOに新ルールが追加されました。 とりかえっこワイルドと、白いワイルドカードという新しいカードが、それぞれ1枚と3枚、デックに追加されました。 とりかえっこワイルドは、自分の手札と任意のプレーヤーの手札をまるごと取り替える。 白…

スワイプしても消えないノーティフィケーション

タイマーや目覚まし時計のアプリでは、アラームがセットされていることを明確にするために、 通知バーになんらかのメッセージを表示することがあります。 これが「すべての通知を消去」等をしたときに、アラームの通知も消えてしまっては、目覚ましは本当に…

独自に用意したフォントを使う

テキストビューで独自に用意したフォントを使う方法です。 アンドロイドスタジオの場合 準備として、src/mainフォルダー内にassetsという名前でディレクトリを新規作成し、その中にフォントファイルそのものを置きます。 コードから、用意したフォントを反映…

TextView等で、独自のフォントを使う

テキストビュー等で独自に用意したフォントを使う方法です。 アンドロイドスタジオの場合は、src/mainフォルダ内に、assetsディレクトリをつくり、フォントファイルを置きます。 TextView textView = (TextView)findViewById(R.id.text_view); Typeface type…

ダイアログの幅を指定する

ダイアログの幅をコードから指定する方法です ダイアログを表示する際、通常は、そのダイアログの内容がぴったり納まる幅に縮小されて表示します。 レイアウトリソースで、ルートレイアウトをmatch_parentにしても、そのように調整されてしまいます。 あまり…

ビューのBackgroundColorを取得する

ボタンやレイアウトなどのビューのBackgroundを色で指定し、その色を後から動的に取得する方法です。 View v = target; // 対象のビューです。 ColorDrawable colorDrawable = (ColorDrawable) v.getBackground(); int colorInt = colorDrawable.getColor();…

Tagからフラグメントを探す

静的に組み込んだフラグメントをタグで探す方法です。 レイアウトリソースの当該フラグメントに、任意のタグを付けます。 識別にオブジェクトも使うことができますが、参照を取得するだけならテキストをキーのように指定するのが簡単です。 <fragment android:tag="key" android:layout_width="match_parent" android:layout_height="wrap_content" android:name="package" android:id="@+id/myfragment" /> アクティビティ</fragment>…

Snackbarを使う

事前準備 1.スナックバーを使用するためにサポートライブラリーを、SDKマネージャーを使ってダウンロードします。2.Project Structure の Dependenciesタブから com.android.support:support-v4:23.1.1 をライブラリーに追加します。 3.build.gradleに以下の…

GIMPで、マテリアルなアイコンを作る

GIMPを使って、マテリアルデザインのガイドラインに沿ったアイコンの作成方法です。 例としてこのようなアイコンを作成する手順です。 (16の数字は、特に意味はありません) 1.画像を新規作成します。 ・画像サイズは512*512ピクセル、詳細設定に各解像度…

’10:06’のように時間を2桁ずつの0付きで表示する方法

タイマーアプリの開発などで、数時が一桁になっても0を付けて二桁で表示する方法です。 int min = 31; int sec = 8; String text = String.format("%02d:%02d",min,sec); これで、「31:8」とはならず、「31:08」と表示されるようになります。 残り時間をテキ…

FloatingActionButtonを、Snackbarと連動して動かす方法

Snackbarの表示に合わせてFloatingActionButtonを上下させる方法です スナックバーを表示したときに、ボトムに配置したフローティングアクションボタン(以下、FAB)と重ならないように、これらを連動させて動かすには、CoordinatorLayout内にFABを配置して…