Androidを忘れそうなので、昔のサイトで作った Hello World みたいなのがちゃんと動くか試してみた。
NetBeans8 + NBAndroid で環境をさくっと作り、以下を書いてみる。
呼び出されると一秒後に適当なメッセージを表示し、以降、約二秒ごとにカウントアップしていくものらしい。
ほむがどうのと書いてあるのは、当時の時代の背景だろう。気にするな。
ちなみに動作させると、真っ黒な画面に「1匹のほむほむ」と書かれる。以降、二秒ごとに2匹、3匹と増えていく。ただそれだけの代物である。まぁ、「一定間隔で何かを動かす」のサンプルですね。
で、終わる時はバックボタンを押す。すると以下のようになる。
MainActivity.java
import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private boolean sunset = false; // trueになったら日没(プログラム終了)。 private int count = 0; private final Context context = this; private final Handler handler = new Handler(); //private TextView web = (TextView) findViewById(R.id.textView1); // ←ここで直接セットするとAndroidで例外になるぞ! onCreateでやれ private TextView web; private final Runnable showMessageTask = new Runnable() { @Override public void run() { if(sunset == false){ web.setText(String.valueOf(++count) + "匹のほむほむ"); handler.removeCallbacks(showMessageTask); // 自分自身を再呼び出しする前にコールバックを消しておこう。 handler.postDelayed(showMessageTask, 2000); }else{ // fin. finish(); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); web = (TextView) findViewById(R.id.textView1); handler.postDelayed(showMessageTask, 1000); } @Override public void onBackPressed() { new AlertDialog.Builder(MainActivity.this).setPositiveButton("終了", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int which) { try { count = -9999; sunset = true; } catch (Error e) { } MainActivity.this.finish(); } }).setNegativeButton("Cancel", null).setMessage("終了しますか??").show(); } }
Resources/layout/main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, MainActivity" /> </LinearLayout>
ここまでで動くんだけど、動かしたら気づくと思う。要は端末を回転させると、なんか初期に戻ってしまうのだ。
というわけで、固定にしてしまおう。
設定はManifest fileで、screenOrientの値を設定する。
- 縦固定→ portrait
- 横固定→ landscape
- システムに従う→ unspecified
manifest file(AndroidManifest.xml)
<activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="portrait">
ちなみにプログラム側で固定するには、以下のように。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setRequestedOrientation((ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.main); }
こんなところかな。
ちなみに参考にしたのは以下。