Kuwapp's Blog

Android と Flutter やってます

Flutter Meetup Tokyo #1 でLTしてきた

↓これ flutter-jp.connpass.com LT内容 Flutterで画面遷移を検知する という内容で発表した。 内容は RouteObserver というクラスを使えば簡単に画面遷移を検知できるよというもの。 alpha版では1つのRouteにつき1つのリスナーしか登録できなかったので複数…

ツイキャスの視聴用のAndroidアプリ作って公開してみた。

作ったもの Casee-シンプルなツイキャス視聴アプリ - Google Play の Android アプリ シンプルなツイキャスの視聴用アプリです。 今はツイキャスを見てコメント投稿するぐらいの機能しかありません。 今後いくつか機能を追加する予定です。 YouTubeのアプリ…

ViewCompatでsetUpdateListenerを読んでも更新時に呼ばれない

調べてみた。 リファレンスでsetUpdateListenerを見るとなんと「Added in API level 19」でした。 ViewPropertyAnimator setUpdateListener とくに警告も出ていなかったので気付かなかったー。 ObjectAnimatorを使用して解決しました。 ObjectAnimator anima…

cocos2d-xでプロジェクト作成時にいつも自分が行っている作業

プロジェクトの作成 cocos new MyGame -p com.kuwapp.mygame -l cpp -d ~/Projects MyGame プロジェクト名 -p com.kuwapp.mygame パッケージ名 -l cpp 言語 -d ~/Projects ディレクトリ gitignoreを追加 # Mac .DS_Store #Java *.class # XCode *.moved-asid…

WebViewで「net::ERR_CACHE_MISS」と表示される問題 【Android】

WebViewでページ読み込み時に「net::ERR_CACHE_MISS」と表示されてページが読み込めませんでした。 AndroidManifestのパーミッションを確認するとインターネット接続のパーミッションが大文字でした。 AndroidStudioの補完で記述した気がするんだけど・・ <uses-permission android:name="ANDROID.PERMISSION.INTERNET"/> </uses-permission>…

WebViewでHtml5のvideoタグを使ったときにはまったこと【Android】

動画関連のアプリを開発しているのですが、開発中にいくつかはまったので記事にします。 動作確認端末はNexus5でOSはAndroid5.1です。 他の端末やバージョンでは試していないのでどうなるか不明・・です。 もし情報あれば教えていただけると助かります。 aut…

2015年7月にやることのまとめ

ここ最近ダラダラテレビを見たり、ぼーっとしたり無駄に時間を過ごしている。 このままではまずいので今月やることをまとめ時間を効率的に使えるよう考えてみる やること Walleterのアップデート APIが公開されているサービスと連携したアプリを作る Effecti…

Retrofitを使って天気情報を取得してみる【Android】

RESTライブラリ「Retrofit」が便利そうなので実際に使ってみました。 Retrofitsquare.github.io OpenWeatherMap current weather and forecastのAPIを使用して天気情報を取ってこようと思います。 今回は緯度と経度を指定できる次のAPIを使用します。 http:/…

Youtubeアプリの動画部分をスワイプで移動させるUIを作ってみた【Android】

AndroidのYoutubeアプリの動画を見ながら別の動画を探せるUIがとても良いなーと思っていたので似たようなUIを作ってみた。 完成形はこんな感じ。 実装 既存のYoutubeアプリでは動画をリストで表示して項目をタップすると動画の再生画面へ遷移しています。再…

【Android】Toolbarの色をStyleで変更する

Theme.AppCompat.Light.NoActionBarを継承したStyleをアプリ全体で使用していたのだけど このテーマだとツールバーのタイトルやアイコンの色が黒を基調とした色になってしまいツールバーの背景を黒っぽくすると見づらくなってしまうので調べた。 実装 styles…

ターミナルでよく使用するコマンドをエイリアスに定義してみた

何かしら開発している方はターミナルを使用しコマンドを打つと思います。 androidだと adb installとかadb logcatとか、gitだったらgit commitとかgit pullとか。 これっていちいちタイプするの面倒ですよね そんなときはエイリアス作って簡単に呼び出したら…

GitHubで人のコードを読んでみて思ったこと

今まで仕事以外で人のコードを読むという機会が極端に少なかったので 外部のコードはどんな感じなんだろうと思って最近GitHubでAndroidの完成プロジェクトを探して読んでます。 そこでいろいろと思ったことがあったので書いてみます。 自分の知識の幅が広が…

【Java】staticイニシャライザ

