[Java] 現在の日付を取得

Javaで現在の日付を取得する方法として、カレンダーオブジェクトを
使用した場合のメモを記載しておきます。


// カレンダーオブジェクトを生成
Calendar cal = Calendar.getInstance();

// 現在の年を取得
int year = cal.get(Calendar.YEAR);
// 現在の月を取得
int month = cal.get(Calendar.MONTH) + 1;
// 現在の日を取得
int day = cal.get(Calendar.DATE);


※ "java.util.Calendar" を import する必要があります。

月は0~11の値で表されるため、上記のコードでは"+1"をしています。

[Android] Preferenceを使用してデータを保存

アプリの設定情報などを保存しておくのに便利なプリファレンス機能

キーを使用してデータを保存することができる仕組みで、保存するデータは
"/data/data/package_name/shared_prefs"の下にXMLファイルで
保存されています。

dataディレクトリの下なので、root権限の内一般的な端末では、
XMLの中身を確認することはできません(エミュレータなら参照できます)。

XMLファイルの中身は以下のようになってます。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="SAMPLE_KEY">test</string>
</map>



では、アプリの実装の方。

単純に、「登録」ボタンを押下するとEditTextの内容をプリファレンスに保存して、
「読込」ボタンを押下するとプリファレンスからデータを読み込んで下のTextViewに
表示するようにしてみました。

pref.png

■コード

public class TestClass extends Activity {

private EditText edit;
private TextView text;
private Button button1;
private Button button2;
private SharedPreferences sp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

sp = getSharedPreferences("pref", MODE_PRIVATE);

edit = (EditText)findViewById(R.id.editText1);
text = (TextView)findViewById(R.id.textView2);
button1 = (Button)findViewById(R.id.button_regist);
button2 = (Button)findViewById(R.id.button_read);

// 登録ボタン押下時の処理
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// プリファレンスに書き込む
Editor e = sp.edit();
e.putString("SAMPLE_KEY", edit.getText().toString());
e.commit();
}
});

// 読込ボタン押下時の処理
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// プリファレンスから読み込む
String str = sp.getString("SAMPLE_KEY", "");
text.setText(str);
}
});
}
}

[Android] ダイアログ表示(ダイアログに独自レイアウトを使用)

AlertDialogにEditTextを配置してみました。
※レイアウトを変更すれば、自由にViewを配置することができます。

Android ダイアログ カスタマイズ

■ダイアログのレイアウト

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dip"
android:text="TextViewとEditTextを配置" />

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dip" >
<requestFocus />
</EditText>

</LinearLayout>


■Activity側のコード

public class TestClass extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button b = (Button)findViewById(R.id.button1);

// ボタンのクリックリスナー
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.dialog, (ViewGroup) findViewById(R.id.dialog_layout));
new AlertDialog.Builder(Sample004.this)
.setView(layout)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.show()
;
}
});
}
}


inflateでレイアウトを読み込んでダイアログにセットすることで、
ダイアログを自由にカスタマイズできました。

ブログでソースコードを記載する時に、見栄えをよくする

色々なブログを見てると、ソースコードを表示するときに
行数などつけてとても見やすくなってるのが見られます。

このブログでも同じようなことしたいなと思い、
どうすればできるのか探してみました。

以下のサイトで期待する方法が掲載されていました。
http://recoboo.blog28.fc2.com/blog-entry-88.html



SyntaxHighlighter

というのを使用します。

javaScriptとCSSをアップロードして、それを読み込むだけで、
簡単にできました。


<pre class="brush: html;">
ここにソースコードを記載
</pre>


環境さえ作っておけば、上記で見栄えよく
掲載することができるようになります。

[Android] EditTextに絵文字を入力

一部のアプリではソフトキーボードから絵文字が入力できるようになっています。

最近では有名な無料IMEのSimejiが絵文字対応になったと話題に。


ということで、AndroidアプリでIMEから絵文字を入力できるようにすることを
お試ししてみた。

Android 絵文字

■実装

public class Sample extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample);

EditText editor = (EditText)findViewById(R.id.editText1);
Bundle b = editor.getInputExtras(true);
if (b != null) {
b.putBoolean("allowEmoji", true);
}
}
}



Bundleを取得して、"allowEmoji"をIMEに通知してあげるだけ。
これで、IME側がEditTextに絵文字が入力できることを解釈してくれて、
絵文字入力が可能となります。


ただし、端末の中に絵文字のフォントがないと絵文字を入力しても、
文字化けとかになるだろうな。

ざっくりだが、
国内メーカの端末は絵文字のフォントが入っていて、
海外メーカの端末は絵文字のフォントが入っていない
と思われる。

[Android] WebViewのリンクのフォーカス

AndroidのWebViewの実装が最近、バージョンアップによる
変更量がだいぶ大きい。

Android 4.0.3で動作を見てみると、WebViewのリンクに
ふぉーかすが当たっても枠線が見えない。。。

Android_WebView4.0.3


決定キーを押下すると、アクションが実行されているので、
フォーカスは当たっているのだが、枠が見えないと、
どこにフォーカスがあるのかわからない。


前のバージョンでは以下のように枠線が表示されていたのに。

Android_WebView2.2


これはエミュレータの問題なのかな??
ブラウザでも同様の事象は発生するようだし。。。

[Android]アプリケーションのアイコン

Androidのアプリケーションのアイコン(ランチャーに表示されるやつ)は
画像を用意しておけば、後は自動的に表示をしてくれる。

格納場所


  • リソースとしてres/drawableの下に格納する

リソースツリー

drawable-hdpi、drawable-ldpi、drawable-mdpiはそれぞれ異なるサイズのアイコン画像を格納しておくことで端末の解像度に合わせて、Android側で自動的に選択して使用してくれる。

drawable-hdpi72×72
drawable-mdpi48×48
drawable-ldpi36×36



デフォルトアイコン


デフォルトでは以下のアイコンが使用される。

アイコン

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter