0年 0月 の投稿一覧

Activityの状態遷移とライフサイクルイベント

Activityの概念はだいたい以下の図の動きになります。

外部操作によってアプリが起動され、アプリ自身の実行状態が生まれます。
ここから他アプリに遷移した場合、実行状態は一時停止状態に切り替わり停止状態へと
状態変化が行われていきます。
また、遷移先の他アプリが終了となれば、再び実行状態に戻り、自身の終了命令によって
一時停止状態→停止状態と順に状態が変わっていき最終的に消滅状態へと移っていきます。

これが基本的なActivityの状態遷移となります。

また、不測の事態に陥った場合にはAndroid OSによって強制終了となる場合もあります。

Activityのライフサイクルイベント

上記図のActivity全体遷移図が頭の中で描ければ、実際にどういったイベント処理で状態遷移が
行われていくのかを考える必要があります。

実際にこの全体の状態遷移を実行するイベントが以下のものになります。
(細かい内容はここでは割愛します)

「Create」処理、「Start」処理、「Resume」処理、「Pause」処理
「Stop」処理、「Restart」処理、「Destroy」処理

上記のような処理を経て「実行」「一時停止」「停止」「消滅」などの状態遷移が行われますので、アプリの作り手としては状態の遷移を考慮して必要な処理をどうしたいか、その内容を各イベント内に記述して実装していけばいいだけですね。

これがActivityのライフサイクルです。

 

【Xeory Base カスタマイズ】サイドウィジェットのタイトル装飾

テーマに対してちょっとしたカスタマイズを加えるだけでガラッと見栄えが変化したりしますよね。
これからXeroy Baseのテーマに対してカスタマイズを少しずつ加えていくことにしましたので、その辺を紹介していければなと思っています。

まず手始めに何をしようかと考えたところ、サイドページ(ウィジェット)があまりにも殺風景だったので、各サイドウィジェットのタイトルに装飾を加えることにしました。
カスタマイズ内容として非常に単純でCSSに以下赤字箇所を追加することで対応が可能です。

カスタマイズ内容

① タイトルバーのバックグラウンドカラーを設定
② タイトルバーに影を設定して立体化
③ タイトルの印字位置を中央揃えに変更
④ 上下にpadding設定

.side-widget .side-title {
margin: 0 0 32px;
font-size: 15px;
text-align:center;
background-color:#4169e1;
color:white;
padding:3px 0 3px 0;
box-shadow:5px 5px rgba(0,0,0,0.4);

}

③のタイトル印字位置の変更ですが、もともと左揃えがデフォルトであり、リストタイトルの左揃えと同化している感じで気持ち悪かったのでウィジェット別の区切りをはっきりさせようかと思いタイトルの印字位置を中央揃えに変更しました。
また、②のShadow設定と合わせて、よりタイトルの強調化をはかっています。

変更前の画像

変更後の画像

 

ちょっとした変更ですが、サイドウィジェットのタイトルをはっきりさせるだけでもサイトの全体像が少し引き締まった感じがでますね。

【Android Studio】AVD(Android Virtual Device)が起動しない場合の対処法

Android Studioをインストールした時によく直面する問題ですね。
実機では動作確認できるけれどもエミュレーターを使おうとすると動かないといったケースに
遭遇する方は意外に多いのではないでしょうか。

このAVDが動かない原因と対処法を以下にまとめますのでご参考までにどうぞ。

エミュレーターが起動しない原因は大きくわけて2つあります。

エミュレーターが起動しない原因

  1. 開発環境PCのBIOS設定で仮想化支援機能が無効になっている
  2. Intel x86 Emulator Accellerator(HAXM)がインストールされていない

だいたいこの2つの問題を解決するだけでエミュレーターを無事に起動することができると思います。

問題の解決方法

1.開発環境PCのBIOS設定で仮想化支援機能を有効にする

※解決方法の解説の前に使用されている開発環境PCが仮想化支援機能を有していな場合は、エミュレーターでの実行は無理ですのでその点ご注意ください。

BIOS設定はPC起動時に行います。どのPCでも入口は同じです。
ただし、PCによってBIOS設定画面起動のキーが異なるのであらかじめ確認をしておいてください。
PCの取説などがない場合は、PCに電源を入れた際にチラッと表示される画面にBIOS起動キーが表示されています。
ほどんどがファンクションキーまわりの(ESC、F1、F2、F12)ではないでしょうか?

無事にBIOS設定画面を起動できたら、まずはCPU関連の設定項目を探してみてください。
※仮想化支援機能はCPU設定項目です。

