blitz-time アプリ開発ブログ

Androidアプリ開発などのTips集

Android開発

【Flutter開発】プラグインをカスタマイズしたい場合

Flutterでは数多くのプラグインを利用することで様々な機能を容易に実装することができます。しかし、プラグインの機能が少しでも物足りない場合、カスタマイズする必要があります。プラグインはソースコードも含めて自動的にダウンロードされて利用すること…

【Flutter開発】StatefulWidgetの派生クラスを瞬殺で作成する方法

StatefulWidgetの派生クラスを作成するのが面倒だなと思い、下記の「神技」を発見しました。 かなり感動したのですが、その数分後にさらに神技を発見しました。。。 Android Studioには「Live Template」という機能があり、登録済みのキーワードを入力し、必…

【Flutter開発】StatefulWidgetのテンプレートを作成する方法

StatefulWidgetを新規作成するのが面倒だったが、神技を見つけた!

【Flutter開発】コンテナの左と右にウィジェットを配置する

コンテナ内にテキストを配置し、その領域をタップすると編集画面を表示できるようにしたいと思いますが、タップできることを表現できるように「>」アイコンを配置しよう。と思います。 Row( children: [ Text("めもめもめも", style: TextStyle( color: Col…

【Flutter開発】領域が最大表示されない~alignment: Alignment.centerLeft

テキストの背景を画面の横幅最大に設定したいのですが。。。(現在背景が青の部分です) Container( padding: EdgeInsets.all(10), color: Colors.blueAccent, child: Text( "めもめもめも",style: TextStyle(color: Colors.black,fontSize: 20)) ) 「alignm…

【Flutter開発】TextPainter.textDirection must be set to a non-null value before using the TextPainter.

Canvasにテキストを描画したいのですが、適当に書いたらエラーになりました。。。 TextSpan span = new TextSpan(text: 'テキスト'); TextPainter tp = new TextPainter(text: span, textAlign: TextAlign.left); tp.layout(); tp.paint(canvas, new Offset(…

【Kotlin入門】Realmを使用するとエラーがでるが文字化けでわからない!「Task :app:kaptDebugKotlin FAILED」と出ている。

Realmを使ったデータベース管理の勉強を始めました。 教科書に載っているとおりにコーディングし、実行したところ、見たこともないエラーに遭遇しました。 C:\User\Projects\KotlinFirstStep\MyScheduler\app\build\generated\source\kapt\debug\io\realm\**…

【Kotlin入門】Smart cast to '***' is impossible, because '***' is a complex expression.

「はじめてのAndroidプログラミング」でフラグメントの勉強中です。現在、第8章の「フラグメントを使ったスライドショーアプリ」に取り組み中。はじめてのAndroidプログラミング 第4版作者:金田 浩明発売日: 2019/04/20メディア: Kindle版 class MainActivi…

【Kotlin入門】Caused by: kotlin.TypeCastException: null cannot be cast to non-null type

「はじめてのAndroidプログラミング」でフラグメントの勉強中です。現在、第7章の「フラグメントで動物ずかんを作ろう」に取り組み中。はじめてのAndroidプログラミング 第4版作者:金田 浩明発売日: 2019/04/20メディア: Kindle版ActivityからFragmentから…

【Kotlin入門】Null can not be a value of a non-null type Int

Kotlinでは基本的には「null」をあまり意識する必要がありません。 逆に、明示的に「null」を設定してしまうと、 Null can not be a value of a non-null type Int null非許容型のIntにnullにすることはできません のようなエラーになります。コード fun mai…

【Kotlin入門】エルビス演算子

エルビス演算子、初めて聞くワードです。「?:」が、その「エルビス演算子」になります。内容 Kotlinでは値にnullを利用可能な「null許容型」という変数を定義することができます。 「null許容型」の変数は、型に「?」を加えることで宣言できます。 null許容…

【Androidアプリ開発】画面起動時のソフトウェアキーボード(IME)を非表示にしたい

EditTextを使った文字入力を持った画面を表示した場合、そのEditTextに入力フォーカスがあたり、ソフトウェアキーボード(IME)が自動的に起動します。入力前提の画面であればその挙動が良いのですが、「既存のデータを閲覧し、必要であれば編集する」というよ…

【Kotlin入門】クラスメソッドのオーバーライド

派生クラスで親クラスのメソッドをオーバーライドします。内容 メソッドをオーバーライドする際にはメソッドに"override"を付加します。また、派生元のクラスメソッドは"open"である必要があります。"open"がないと、”final and cannot be overridden”エラー…

【Kotlin入門】派生クラス

作成したクラスから派生クラスを作成します。内容 Personクラスの派生クラスとしてAdultクラスを作成します。 AdultクラスではmTypeを上書きします。 Kotlinでは通常はクラスを派生させることができませんが、"open"を付加することで、クラスを派生させるこ…

【Kotlin入門】クラスの定義

クラスの定義の基本形です。コード class Person(val mName: String, val mAge: Int) { } fun main(args: Array<String>) { val p = Person("田中はじめ",45) println( p.mName ) println( p.mAge ) } 結果 田中はじめ 45クラスの初期処理はinit内で行うことができま</string>…

【Kotlin入門】関数

関数の定義は次のように書きます。内容 fun 関数名 ( 引数名 : 型名 ) : 戻り値の型名 { return 戻り値 } コード fun sub( a : Int ) : String{ var ret : String if( a > 0 ){ ret = "正の数" }else if( a < 0 ){ ret = "負の数" } else{ ret = "0" } retur…

【Kotlin入門】Expecting a top level declaration

「Expecting a top level declaration」というコンパイルエラーがでて悩んでしまいました。問題はただの、「{」忘れでした。。。。数十分費やしてしまいました。まだまだですねぇ。。。

【Kotlin入門】do-while文 繰り返し

do-while文を利用した繰り返し処理は次のように書きます。内容 iが0から9まで繰り返す。コード fun main(args: Array<String>) { var i = 0 do{ println(i) i++ }while( i < 10 ) } 結果 0 1 2 3 4 5 6 7 8 9</string>

【Kotlin入門】while文 繰り返し

while文を利用した繰り返し処理は次のように書きます。内容 iが0から9まで繰り返す。コード fun main(args: Array<String>) { var i = 0 while( i < 10 ){ println(i) i++ } } 結果 0 1 2 3 4 5 6 7 8 9</string>

【Kotlin入門】for文 繰り返し

繰り返し処理を行うにはfor文を利用します。 C言語では、 for( int i=0;i のように書いていたfor文の繰り返し処理は次のように書きます。内容 iが0から9まで繰り返す。コード fun main(args: Array<String>) { for(i in 0..9){ println(i) } } 結果 0 1 2 3 4 5 6 7 8</string>…

【Kotlin入門】Kotlinの文法を勉強するためのAndroid Studio活用方法

Androidアプリの開発をしていますが、今後のAndroid開発は『Kotlin』が主流になります。Javaより扱いやすくなるということですが、これまでずっとJavaを使っていたため、なかなか移行する機会がありませんでしたが、やっと重い腰を上げてKotlinの習得に取り…

【Androidアプリ開発】JPEGファイルからサムネイル写真を取得

アプリ内で端末内の写真の一覧を表示する際、写真が多いと非常に時間がかかります。 また、最近の端末の写真は高解像度なので、ファイルサイズも大きくなり、1枚当たりの処理時間もかかります。 撮影した写真は通常JPEGで保存されますが、そのデータ内にExi…

【Androidアプリ開発】ファイルをまとめてZip化(圧縮・解凍)

ファイルをバックアップ・復元するために、複数のファイルを圧縮・解凍する機能が必要です。 便利なオープンソースがあるので、そちらを活用します。github.com簡単な使い方はこのような感じです。 public class ZipUtils { Context mContext; public ZipUti…

【Androidアプリ開発】例外が発生しないJSONファイルのデータ読み込み

アプリ内での利用するデータファイルの形式としてJSONが多いですね。 各種サービスのWeb APIなどで取得するデータの形式にもJSONが使われていることが多いです。JSONObjectに読み込んだデータから指定のデータを取得する際、JSONObject.getString() や、 JSO…

【Androidアプリ開発】データのバックアップ・復元機能

アプリで利用しているデータをバックアップし、機種変更時に復元するような機能を入れたい。アプリのデータの保存はおおむね、以下の3種類です。 1) プレファレンス 2) データベース(SQLite) 3) 各種データファイル 各種ファイルのバックアップ 1) プレファ…

【Androidアプリ開発】写真のトリミング

撮影した写真から必要な個所だけを切り抜きたい場合は、外部アプリのトリミング機能を利用すると便利です。 // uri: 写真のUri private void showTrimImage( Uri uri ){ Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndTy…

【Androidアプリ開発】カメラ撮影を連続で実施

アプリからカメラアプリを起動して、撮影した写真を取り込むにはIntentを利用します。しかし、カメラアプリを起動し、撮影を終了すると、アプリも終了し、元のアプリに戻ってしまいます。カメラで撮影した写真を連続で取り込むには、カメラアプリでの撮影後…

【Androidアプリ開発】スクショした写真を検出する方法

最近のAndroid端末でよく、スクショをとると、通知バーに通知が来て、タップすると、そのスクショ写真を表示することができ、共有機能などを使って、メールに添付したりすることができますね。そんな機能をアプリに入れたいと思いました。 スクショした写真…

【Androidアプリ開発】Bitmapオブジェクトを指定パスにPNGファイルとして保存

Bitmapオブジェクトを指定パスにPNGファイルとして保存します。 static public boolean saveAsPngImage(Bitmap bmp, String strPath){ try { File file = new File(strPath); FileOutputStream outStream = new FileOutputStream(file); bmp.compress(Bitmap…