foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

Android Java で Retrolambda を使ってラムダ式を使う

環境

問題

解決方法

Retrolambda というライブラリを使うと コード上はラムダ式を使いつつ、 ビルド時に Android 上で実行できるバイトコードに変換してくれる。 手順は下記。

Gradle の設定ファイルを変更する。

// PROJECT/build.gradle
  buildscript {
      repositories {
          jcenter()
+         maven {
+             url "https://plugins.gradle.org/m2/"
+         }
      }
      dependencies {
          classpath 'com.android.tools.build:gradle:2.1.2'
+         classpath "gradle.plugin.me.tatarka:gradle-retrolambda:3.2.5"
      }
  }

  allprojects {
      repositories {
          jcenter()
      }
  }

  task clean(type: Delete) {
      delete rootProject.buildDir
  }
// PROJECT/app/build.gradle
  apply plugin: 'com.android.application'
+ apply plugin: 'me.tatarka.retrolambda'

  android {
      compileSdkVersion 24
      buildToolsVersion "24.0.0"

      defaultConfig {
          applicationId "example.com.androidretrolambda"
          minSdkVersion 19
          targetSdkVersion 24
          versionCode 1
          versionName "1.0"
      }
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
+     compileOptions {
+         sourceCompatibility JavaVersion.VERSION_1_8
+         targetCompatibility JavaVersion.VERSION_1_8
+     }
  }

  dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      compile 'com.android.support:appcompat-v7:24.0.0'
      testCompile 'junit:junit:4.12'
  }

Gradle の設定ファイルを変更したら Gradle Sync を実行する。 Gradle Sync が終わると下記のようにラムダ式が使えるようになっている。

// MainActivity.java
  public class MainActivity extends AppCompatActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

          Runnable r = () -> {
              Toast.makeText(this, "run", Toast.LENGTH_SHORT).show();
          };
      }
  }

上記のようにラムダ式で記述できるのでコールバックが簡潔になる。
また this も外側の MainActivity.this が参照できる。

参考

以上。

WorkFlowyの画面を広くする

環境

問題

  • WorkFlowyの画面を広くしたい。
  • 左右の余白が邪魔。
  • ショートカットキーの表示もいらない。とにかく広くしたい。

解決方法

  • ChromeStylish 機能拡張をインストールする。
  • Stylish 機能拡張のオプションで新しいスタイルを追加する。 スタイルの具体的内容は下記参照。

gist3bbe5bbff2906ff39cbe25d7b63d4177

以上。

iOS 9でWorkflowを使いアプリを起動する

注意

  • この内容は Workflow 1.4.0 での対策。
  • Workflow 1.4.1 にてここで述べている問題は解決している。

 環境

  • iOS 9
  • Workflow 1.4.0

 問題

iOS 9でWorkflowを使いアプリを起動したい。
iOS 8では起動できていたが、iOS 9にしたら起動できなくなった。

 解決方法

アプリ起動前に "Continue Workflow in App" を置いておく。

以上。

iOS 9でWorkflowを使いURLとタイトルを取得する

 環境

  • iOS 9
  • Workflow 1.4.0

 問題

iOS 9でWorkflowにURLを渡してGetNameを呼び、URLとタイトルを取得したい。
iOS 8では取得できていたが、iOS 9にしたらURLが取得できなくなってしまった。

 解決方法

最初に受け取ったURLを "Get URLs from Input" に通す。

以上。

OmniFocusの日付設定のために設定しておくと便利なスニペット

 環境

  • OmniFocus for Mac 2.2.5
  • Dash 3.1.2

 問題

OmniFocusで延期日(Defer Until)や期限日(Due)をキーボードから設定したい。

 解決方法

下記のスニペットを設定しておく。

キーワード 内容
tod8 Today 08@cursor:00
tod12 Today 12@cursor:00
tod18 Today 18@cursor:00
tod22 Today 22@cursor:00
todd Today __placeholder__:00
tom8 Tomorrow 08@cursor:00
tom12 Tomorrow 12@cursor:00
tom18 Tomorrow 18@cursor:00
tom22 Tomorrow 22@cursor:00
tomm Tomorrow __placeholder__:00
fri8 Friday 08@cursor:00
fri12 Friday 12@cursor:00
fri18 Friday 18@cursor:00
fri22 Friday 22@cursor:00
frii Friday __placeholder__:00
sat12 Saturday 12@cursor:00
sat18 Saturday 18@cursor:00
sat22 Saturday 22@cursor:00
satt Saturday __placeholder__:00
sun12 Sunday 12@cursor:00
sun18 Sunday 18@cursor:00
sun22 Sunday 22@cursor:00
sunn Sunday __placeholder__:00
mon8 Monday 08@cursor:00
mon12 Monday 12@cursor:00
monn Monday __placeholder__:00

補足

  • 曜日+時刻で展開する。
  • @cursor を付けているのは delete キーを2回押せば時刻調整ができるようにするため。
  • 曜日の末尾の文字を重ねると直接時刻を入力できる。

以上。

Dashのスニペットが機能しないのを直す

 環境

 問題

Dashのスニペットが機能しない。 キーワードを入力しても内容が展開されない。

 解決方法

  1. Dashを開く。
  2. Dashのスニペットを適当に1つ選ぶ。
  3. Dashのウィンドウ下にある "Use" ボタンをクリックする。

上記で他のスニペットを含め機能するようになる。

以上。

Mac OSでログイン後にレインボーカーソルになる

 環境

 問題

Mac OSで起動後(ログイン後)にレインボーカーソル(虹色のぐるぐる)になってしまう。

 解決方法

下記で解決しない場合もある。 Mac OS起動後に特に何も操作していないのにレインボーカーソルとなってしまう場合、 起動後に何らかのアプリケーションが自動起動しており、 この自動起動しているアプリケーションの起動処理で時間が掛かっている可能性がある。
上記が原因である場合、下記の方法で不要な自動起動を解除することで 問題を解決できる場合がある。

  1. システム環境設定を開く。
  2. システム環境設定の「ユーザとグループ」を開く。 f:id:foldrr:20150922145238p:plain

  3. ユーザーとグループから「ログイン項目」をクリックする。

  4. 画面左下の鍵が掛かっている場合はクリックして解除する。    (自分のパスワードを聞かれるので入力する)
  5. 画面中央のリストから不要な項目を探す。
  6. リストが長い場合はリストをスクロールして確認する。
  7. 不要な項目を選んで画面下の「-」ボタンをクリックしてログイン項目から削除する。 f:id:foldrr:20150922145241p:plain

ログイン項目から削除してもアプリ自体が削除されるわけではない。
ログイン項目に追加したい、あるいは間違って削除してしまった場合は、 「+」ボタンをクリックしてアプリケーションを選択する。

補足 / ログイン項目に登録しているアプリケーションはどこにある?

ログイン項目の対象アプリケーションを右クリックして "Finderに表示" をクリックすると、 Finder に当該アプリケーションが表示される。

以上。