BIOS設定画面もまたメーカーによってレイアウト、扱う言葉などがまったく異なりますのでCPU設定項目の中で「Virtual」「Virtualization」「VT」などの単語が表示されている項目があれば間違いありません。
その設定項目の設定値が「FALUSE」または「DISABLE」とかになっていた場合はエミュレーターなどの仮想化技術が使用できない状態になっていますので、この設定を「TRUE」または「ENABLE」に変更してあげます。
すでに「TRUE」もしくは「ENABLE」になっている場合は変更する必要はありません。

BIOSの設定は以上となります。

2.HAXMをインストールする

2-1.SDKのインストール

エミュレーターを実装する上でSDKが絶対条件として必要になります。
ただ、Android Studioにはあらかじめインストールする際にSDKも一緒にインストールされるのでこの点に関してはまず問題ありません。

2-2.エミュレーターを使う上での必須パッケージをインストール

Android SDK Platform-toolsのインストールAndroid Studioから[ツール(T)] – [Android] – [SDKマネージャー]を選択してSDKマネージャーを起動します。

「SDKツール」タブがあるのでこれをクリックしてSDKツール画面を開き、Android SDK Platform-toolsのインストール状況を確認してください。
これがチェックのついていない[未インストール]状態の場合は、インストールを行ってください。
また、あわせてAndroid Emulator、Android SDK Toolsのインストール状況、更新状況も確認してインストールもしくは最新の更新を行ってください。
この設定を行うことでAndroid Studioからエミュレーターを起動させる土台が出来上がりました。

2-3.HAXMのインストール

最後にHAXMのインストールです。
これは開発アプリをどのAndroid OSバージョンを対象にするのかにもよってOSのバージョンごとにインストールをする必要があります。先に[SDKプラットフォーム]で対象とするAndroid OSのバージョン(APIレベル)のパッケージをインストールしておきます。
※パッケージのインストール項目は、「SDK Platform」「System Image」と書かれている項目だけで問題ありません。SDKプラットフォームのインストールが無事に終わると先ほどの[SDKツール]画面に「Intel x86 Emulator Accelerator(HAXM installer)」が現れますのでチェックを入れてインストールを行えば完了です。以上の設定でAVDマネージャーからSDKプラットフォームやSDKツールでインストールを行ったAndroid OSバージョン(APIレベル)の仮想デバイスを作成することでAndroid Studioからエミュレーターを起動することができます。

【Android開発】アプリのタイトルバーを非表示にする方法

デフォルトでアプリの新規プロジェクトを作成すると下図のようにActivityに赤枠のようにアプリのタイトルが表示されます。
こういったタイトル領域を削ってアプリ画面の領域リソースをフルに使った画面設計を計画する場合、AndroidManifest.xmlの記述修正で対応が可能になります。

アプリのタイトルバーを消す方法

AndroidManifest.xml内で以下の記述箇所があれば、その記述箇所を修正します。
記述箇所がない場合は、修正内容を追記してAndroidManifest.xmlファイルを保存することで対応ができます。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

android:theme=”@style/AppTheme”をandroid:theme=”@android:style/Theme.Black.NoTitleBar.Fullscreen”に変更する

たったこれだけの修正で実行アプリの画面からタイトルが消えます。
是非、試してみてください。



上記、修正でもタイトルバーが消えない場合、メインアクティビティーのxmlファイルを確認してみてください。

以下のようなツールバーレイアウトに関する記述があればこれをまるっと削除します。
これで完全にタイトルを消すことができます。

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

【Android 開発】Default Activity Not Found エラー解消方法

「Default Activity Not Found」エラーの解消方法の紹介

直訳すると基本アクティビティがないよ!とそのまんまです。
他リソースからソースをコピーしてきた、または謝ってアクティビティを消してしまった、キャッシュにゴミがたまっているなど原因はそれぞれあると思いますが、まずはエラーを出力しているであろうAndroidManifest.xmlの中味を確認してみてください。

参考AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample.sp" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

赤字内の基本Activity情報がなくなってしまっているか、記述が間違っている可能性がある為、AndroidManifest.xml内の記述と実Activityの存在確認をしてみてください。
大半が、このあたりの整合性が保てていないことが原因で本件のエラーが出ています。

AndroidManifetst.xml内の記述と実Activityの存在の整合性が保てている場合、それでもエラーが出る場合は一度Android Studioをリブートしてみることを勧めます。
リブートしても問題が解決しない場合は、Android Studioのキャッシュにゴミが残っている可能性が高いので、一度以下のようにキャッシュをリフレッシュしてみてください。

Android Studioによるキャッシュの開放方法

下図の通り、Android Studioで[ファイル] – [キャッシュの破棄/再始動] を選択してキャッシュの開放を実行します。
※Android Studioを日本語化していない場合は、[File] – [Invalidate Caches / Restart]となります。