クラスのロード時に呼ばれるブロック 複数定義出来てコードの上にあるものから順番に呼ばれていく class HogeClass { private static final int HOGE_INT; static { HOGE_INT = 50; } public HogeClass () { System.out.println("HOGE_INT : " + HOGE_INT); …

【Android】Viewの階層を調べてみた

getRootViewやfindViewById(android.R.id.content)で何が取れるのか良く理解していなかったので調べてみた。 以下の記事によると Activityのビュー階層とコンテンツルート(View)を取得する - Kazzzの日記 次のような階層になっているらしい。 PhoneWindow$De…

【Android】画面タップでキーボードを非表示にする

画面タップでキーボードを非表示するよくある実装です。 アクティビティ public class MainActivity extends ActionBarActivity { private View mFocusView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS…

【1人でAndroidアプリ開発】財布の残高管理アプリを作ってリリースしてみた

ここ2ヶ月ほど地道にAndroidアプリを開発していました。 アプリ名は「Walleter」でシンプルなお小遣い帳アプリです。Walleter - シンプルなお小遣い帳アプリ今回の開発を通して思ったことや、やったことなどをまとめたいと思います。 ・Walleterについて ま…

【Android】AlarmManagerで登録された通知をコマンドラインで確認する

ローカル通知を実装したが、通知が届かない。 Alarmの登録でバグがあるのか、レシーバーが上手く動いていないのか。。 問題の切り分けにけっこう使えます。 adb shell dumpsys alarm端末を繋いでターミナルを起動し上記コマンドを実行します。 もちろんadbの…

【Android】PreferenceFragmentをAPI10以前で使用する

PreferenceFragment API11で新しく追加された設定画面を容易に作成できるFragmentです。 このPreferenceFragmentはsupport-v4に含まれていないためAPI10以前のバージョンで使用できません。 PreferenceActivityを使用すればAPI10以前に対応できますが、Actio…

【Android】support-v7-appcompatにスタイルを対応させる

Android2系でもActionBarを使用するためにsupport-v7ライブラリのActionBarActivityを使用してみました。 単純にActivityをActionBarActivityへ書き換えただけだと次のようなエラーが出ます。 java.lang.IllegalStateException: You need to use a Theme.App…

【Android】ActivityのonTouchEventが呼ばれない

次のActivityとレイアウトの組み合わせで試すとonTouchEventが呼ばれませんでした。 Activity public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCont…

【Unity】AssetDatabaseでアセットを操る!

AssetDatabaseとは AssetDatabaseはプロジェクトのアセットにアクセスできる API です。アセットを見つけてロードするメソッドがあり、さらにアセットを作成、削除、修正できるメソッド等々があります。 〜略〜 Unity はアセットファイルのメタデータを保持…

【Android】Fragmentにオブジェクトを渡す

FragmentにStringやintを渡すだけなら 下記のようにBundleにセットするだけで簡単にできます。 Bundle bundle = new Bundle(); bundle.putString("Name", "nanasi_san"); bundle.putInt("Age", 21); Fragment fragment = new Fragment(); fragment.setArgume…

【Android】ViewPagerのページを動的に追加する

ViewPagerのページに表示するデータを最初にセットせずに逐次読み込みたかったので 一番端のページに到達したら新しくデータを追加し新規ページが追加される処理を入れてみた。 流れ ページが端に到達したか確認 ↓ データを追加しAdapterを更新 実装 MainAct…

【Android】Segmented Radio Buttonsを使ってSegmentControlを実装する

iOSではおなじみのSegmentControlを以下のライブラリで容易に実装できたので紹介します。 vinc3m1/android-segmentedradiobutton · GitHub SegmentControl SegmentControlはいくつかの選択肢から一つを選んで切り替えができるUIパターンです。 以下のスライ…

【Android】API21でエラーが出まくる不具合の解決方法

SDKManagerでAPI21(Android 5.0 Lollipop)のSDKをインストールし AndroidSupportLibraryをアップデートしてからeclipseがエラーを吐きまくる。急にビルドできなくなったり、変なエラーが出たりとストレスが溜まっていましたが解決できたのでメモ parseSdkCon…

【Android】AndroidManifest.xml file missing!

eclipseのProblemに「AndroidManifest.xml file missing!」とエラーが表示された。manifestはしっかり存在しているのに何故かビルドできない。 cleanしても駄目、eclipseを開き直してもだめ。ググるとありました。 java - error: androidmanifest.xml file m…

【Android】AsyncTaskの罠

AsyncTaskの罠……と自分が思ったところです。AsyncTaskでcancelを呼ぶとdoInBackgroundの処理を自動で切ってonCancelledが呼ばれると思っていました。 ですが、キャンセルを呼び出してもdoInBackgroundの処理は走り続けるようです。 doInBackground内でisCanc…

【Android】TargetSDKをAPI21にしたらEclipseで謎のエラーが表示された

追記: 自分の環境では次の記事の手順で完全に解決できました。 【Android】API21でエラーが出まくる不具合の解決方法 - Kuwappブログ-アプリ開発記 【Android】API21でエラーが出まくる不具合の解決方法 - Kuwappブログ-アプリ開発記 "Loading data for And…

【Android】指定時間に処理を実行する【AlarmManager】

アラームを鳴らしたり、ある時間にアプリを起動したり、ローカルのPUSH通知を表示したりと指定時間に処理を実行したいときがあると思います。開発中のアプリにローカル通知を表示するために実装したのでその方法です。 流れ ・AlarmManagerにアラームを登録 …

【JAVA】Threadは再利用できない。

Thradは再利用できないらしい。 アプリ起動時にスレッドのインスタンスを作成し、スレッドを開始。 アプリがサスペンドした場合は停止し、レジューム時に再度startで動かそうなんて考えていました。再度使用したい場合は、新しくインスタンスを生成する必要…