Androidアプリ開発パーフェクトマスター - 2日目 - 前半
Chapter 7
続きから。
Genymotionのエミュレータが起動しなくなったので、一旦仮想端末設定を削除して作り直した。
package com.myexample.chapter7_4.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends ActionBarActivity implements View.OnClickListener { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout testLayout = new LinearLayout(this); testLayout.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); testLayout.setOrientation(LinearLayout.VERTICAL); setContentView(testLayout); textView = new TextView(this); textView.setText(""); textView.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); testLayout.addView(textView); Button button = new Button(this); button.setText("Button"); button.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); button.setOnClickListener(this); testLayout.addView(button); } @Override public void onClick(View view) { textView.setText("Button Pushed."); } }
- イベントリスナー専用のクラスをつくる
package com.myexample.chapter7_5.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends ActionBarActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout testLayout = new LinearLayout(this); testLayout.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); testLayout.setOrientation(LinearLayout.VERTICAL); setContentView(testLayout); textView = new TextView(this); textView.setText(""); textView.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); testLayout.addView(textView); Button button = new Button(this); button.setText("Button"); button.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); button.setOnClickListener(new MyCls()); testLayout.addView(button); } class MyCls implements View.OnClickListener { @Override public void onClick(View view) { textView.setText("Button Pushed."); } } }
- 複数のイベントを処理する
package com.myexample.chapter7_6.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends ActionBarActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); ((Button) findViewById(R.id.button)).setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { textView.setText("Button Pushed."); } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { textView.setText("Button Released."); } return true; } } ); } }
Chapter 8 ウィジェットを配置する
package com.myexample.chapter8_1.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends ActionBarActivity { private int i = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button) findViewById(R.id.button)).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { ((TextView) findViewById(R.id.textView)).setText( String.format("%d 回目", ++i) ); } } ); } }
- MainActivityに実装
package com.myexample.chapter8_1_2.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Button; public class MainActivity extends ActionBarActivity implements View.OnClickListener{ private int i; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button) findViewById(R.id.button)).setOnClickListener(this); } @Override public void onClick(View view) { ((TextView) findViewById(R.id.textView)).setText( String.format("%d 回目", ++i) ); } }
- レイアウトをJavaソースで
package com.myexample.chapter8_1_3.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Button; public class MainActivity extends ActionBarActivity { private TextView textView; private int i; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout testLayout = new LinearLayout(getApplication()); testLayout.setLayoutParams( new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT ) ); testLayout.setOrientation(LinearLayout.VERTICAL); setContentView(testLayout); textView = new TextView(this); textView.setText("ボタンをタップした回数を数えます"); textView.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); testLayout.addView(textView); Button button = new Button(this); button.setText("Button"); button.setLayoutParams( new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) ); button.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { textView.setText(String.format("%d 回目", ++i)); } } ); testLayout.addView(button); } }
- ロングクリック時のイベント処理
package com.myexample.chapter8_1_2_1.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button) findViewById(R.id.button)).setOnLongClickListener( new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { ((TextView) findViewById(R.id.textView)).setText( "ロングクリックイベントが発生しました" ); return true; } } ); } }
- ボタンにアニメーション
package com.myexample.chapter8_1_3_1.app; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.view.animation.CycleInterpolator; import android.view.animation.ScaleAnimation; import android.widget.Button; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((Button) findViewById(R.id.button)).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { ScaleAnimation scale = new ScaleAnimation( 0.5f, 10.0f, 0.5f, 10.0f, view.getWidth() / 2, view.getHeight() / 2 ); scale.setDuration(1000); scale.setInterpolator(new CycleInterpolator(0.5f)); view.startAnimation(scale); } } ); } }
タイマー機能でスクショ撮ってみた。