エンターテインメントから工業利用まで、プロジェクションマッピングの活用・運用をお考えの方へ
情報表示用のデジタルサイネージから、センサーを利用したインタラクティブ要素などをお考えの方へ
VRHMD用コンテンツからプラットフォームを利用した360度ムービーを活用したPRをお考えの方へ
Androidのアプリで別ページへの遷移を表現するための方法として、intentを使ったものがあります。
intentとは、Androidアプリと別のAndoroidアプリとの接続を行ったり、アプリ内でのページ同士の接続の際に使う機能のことを指すようです。
今回は、intentを使用したページ遷移の方法について調査を行いました。
まず、ページ遷移後の画面を追加します。
Android Studioの画面左「Project」の中のapp→src→main→java で右クリックし、
new→Activty→Blank Activity を選択します。
今回、遷移後のファイル名は「SubActivity」にしました。その他は以下を参考にどうぞ。
今回は以下のような記述になりました。
onCreate時に作成したactivity_sub.xmlが表示されるようになっています。
package com.example.test_1.app; import android.app.Activity; import android.os.Bundle; public class SubActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); } }
そのactivity_sub.xmlは以下のように記述してあります。
こちらは単純に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="com.example.test_1.app.SubActivity"> <TextView android:layout_height="wrap_content" android:text="次のページです!" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/textView1" android:layout_width="wrap_content"> </TextView> </RelativeLayout>
続いて、AndroidManifesto.xmlを開き、作成したSubActivityを追加します。
以下を参考に、追記を行ってください。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test_1.app" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.test_1.app.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> <activity android:name="com.example.test_1.app.SubActivity" android:label="@string/app_name" > </activity> </application> </manifest>
遷移前のページ(今回は「MainActivity」という名前にしています)は、以下のようになりました。
ボタンをクリックした際の挙動を関数にして、intentを使ってSubActivityへ遷移を行っています。
package com.example.test_1.app; import android.app.Activity; import android.content.Intent; import android.view.View; import android.os.Bundle; import android.widget.TextView; import android.widget.Button; import android.view.View.OnClickListener; public class MainActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private Button button_segue; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button_segue=(Button)findViewById(R.id.button_segue); button_segue.setOnClickListener(this); } //ボタンクリック時の関数 public void onClick(View v) { if(v==button_segue){ Intent intent = new Intent(this, SubActivity.class); startActivityForResult(intent, 0); } } }
最後に、遷移前のページのxmlファイル「activity_main」に、遷移するためのボタンを配置して完了です。
<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="com.example.test_1.app.MainActivity"> <Button android:text="次のページへ遷移" android:id="@+id/button_segue" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> </RelativeLayout>
起動してみます!
ボタンを押すと…
次のページへ遷移しました!
調べていて後から気づいたのですがiOSアプリと違い、Androidでは遷移することを「segue」と言わないのかもしれません。
まだ調査不足なのですが、その場合は「segue」という言葉は使わない方がわかりやすいですね。
イベントプロダクション・グラフィックデザイナーを経て、2010年3月に株式会社アイデアクラウドを設立。近年、WEBから得た技術をベースに、プロジェクションマッピング事業をはじめとした先端事業をスタート。