SQLの窓

2015年05月22日


Android Studio : 現在の時間を ライフサイクルのアクティブな時に処理される onStart で表示する( 5.1.1 )

 
 

実行後、現在の時刻を表示します。
アプリがアクティブになった場合にも、その時の現在の時刻を表示します
MainActivity.java
package app.lightbox.winofsql.jp.whattime;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;


public class MainActivity extends Activity {

	// *************************************
	// 自動作成( onCreate )
	// *************************************
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Log.i("lightbox", "開始");

	}

	// *************************************
	// CTRL + O から追加( onStart, onStop, onPause )
	// *************************************
	@Override
	protected void onStart() {
		super.onStart();

		TimeZone tz = TimeZone.getTimeZone("Asia/Tokyo");
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("HH'時'mm'分'ss'秒'");
		sdf.setTimeZone(tz);
		String time = sdf.format(date);
		Log.i("lightbox", time);

		TextView tv = (TextView) this.findViewById(R.id.text);
		tv.setText(time);

	}

	@Override
	protected void onStop() {
		super.onStop();

		Log.i("lightbox", "画面が切り替わりました");

	}

	@Override
	protected void onPause() {
		super.onPause();

		Log.i("lightbox", "画面が切り替わろうとしています");

	}

	// *************************************
	// 自動作成( onCreateOptionsMenu )
	// *************************************
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.menu_main, menu);
		return true;
	}

	// *************************************
	// 自動作成( onOptionsItemSelected )
	// *************************************
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();

		if (id == R.id.action_settings) {

			Log.i("lightbox", "メニュー");

			// 第二画面へ移動
			Intent intent = new Intent(MainActivity.this, NextPage.class);
			startActivity(intent);

			return true;
		}

		return super.onOptionsItemSelected(item);
	}
}

TimeZone

エミュレータで、TimeZone.getDefault() は正しい時間がとれませんでした。確実に、『Asia/Tokyo』を指定するのが良いと思います。

onStart

onCreate では、アプリの開始時にしか実行されないので画面が切り替わって戻って来た時にもその時点での時間を表示する為に、onStart で実行しています。

Activity のライフサイクル( Android Developers )

画面の切り替えは、エミュレータのコントロールで出来ますが、内部のメニューから次の画面に遷移するようにして状況を確認できるようにしています。次画面は、Activity を継承したクラスの onCreate で初期画面( 元々のHello World ) を表示しています。



Activity の追加( AndroidManifest )

その為に必要な Activity の定義は、AndroidManifest にも追加しています。その際の入力は、Android Studio が、.NextPage を候補として表示してくれました。



Override

Override するメソッドは、必要なところにカーソルを置いて、CTRL + O でダイアログが表示されるので、とても便利です。



Project Structure





 

Min SDK Version と Max SDK Version は同じで一番新しいものを、プロジェクト作成時に指定しています。ただ、これの影響でスキンのタイトルが白くなるので、styles.xml( v21 ) の内容を変更しています。
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
    </style>
</resources>

画面の TextView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                tools:context=".MainActivity">

    <TextView
        android:id="@+id/text"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="40dp"
        android:textColor="#ff000000"/>

</RelativeLayout>

プロジェクト作成時の HelloWorld をそのまま使っていますが、テキストを中央に表示する為に、以下のプロパティで both を指定します。



あとは、テキストサイズと、テキストの色と id をプロパティから変更しています



タグ:Android Studio
posted by lightbox at 2015-05-22 19:39 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする

2015年04月19日


Android Studio でボタンをクリックして トースト(Toast) を表示する / onClick プロパティと Button へのイベント登録( Listener )

Android でボタンに対する処理を作成したい場合、Hello World! 的には Toast を表示するのが最もてっとり早く動作の確認をする事ができます。

Android Studio で大きなボタンを一つ作成

ボタンに対するイベントの登録方法は、一般的には Button(TextView) のメソッドを使って Listener を作成しますが、クリックだけに関して言うと、onClick プロパティを使用できます。

Android Studio でボタンをクリックして トースト(Toast) を表示する



public void メソッド(View view)

このような形式のメソッド( 本来の setOnClickListener 用 )を事前に作成しておくと、プロパティの設定でそのメソッドが表示されるので、選択するたけでコード作成が完了します。

▼ CTRL + O で既存のコードを利用する

setContentView のブロックが作成されるので、clickButton に変更して中身を作成します。

以下は具体的なコードです
	public void clickButton(View view) {
		Toast toast;
		toast = Toast.makeText(
				MainActivity.this,
				"こんにちは",
				Toast.LENGTH_LONG
		);
		toast.show();
		Log.i("lightbox", "こんにちは");

	}

その他のイベントに対しては、以下のようにして Listener を作成します

setOnLongClickListener( 長押し )
		// ボタン
		Button button;
		// 作成したボタンより ID でインスタンスをセット
		button = (Button)MainActivity.this.findViewById(R.id.button);

		// 長押し用のイベントを作成
		button.setOnLongClickListener(new View.OnLongClickListener() {
			@Override
			public boolean onLongClick(View v) {
				Log.i("lightbox", "長押し");
				return false;
			}

		});


setOnTouchListener( タッチのダウンとアップ )

上のコードで定義した button に対して新たに setOnTouchListener を実行します
		// タッチ用のイベントを作成
		button.setOnTouchListener(new View.OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				int action = event.getAction();
				switch(action) {
					case MotionEvent.ACTION_DOWN:
						Log.i("lightbox", "ACTION_DOWN");
						break;
					case MotionEvent.ACTION_UP:
						Log.i("lightbox", "ACTION_UP");
						break;
				}

				return false;
			}

		});


logcat のフィルターを作成





▼ フィルタの名前を任意に変更


▼ タグでフィルタする






posted by lightbox at 2015-04-19 17:00 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする

2015年04月12日


Google スプレッドシートで、Android Studio の重要な操作のまとめ

HTML で表を作るより、Google スプレッドシートで作って埋め込んだほうが簡単で便利でメンテナンス性が高くて使いまわしができて印刷も PDF でできるという事に最近気が付きました。

印刷用の PDF を取得するには、こちらのリンクから開いて下さい



posted by lightbox at 2015-04-12 00:45 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする

2015年04月11日


Android Studio で com.example. lightbox. myapplication を jp.winofsql. lightbox. threeButton に変更

Android Studio でほぼ普通に作成した時の com.example..... というパッケージ名を全ての階層で変更可能な方法で変更します。ここでは、com.example.lightbox.myapplication を jp.winofsql.lightbox.threeButton に変更します

※ myapplication だけの変更ならば、Refactor の Rename のみで可能です

パッケージをツリービューで選択



Refactor の Rename を選択





一番下の名前を変更





自動的に変更されます。Android Studio が自動で作成した下の Test クラスは削除してもいいです

途中の階層をエクスプローラから変更







エラーを ALT + Enter で問題解決します



▼ このクラスは削除してもいいです



AndroidManifest.xml 内の記述変更





build.gradle( Module : app ) 内の記述変更





▼ Sync Now をクリック




posted by lightbox at 2015-04-11 21:38 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする

2015年04月04日


ショートカットキーを使って、Android Studio のコード記述を極限まで楽にする

簡単な Toast の処理をクラスで作成する作業でたくさん使ってみました。

ALT + Insert (ツリービュー上)



ALT + Insert は、場所によって表示されるウインドウが違いますが、この場合は プロジェクトのツリービュー内の Activity のソースの親ノードを選択しています。その後、Java Class を選択します。



すると、上のようなダイアログが表示されるので、クラス名を入力して OK ボタンをクリックします。
ALT + Insert (ソース上) クラスファイルが作成され、その中にクラスのブロックが記述されているので、その中にカーソルを置いて ALT + Insert を実行します。 すると、今度は『Generate』のウインドウが表示されるので、Constructor を選択します。 ▼ 生成されました CTRL + O (Override Methods) メソッドを追加する為に既存のメソッド記述を利用します。 この場合は、toString メソッドを @Override なしでコードを転送して、適宜変更します。 ▼ 変更後のコード CTRL + ALT + T (囲み処理/Surround) これは、行を選択してその上下になにかしらのコードを追加する処理です。ここでは、try 〜 catch を選択していますが、自動的に 対応する Resources.NotFoundException が記述されました。 CTRL + D (複製) 対象行を選択して、実行すると複製されます。これで文字列を引数とするメソッドを作成します CTRL + / (行コメント) ※ コメントに対して実行すると、コメント解除 範囲選択して、 実行します。 CTRL + SHIFT + / (範囲コメント) ※ コメントに対して実行すると、コメント解除
public class QlMessage {
	public QlMessage() {
	}

	public void show(Context context,int id) {
		try {
			Toast ts = Toast.makeText(context,id,Toast.LENGTH_LONG);
			ts.show();
		} catch (Resources.NotFoundException e) {
			e.printStackTrace();
		}
	}

	public void show(Context context,String message) {
		Toast ts = Toast.makeText(context,message,Toast.LENGTH_LONG);
		ts.show();
	}
}



posted by lightbox at 2015-04-04 21:29 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする

2015年04月03日


Android Studio の 『CTRL + SHIFT + I』(定義の参照) を中心に、少しでも時間短縮

対象にカーソルを置いて、『CTRL + SHIFT + I』で定義されているソースをウインドウで表示が可能です。例えば、以下の場合は画像の表示がされます。





これは、クラスのメソッドだとこうなります。



この時表示されるウインドウのツールバーの赤い枠で囲ったアイコンをクリックすると、タブでソースが開いて通常の編集が可能になります。



プロジェクトツリーと同期させる

これはとても便利ですが、しかしこのままではソースがツリーのどこにあるかが解りません。そこで、ツリービューの設定を行います。



ツリービューの上部分の空いているところを右クリックすると、オプションを設定できるので『Autoscroll』を両方ともチェックします。こうすると、ツリー側でクリックするとタブが開き、タブを開いたり選択したりするとツリーが開いてその場所が選択されます。

▼ 定義参照ウインドウより編集アイコンを選ぶと、自動的にツリーが開いて選択


CTRL キーを押しながらタブをクリックすると…



File Path という、エクスプローラで開く為の補助ウインドウが表示されます。ファイルを選択すると、そのフォルダ内に入ってそのファイルを選択し、フォルダを選択するとその親フォルダ内に入ってそのフォルダを選択します



ツリービューから開くには



右クリックで表示されるメニューから Show in Explorer を選択します

SHIFT キーを押しながらタブをクリックすると…

タブが即閉じられるので注意して下さい




posted by lightbox at 2015-04-03 22:13 | Android Studio 1 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり