テック

Android TabLayoutとViewPagerでスワイプ連動タブ制御

よくあるこういったUIのやつ コンテンツ部分を横スワイプでタブが左右に切り替わる 使用するコンポーネント ViewPager スワイプに応じてページングされたFragmentを生成し、自動でアタッチする。 TabLayout TabのUI表現及び、リスナーを管理する。また、生成…

Kotlin 戻り値をジェネリクスとした抽象メソッドの定義と実装、TemplateMethodの応用

APIで取得したJsonデータをパース、Modelメンバにパースした値をセットしてオブジェクトを返す。という処理をtemplate method的な固有実装のみサブクラスに実装したかったので勉強しました。 クラス関係 //ジェネリクスは継承先のクラスが指定する open abst…

Android 処理中インジゲーターを表示する

導入 ProgressDialogはdeprecatedになったので、ProgressBarを使用する <ProgressBar style="?android:attr/progressBarStyle" android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" /> style="?android:attr/progressBarStyle"でくるくる回るインジゲーターや横棒の進捗バ…</progressbar>

Android ViewにPull to Refreshを導入する

導入 android.support.v4.widget.SwipeRefreshLayoutを使用する。 サポートライブラリを指定せず、<SwipeRefreshLayout></SwipeRefreshLayout>と記述すると、Error inflating class SwipeRefreshLayoutとなり、ビルドは通るがXMLパースでコケる。

Android OSSライセンス画面をPluginで自動表示する

Androidアプリ開発自体、Apache License 2.0 のOSSを使用して開発を行う為、インクルージョン表記や帰属表記が必要。 こちらを使うと簡単に使用ライブラリがリスト化されたActivityを生成できます。 github.com 導入 Add the Gradle plugin project/build.gr…

kotlinの無名関数、無名クラス、クロージャーとラムダ式

いつも、あれ?どうやって書くんだっけ?と都度ググっているので整理したことをメモ。 無名関数 基本 宣言と同時に関数オブジェクトに val func1 = fun(data:Int):Int{ return data } func1( 1 ) 宣言済みメソッドを関数オブジェクトに fun returnInt(data:I…

All com.android.support libraries must use the exact same version specification

Androidアプリにadmobの広告を入れようとして、build.gradleに implementation 'com.android.support:appcompat-v7:27.+' implementation 'com.google.android.gms:play-services-ads:17.2.0' と記述したら、ライブラリの中に27.1.1と26.1.0が混在していて、…

Android Viewのcorner radiusの定義

View自体のプロパティにradiusの設定はないので、shapeタグを使ってbackgroundに当て込みを行います。 shapeタグとは? 画像ファイルを使わずにマークアップでグラフィック表現が行える記述方式。 strokeでViewに枠線を入れたりpaddingでView内側の余白管理…

Kotlin varとvalの違い

var と val の違いとは? var : 再代入可能な変数(読み書き可能な変数) val : 読み込み専用の変数 以下のような操作を行った時、valではbuild errorとなります。 class Foo{} val foo = Foo() foo = Foo() //変数fooに再度Foo()インスタンス valについて い…

Android 怖くないRecyclerView

タイトルは釣りです。ごめんなさい。 昨日、ハマってしまったのでRecyclerViewについて整理したことをメモ。 RecyclerViewの最小構成 layoutファイル activiity_main.xml 画面幅一杯のRecyclerViewを配置

Android WebViewに直接HTMLを記述する

WebViewに対して、さらっと書き捨てのHTML等を直接記述出来ます。 val webView = findViewById<WebView>(R.id.web_view) webView.loadData("<a href=\"https://www.google.com\">グーグル検索</a>", "text/html", "utf-8") 何が便利か? クッションページが必要だけど、敢えてHTMLファイルとして作成するほど</webview>…

Android Kotlin 怖くないAsyncTaskLoader

タイトルは釣りです。すいません。 AsyncTaskLoaderを気軽に使えるように整理したのでメモとして残しておきます。 基本形 別スレッドでの処理はAsyncTaskLoaderのloadInBackgroundに記述 loadInBackgroundで完了した処理データをUIスレッドで操作するにはLoa…

Android KotlinでDialogFragmentを扱う

Javaで記述したDialogFragmentをKotlinに自動変換行った時、 method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState とエラーが出ることがあります。これはエラーメッセージの通りsavedInstanceStateにnullが渡され…

Android プラットフォーム リソースにアクセスする

Androidにはデフォルトで用意されているアイコンとして利用可能な豊富なdrawable プラットフォームリソースがあります。 プラットフォームリソースを確認する Layout EditorのAll attributeから確認するのが簡単です。 のアイコンを押下し、Drawable -> andr…

Android ListViewに変更を通知する

一度、表示されたListViewに対して変更された内容を通知する方法。 よくあるケースとして セルデータの編集・削除を行った ネットワークを通じて新しいデータを取得 などが想定されます。 例としてListViewのitemを長押しして選択対象を削除するというユース…

Android ActionBar/toolBarにmenuItemを配置

アコーディオンメニューとなるアイテムを設置 よくある以下のようなアコーディオンメニューを設置します。 以下の例はActionBarに設置したものです。 リソースファイルの作成 res/menu/にmenu resource fileを作成します。 main_menu.xml <menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> </menu>

Android ActionBarとToolBarについてのメモ

この2つの違いが曖昧なので、調べたことをメモしておきます。 ActionBar どこで定義されている? まずActionBarについて。ActionBarはアプリのテーマとして自動で定義されているもの。定義は、AndroidManifest に <application <!-- 中略 --> android:theme="@style/AppTheme > として</application>…

Android SQLiteの使用とmigration

schemaの作成 スキーマはSQLiteOpenHelperを実装したクラスで作成する。 DB_VERSIONはmigrationを行う際にインクリメントすることでonUpgrade()に渡される。 val DB_NAME = "MyApplication" val DB_VERSION = 1 class MyApplicationDBOpenHelper(context: Co…

Android toolbarと配置するitemについてのメモ

所謂この部分、ツールバー?(iOSではナビゲーションバーかな?)と呼ぶらしいんだけど、これについての取り扱いについて色々ハマったのでメモ。 タイトル名を変更 toolbar.setTitle("ツールバー") または、 setSupportActionBar(toolbar) supportActionBar?.s…

Android kotlin Activity間のオブジェクトの受け渡し

"intent object 渡す"とかでググると色々ヒットするが、渡されたオブジェクトは呼び出し先で新しく生成されたオブジェクトとして扱われることを備忘として書いておく。 例えば、以下のような定義のオブジェクトを渡す場合 class DataState( var data:String …

Android Kotlin ListViewの次のN件の読み込み

よくあるListViewの最終セルに次のN件の読み込み的なやつ。ページネーションと読んでいいのかどうか。 Activity class MainActivity : AppCompatActivity() { lateinit var myListView:ListView lateinit var myAdapter:MyAdapter val listItems = ArrayList<String></string>…

Kotlin bitmapの扱い

ByteからBitmap public fun ByteToBitmap(bytes:ByteArray):Bitmap{ val opt = BitmapFactory.Options() opt.inJustDecodeBounds = false return BitmapFactory.decodeByteArray(bytes, 0, bytes.size, opt) } //ImageViewに画像をセット ImageView.setImage…

Android 共有ストレージアクセス

アクセス権限の確認 & 取得 ダイアログで権限の許可 or 拒否の操作完了時にonRequestPermissionsResult()がコールバックされる。 fun accessStorage(){ if(ContextCompat.checkSelfPermission( activity!!, Manifest.permission.READ_EXTERNAL_STORAGE) == P…

Android Kotlin ActivityからFragmentを追加

supportFragmentManagerでlayoutにfragmentを割り当てる class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val fragment = M…

Android AppWidgetProviderのインスタンス調査

widget間で値共有できるか調査してみたのでメモ Widgetごと、ライフサイクルごとにインスタンスが生成されているみたい。なので、いくらこういうことをしても class MyWidget : AppWidgetProvider() { private var numberCount = 0 override fun onUpdate(co…

Android Kotlin SoundPool()のdeprecated対応

SoundPool() はAPI LEVEL 21 から非推奨。 'constructor SoundPool(Int, Int, Int)' is deprecated. Deprecated in Java 21以降はSoundPool.Builder()でインスタンスを構築する。 //Lollipop未満 if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP){…

kotlin 内部クラスから外側クラスのメンバ参照

クラスのネスト記述 class OuterClass { var foo = "" class InnerClass {} } 内部クラスから外部クラスのメンバを参照 InnserClassからOuterClassの var Foo を参照するには、内部innerクラスとして宣言する class OuterClass { var foo = "" inner class I…

kotlin コンストラクタのオーバーロード

kotlin コンストラクタ記述の基本形 primary constructor class Foo(str:String) : Bar(str){ } この場合、Fooとその親クラスにStringを引数とするコンストラクタが定義された、されていることになる。また、クラス宣言で記述するclass Foo(str:String)はプ…

kotlinでSnackbarを設定する

Snackbar.make( findViewById<View>(android.R.id.content), "表示メッセージ", Snackbar.LENGTH_SHORT) .setAction("表示するアクションボタン名称", {v -> //アクションボタンが押下された時の処理を記述 }).show() 例えばアクションボタンを「戻る」にする場合 </view>…

storyboard Modal遷移の実装

storyboard + swiftでmodal遷移の実装 遷移先、遷移元となるViewControllerを定義 storyboard上に遷移元、遷移先となる2つのViewControllerを配置。また、ViewControllerクラスの作成を行う。 ViewControllerクラスは 遷移元:OpeningViewController 遷移先…