2019-06-01から1ヶ月間の記事一覧

The number of method references in a .dex file cannot exceed 64K.

開発中のビルドは問題なく通ってたのですが、ストア公開用の署名付きビルド作成時にこういったエラーが発生し、ビルドが失敗しました。 Error: null, Cannot fit requested classes in a single dex file (# methods: 71451 > 65536) The number of method r…

Androidアプリ FF14ブログアンテナアプリをリリースしました

FFXIVのブログアンテナアプリ、FF14タイムズをリリースしました。Android端末をお持ちのFF14プレイヤー様は攻略やプレイヤーの交流に是非、お役立て頂ければ幸いです。 play.google.com 同様のアンテナアプリはいくつかあって、電車の中等でよく利用するので…

VisibilityAwareImageButton.setVisibility can only be called from within the same library group

floatingActionButtonを floatingActionButton.visibility = View.INVISIBLE のようなことをすると、 VisibilityAwareImageButton.setVisibility can only be called from within the same library group (groupId=com.android.support) less... (⌘F1) Inspe…

Android インターネット上の画像をImageViewで表示するのはGlideが便利

インターネット上に置かれている画像ファイルをダウンロードして表示するにはGlideが便利。 簡単な記述で接続からファイルダウンロード、描画、キャッシュの管理まで行ってくれます。 github.com 導入 app/build.gradle implementation 'com.github.bumptech…

Rails 定義済みテーブルに制約を追加する

覚える気もなくいつもググって手間がかかるのでここに記録しておく。 not null & default 大体いつも2つセットで使うことになる。 class ChangeColumnNameToTables < ActiveRecord::Migration[5.2] def change change_column_null :テーブル名, :カラム名, n…

Android RecyclerView & CardViewのonClickイベントにハマる

昨日、RecyclerViewのクリックイベントがどうしても取得できずハマってしまったのでメモしておきます。 RecyclerView onClickイベントの基本系 Layout RecyclerViewの中のitemを以下のようなレイアウトにした場合、

Android ViewのZ軸、重なりの高さを管理する

RecyclerView & CardViewの上にprogressBarを表示しようとした時、CardViewが最前面に表示されprogressBarがCardViewの下に潜ってしまうケースがある。 ViewのZ軸高さの設定 android:elevationでZ軸の高さを設定する。他Viewにandroid:elevationの設定がない…

Heroku上のDBにローカルpg_dumpでインポート/リストアする

ローカルのDBで予めworkspace/にpg_dumpを取っておく。 $ heroku pg:psql < workspace/dump.sql

Android FragmentPagerAdapterにセットされたFragmentにアクセスする

例えばActivity側で定義されたActionBarやToolBarのUIで操作が行われた時、ViewPager側のFragmentを操作する必要がある時等に。 Activity側 FragmentPagerAdapter.getItem(position)でFragmentを取得すればよい。positionはViewPager.currentItemで取得でき…

Android ネットワークAPIから取得した情報をキャッシュする

軽量なJsonデータなどの文字列情報はSharedPreferencesを使って保存するのが便利 SharedPreferencesにアクセス fun getCache(context: Context, key:String):String{ val cache = PreferenceManager.getDefaultSharedPreferences(context).getString(key, ""…

Android オフライン時にWebViewキャッシュを参照する

オフラインであるかの判定は前回の記事、 www.letitride.jp のisNetworkAvailable()を使用して取得しています。 WebViewキャッシュまわりの設定 状態によりcacheModeを切り替えればよい。 val webView = findViewById<WebView>(R.id.webView) webView.settings.setApp</webview>…

Android 端末のネットワーク状態を取得する

端末がオンライン / オフラインであるかの確認 AndroidManifestのパーミッション追加 AndroidManifest.xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ネットワーク状態のオンオフ判定 fun isNetworkAvailable(context: Context): Boolean { val connectivityM…</uses-permission></uses-permission>

Cannot access 'Serializable': it is internal in 'kotlin.io'

KotlinでSerializableをimplementしようとした時、タイトルのエラーCannot access 'Serializable': it is internal in 'kotlin.io'と出てインターフェースを参照できないことがある。 なぜかパッケージが自動でimportされない時があるので、java.io.Serializ…

自分メモ:Store用アプリアイコン作成

ストアに上げる際のアイコンの作成手順をいつも面倒くさいなあと忘れてしまうので次の為に残しておく。 特にAppStoreは解像度がきっちり合ってないとダメ。 ベースとなるアイコンの調達 iconionから背景が透過のアイコンをダウンロード iconion.com なぜ透過…

Rails Herokuでバッチ処理実行

Rails Taskの記述 Railsを通してコマンド実行したい処理は/lib/tasks/に配置したファイルに記述する ファイル作成例 /lib/tasks/crawler.rb class Tasks::Crawler def self.execute #サイト巡回処理 #サイトの登録処理 Modelが利用できる Site.save() end en…

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…

はてなブログPROの独自ドメインでアドセンス申請時に「お客様のサイトにリーチできません」となる問題

結構な人が困っているようなので、自分が解決した時の対処を記載しておきます。 前提として ドメインはお名前ドットコムで取得 はてなブログはhttps対応としてしている です。 そもそもの問題 はてなブログPROの独自ドメイン機能はURLの独自ドメインの頭にww…