2017.08.21

PorterDuff.Modeクラスについて

viewに描画する時に、PorterDuff.Modeクラスがある。

2つの画像を16種類の合成方法で、重ね合わせるもので、それぞれに名前がある。

参考になるのが以下のリンク。
Androidアプリ開発

| トラックバック (0)

Handlerでハマったこと


Handlerを使おうとすると、非常にシンプルなアプリでも以下のエラーが出る。

Error:(18, 33) エラー: Handlerはabstractです。インスタンスを生成することはできません。

javaのHandlerを使ったことが原因。

import java.util.logging.Handler;

import android.os.Handler;

に変更すると解決した。

インポートは気をつけよう。

| トラックバック (0)

2017.08.20

SurfaceViewについて

アニメーションとかゲームみたいに描画のパフォーマンスが必要なもの、凝ったグラフィックを描画したい場合はSurfaceView使え」だそうです。参考になる。

その他参考にしたサイトは
カメラを使ってみよう(前編)

当然だが、ViewをそのままSurfaceViewに書き換えるだけでいいわけではない。
ViewをそのままSurfaceViewにすると真っ黒な画面になってしまう。
その修正点は以下。

■SurfaceHolder.Callbackをインプリメントする。
サーフェスホルダと、3つのメソッドを実装。

public class testView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder holder;

public void surfaceCreated(SurfaceHolder holder){
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h){
}
public void surfaceDestroyed(SurfaceHolderholder){
}

}

■SurfaceHolder、holderを定義し
上のソースにもあるが、

 private SurfaceHolder holder;

を追加。

public testView(...内に、
holder = getHolder();
holder.addCallback(this);
を追加。

うまくいかない中、surfaceviewを使うな的な記事があったのでいったん保留。

めがねをかけるんだ

| トラックバック (0)

2017.08.17

LinearLayoutに関するもろもろの問題

■ケース1
オブジェクトを一番下に配置したいとき、よくある解説では、

android:gravity="bottom"

を推薦するけど、何が足りないのか、うまくいくことは少ない。

代わりに以下を入れるとうまくいく。

app:layout_constraintBottom_toBottomOf="parent"

これは、Android Studioで、Designモードでドラッグすれば自動で挿入される。


■ケース2
LinearLayout等で、

android:layout_width="match_parent"

と設定したにも関わらず、Designモードに行くと自動で数字が入ってしまう。
これは、ConstraintLayoutを使用しているかららしい。
出だしに、以下のように記載されていたらConstraintLayoutになっている。

これをRelativeLayoutにすれば戻るらしい。
とは言うものの、ある程度設計してしまってからRelativeLayoutに変更するのは何かとリスクがある。最初からRelativeLayoutにしておくことをおすすめ。


| トラックバック (0)

2017.08.16

画面の回転の固定について


画面を現在の状態で固定にしたいとき、APIレベル18以上であれば以下の一行ですむ。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

APIレベル17以下の場合は、センシングして以下のように設定。

switch (((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRotation()) {
case Surface.ROTATION_0:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Surface.ROTATION_90:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Surface.ROTATION_180:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
break;
case Surface.ROTATION_270:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
break;
}


静的に横固定する場合は、

android:label="@string/app_name"
android:screenOrientation="landscape">

landscape:横固定
portrait:縦固定
reverseLandscape:さかさまの横固定
reversePortrait:さかさまの縦固定

| トラックバック (0)

android アプリでインターネットに接続するためのパーミッション


AndroidManifest.xmlに以下の一文を追加。
久々に触ると結構忘れる。

| トラックバック (0)

2017.08.13

android.content.ActivityNotFoundException: No Activity found to handle Intent

暗黙的インテントでwebを起動する基本的な起動でエラー発生。

URIクラスで誤ると出るエラーらしくて、スペースでハマった人の事例もあったみたい。

Android初心者がAndroidアプリでGooglePlayを開こうとしてつまづいた話

しかし、今回の場合はそうではなかった。

テキストの例には、アクションの設定部分を
String action = "android.intent.action.VIEW";
Intent intent = new Intent( action , address );

とあったけど、正しくは、
String action = Intent.ACTION_VIEW;
Intent intent = new Intent( action , address );

としないといけないみたい。

その後、テキスト通りのソースでもうまくいく。
何かのインポートが抜けていた?
原因は不明。

| トラックバック (0)

Android Studio でのログの表示

サンプルコードですらエラーが出る・・・
ログを表示させるには以下の手順で確認。

下の列に、以下のようなタブが表示されているはず。
[6: Android Monitor] [0: Messages] [Terminal] [4: Run] [ 5:Debug] [ TODO ]
この[6: Android Monitor]を選ぶと表示。

表示されていなければ、Viewタブ→Tool Buttonsにチェックを入れる。

ある時からログが更新されなかったと感じたら、エミュレータを変えたかも。
Adnroid Monitor の左上当たりのセレクタで、[DISCONNECTED]となっていないか確認。
セレクタから、今動いているのを選ぶ。

| トラックバック (0)

2017.08.12

エミュレーターのワーニング

で、早速簡単なアプリをエミュレータで起動しようとするも、以下のワーニングのようなものがでる。

Some users have experienced emulator stability issues with this driver version. As
a result, we're selecting a compatibility renderer. Please check with your
manufacturer to see if there is an updated driver available.

使ってるバージョンのドライバが古い?
まずは、Tools→Android→AVD Manger
から、デバイスを一つ起動してみると、同じように出る。

では、[Create Virtual Device]からデバイスを新しく作ってみる・・・
が、新しく作ったデバイスでも、まだ出るみたい。

PC側のアップデートを後ほど確認するとして、一旦スルー。

| トラックバック (0)

androidアプリ開発再開

ずいぶんご無沙汰になってしまったけど、久々にandroid アプリの開発を再開してみる。
当面は引っかかった時のメモを書く。

| トラックバック (0)

«ロボットへの感情移入