Android プログラミング UI
雑なメモ
ダイアログ
public class TextViewEx extends Activity implements View.OnClickListener { private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT; private final static String TAG_MESSAGE = "0"; private final static String TAG_YESNO = "1"; private final static String TAG_TEXT = "2"; private final static String TAG_IMAGE = "3"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // レイアウトの生成 LinearLayout layout = new LinearLayout(this); layout.setBackgroundColor(Color.WHITE); layout.setOrientation(LinearLayout.VERTICAL); // 整列方向の指定 setContentView(layout); // テキストビューの生成 TextView textView = new TextView(this); textView.setText("これはテストです。"); textView.setTextSize(16.0f); textView.setTextColor(Color.rgb(0, 0, 0)); // コンポーネントのサイズの指定s textView.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); // レイアウトへのコンポーネントの追加 layout.addView(textView); // 画像の読み込み Bitmap bitmap = BitmapFactory.decodeResource( getResources(), R.mipmap.ic_launcher); // イメージビューの生成 ImageView imageView = new ImageView(this); imageView.setImageBitmap(bitmap); imageView.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); layout.addView(imageView); // ボタンの生成 layout.addView(makeButton("メッセージダイアログの表示", TAG_MESSAGE)); layout.addView(makeButton("Yes/Noダイアログの表示", TAG_YESNO)); layout.addView(makeButton("テキストダイアログの表示", TAG_TEXT)); layout.addView(makeButton(res2bmp(this, R.mipmap.ic_launcher), TAG_IMAGE)); } // ボタン作成 private Button makeButton(String text, String tag) { Button button = new Button(this); button.setText(text); button.setTag(tag); button.setOnClickListener(this); button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); return button; } // イメージボタンの作成 private ImageButton makeButton(Bitmap bmp, String tag) { ImageButton button = new ImageButton(this); button.setTag(tag); button.setOnClickListener(this); button.setImageBitmap(bmp); button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); return button; } // リソース->ビットマップ public Bitmap res2bmp(Context context, int resID) { return BitmapFactory.decodeResource( context.getResources(), resID); } // ボタン押下時に呼ばれる @Override public void onClick(View v) { String tag = (String) v.getTag(); if (TAG_MESSAGE.equals(tag)) { MessageDialog.show(this, "メッセージダイアログ", "ボタンを押した"); } else if (TAG_YESNO.equals(tag)) { YesNoDialog.show(this, "Yes/Noダイアログ", "Yes/No選択中"); } else if (TAG_TEXT.equals(tag)) { TextDialog.show(this,"テキスト入力ダイアログ","テキストを入力"); }else if(TAG_IMAGE.equals(tag)){ MessageDialog.show(this,"","イメージボタンを押した"); } } // メッセージアイアログ作成 public static class MessageDialog extends DialogFragment { // ダイアログの表示 public static void show(Activity activity, String title, String text) { MessageDialog f = new MessageDialog(); Bundle args = new Bundle(); args.putString("title", title); args.putString("text", text); f.setArguments(args); f.show(activity.getFragmentManager(), "messageDialog"); } // ダイアログの生成 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder ad = new AlertDialog.Builder(getActivity()); ad.setTitle(getArguments().getString("title")); ad.setMessage(getArguments().getString("text")); ad.setPositiveButton("OK", null); return ad.create(); } } // Yes/Noダイアログの作成 public static class YesNoDialog extends DialogFragment{ public static void show( Activity activity, String title, String text){ YesNoDialog f = new YesNoDialog(); Bundle args = new Bundle(); args.putString("title", title); args.putString("text", text); f.setArguments(args); f.show(activity.getFragmentManager(), "yesNoDialog"); } // Yes/Noダイアログの生成 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // リスナーの生成 DialogInterface.OnClickListener listener = // ダイアログボタン押下時に呼ばれる new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if(which == DialogInterface.BUTTON_POSITIVE){ MessageDialog.show(getActivity(),"","YES"); }else if(which == DialogInterface.BUTTON_NEGATIVE){ MessageDialog.show(getActivity(),"","NO"); } } }; AlertDialog.Builder ad = new AlertDialog.Builder(getActivity()); ad.setTitle(getArguments().getString("title")); ad.setMessage(getArguments().getString("text")); ad.setPositiveButton("Yes", listener); ad.setNegativeButton("No", listener); return ad.create(); } } // テキスト入力ダイアログの作成 public static class TextDialog extends DialogFragment{ private EditText editText; public static void show( Activity activity, String title, String text){ TextDialog f = new TextDialog(); Bundle args = new Bundle(); args.putString("title", title); args.putString("text", text); f.setArguments(args); f.show(activity.getFragmentManager(), "textDialog"); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { MessageDialog.show(getActivity(),"",editText.getText().toString()); } }; editText = new EditText(getActivity()); AlertDialog.Builder ad = new AlertDialog.Builder(getActivity()); ad.setTitle(getArguments().getString("title")); ad.setMessage(getArguments().getString("text")); ad.setPositiveButton("OK", listener); if(savedInstanceState != null)editText.setText(savedInstanceState.getString("editText","")); return ad.create(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("editText",editText.getText().toString()); } } }
チェックボックス、ラジオボタン、スピナー
public class CheckEx extends Activity implements View.OnClickListener{ private final static String BR = System.getProperty("line.separator"); private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT; // チェックボックスとラジオボタンとスピナー private CheckBox checkBox; private RadioGroup radioGroup; private Spinner spinner; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); LinearLayout layout = new LinearLayout(this); layout.setBackgroundColor(Color.WHITE); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); // チェックボックス checkBox = new CheckBox(this); checkBox.setText("チェックボックス"); checkBox.setChecked(true); checkBox.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); layout.addView(checkBox); // ラジオボタン RadioButton radio0 = new RadioButton(this); radio0.setId(0); radio0.setText("ラジオボタン0"); radio0.setTextColor(Color.rgb(0, 0, 0)); RadioButton radio1 = new RadioButton(this); radio1.setId(1); radio1.setText("ラジオボタン1"); radio1.setTextColor(Color.rgb(0, 0, 0)); // ラジオグループの生成 radioGroup = new RadioGroup(this); radioGroup.addView(radio0); radioGroup.addView(radio1); radioGroup.check(0); radioGroup.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); layout.addView(radioGroup); // スピナーの生成 ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item ); String[] strs = {"赤","青","黄"}; for(int i=0;i<strs.length;i++) adapter.add(strs[i]); spinner = new Spinner(this); spinner.setAdapter(adapter); spinner.setSelection(0); spinner.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); layout.addView(spinner); button = new Button(this); button.setText("結果表示"); button.setOnClickListener(this); button.setLayoutParams(new LinearLayout.LayoutParams(WC,WC)); layout.addView(button); } @Override public void onClick(View v) { toast("チェックボックス>"+checkBox.isChecked()+BR+ "ラジオボタン>" + radioGroup.getCheckedRadioButtonId()+BR+ "スピナー>" + spinner.getSelectedItem()); } private void toast(String text){ if(text == null) text = ""; Toast.makeText(this, text, Toast.LENGTH_LONG).show(); } }
WebView
<uses-permission android:name="android.permission.INTERNET" />
そんでコード。
public class WebViewEx extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); WebView webView = new WebView(this); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setSaveFormData(false); settings.setSupportZoom(false); webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { toast("通信エラーです"); } }); setContentView(webView); webView.loadUrl("http://python.org"); } private void toast(String string){ if (string == null)string = ""; Toast.makeText(this, string,Toast.LENGTH_LONG).show(); } }
リストビュー、グリッドビュー、ビューページャー
AdapterEx.java
public class AdapterEx extends Activity implements View.OnClickListener { private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT; private final static String TAG_LISTVIEW = "listview"; private final static String TAG_GRIDVIEW = "gridview"; private final static String TAG_VIEWPAGER = "viewpager"; public static ArrayList<AdapterItem> items; //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //要素の情報群の生成(1) items = new ArrayList<AdapterItem>(); for (int i = 0; i < 30; i++) { AdapterItem item = new AdapterItem(); item.icon = res2bmp(this, R.mipmap.ic_launcher); item.text = "項目"+i; items.add(item); } //レイアウトの生成 LinearLayout layout = new LinearLayout(this); layout.setBackgroundColor(Color.WHITE); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); //ボタンの生成 layout.addView(makeButton("リストビュー", TAG_LISTVIEW)); layout.addView(makeButton("グリッドビュー", TAG_GRIDVIEW)); layout.addView(makeButton("ビューページャー", TAG_VIEWPAGER)); } //ボタンの生成 private Button makeButton(String text, String tag) { Button button = new Button(this); button.setText(text); button.setTag(tag); button.setOnClickListener(this); button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC)); return button; } //ボタンクリック時に呼ばれる public void onClick(View v) { String tag = (String)v.getTag(); if (TAG_LISTVIEW.equals(tag)) { Intent intent = new Intent(this, ListViewActivity.class); startActivity(intent); } else if (TAG_GRIDVIEW.equals(tag)) { Intent intent = new Intent(this, GridViewActivity.class); startActivity(intent); } else if (TAG_VIEWPAGER.equals(tag)) { Intent intent = new Intent(this,ViewPagerActivity.class); startActivity(intent); } } //リソース→ビットマップ private Bitmap res2bmp(Context context, int resID) { return BitmapFactory.decodeResource( context.getResources(), resID); } }
AdapterItem.java
public class AdapterItem { public Bitmap icon; public String text; }
ListViewActivity.java
public class ListViewActivity extends Activity { private ArrayList<AdapterItem> items; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // 要素の取得 items = AdapterEx.items; // リストビューの生成 ListView listView = new ListView(this); listView.setScrollingCacheEnabled(false); listView.setAdapter(new MyAdapter()); setContentView(listView); } // 自作アダプタ private class MyAdapter extends BaseAdapter{ // 要素数の取得 @Override public int getCount() { return items.size(); } // 要素の取得 @Override public AdapterItem getItem(int position) { return items.get(position); } // 要素IDの取得 @Override public long getItemId(int position) { return position; } // セルのビューの生成 @Override public View getView(int position, View convertView, ViewGroup parent) { Context context = ListViewActivity.this; AdapterItem item = items.get(position); if(convertView == null){ LinearLayout layout = new LinearLayout(context); layout.setBackgroundColor(Color.WHITE); layout.setPadding(10, 10, 10, 10); layout.setGravity(Gravity.CENTER_VERTICAL); convertView = layout; ImageView imageView = new ImageView(context); imageView.setTag("icon"); imageView.setLayoutParams(new LinearLayout.LayoutParams(120, 120)); layout.addView(imageView); TextView textView = new TextView(context); textView.setTag("text"); textView.setTextColor(Color.BLACK); textView.setPadding(10, 20, 10, 20); layout.addView(textView); } // 値の指定 ImageView imageView = (ImageView)convertView.findViewWithTag("icon"); imageView.setImageBitmap(item.icon); TextView textView = (TextView)convertView.findViewWithTag("text"); textView.setText(item.text); return convertView; } } }
GridViewActivity.java
public class GridViewActivity extends Activity{ private ArrayList<AdapterItem> items; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); items = AdapterEx.items; GridView gridView = new GridView(this); gridView.setNumColumns(4); gridView.setAdapter(new MyAdapter()); setContentView(gridView); } private class MyAdapter extends BaseAdapter { @Override public int getCount() { return items.size(); } @Override public AdapterItem getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Context context = GridViewActivity.this; AdapterItem item = items.get(position); if(convertView == null){ LinearLayout layout = new LinearLayout(context); layout.setBackgroundColor(Color.WHITE); layout.setPadding(10, 10, 10, 10); layout.setGravity(Gravity.CENTER_VERTICAL); convertView = layout; ImageView imageView = new ImageView(context); imageView.setTag("icon"); imageView.setLayoutParams(new LinearLayout.LayoutParams(120, 120)); layout.addView(imageView); TextView textView = new TextView(context); textView.setTag("text"); textView.setTextColor(Color.BLACK); textView.setPadding(10, 20, 10, 20); layout.addView(textView); } ImageView imageView = (ImageView)convertView.findViewWithTag("icon"); imageView.setImageBitmap(item.icon); TextView textView = (TextView)convertView.findViewWithTag("text"); textView.setText(item.text); return convertView; } } }
ViewPagerActivity.java
//ビューページャーアクティビティ public class ViewPagerActivity extends Activity { private ArrayList<AdapterItem> items; //アクティビティ起動時に呼ばれる @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); //要素の情報群の取得 items = AdapterEx.items; //ビューページャーの生成(7) ViewPager viewPager = new ViewPager(this); viewPager.setAdapter(new MyAdapter()); setContentView(viewPager); } //自作アダプタ private class MyAdapter extends PagerAdapter { //ページ数の取得 @Override public int getCount() { return items.size(); } //ページ生成時に呼ばれる @Override public Object instantiateItem(View view, int pos) { ViewPager pager = (ViewPager)view; Context context = ViewPagerActivity.this; AdapterItem item = items.get(pos); //レイアウトの生成 LinearLayout layout = new LinearLayout(context); layout.setBackgroundColor(Color.WHITE); layout.setPadding(10, 10, 10, 10);//(4) layout.setOrientation(LinearLayout.VERTICAL); layout.setGravity(Gravity.CENTER);//(5) //アイコン ImageView imageView = new ImageView(context); imageView.setLayoutParams(new LinearLayout.LayoutParams(240, 240)); imageView.setImageBitmap(item.icon); layout.addView(imageView); //テキストの指定 TextView textView = new TextView(context); textView.setTextColor(Color.BLACK); textView.setGravity(Gravity.CENTER);//(5) textView.setText(item.text); layout.addView(textView); //ページャー pager.addView(layout, 0); return layout; } //ページ破棄時に呼ばれる @Override public void destroyItem(View collection, int position, Object view) { ((ViewPager)collection).removeView((View)view); } //ページを構成するView判定時に呼ばれる @Override public boolean isViewFromObject(View view, Object object) { return view == (LinearLayout)object; } } }
参考文献
Androidプログラミングバイブル SDK5/4対応 (smart phone programming bible)
- 作者: 布留川英一
- 出版社/メーカー: ソシム
- 発売日: 2015/01/26
- メディア: 単行本
- この商品を含むブログ (2件) を見る