Fragment 基礎
package com.advanced_android.fragmenttransactionsample; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; public class MainActivity extends AppCompatActivity { private static final String FRAGMENT_TAG = "FRAGMENT_TAG"; private static final String KEY_NUMBER = "KEY_NUMBER"; private int mNumber = 0; private FragmentManager.OnBackStackChangedListener mListener = new FragmentManager.OnBackStackChangedListener() { @Override public void onBackStackChanged() { FragmentManager fragmentManager = getSupportFragmentManager(); int count = 0; for (Fragment f : fragmentManager.getFragments()) { if (f != null) { count++; } } mNumber = count; Log.d("MainActivity", "onBackStackChanged mNumber=" + mNumber); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .add(R.id.fragment_container, MyFragment.getInstance(mNumber)) .addToBackStack(null) .commit(); } }); findViewById(R.id.remove_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mNumber == 0) { return; } FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.popBackStack(); } }); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.addOnBackStackChangedListener(mListener); Fragment fragment = fragmentManager.findFragmentByTag(FRAGMENT_TAG); Log.d("MainActivity", "onCreate fragment=" + fragment + ", mNumber=" + mNumber); if (savedInstanceState == null) { fragmentManager.beginTransaction() .add(R.id.fragment_container, MyFragment.getInstance(mNumber), FRAGMENT_TAG) .addToBackStack(null) .commit(); } } @Override protected void onDestroy() { super.onDestroy(); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.removeOnBackStackChangedListener(mListener); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_NUMBER, mNumber); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); mNumber = savedInstanceState.getInt(KEY_NUMBER); } }
package com.advanced_android.fragmenttransactionsample; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class MyFragment extends Fragment { private static final String ARG_NO = "ARG_NO"; public MyFragment() { } public static MyFragment getInstance(int no) { MyFragment fragment = new MyFragment(); Bundle args = new Bundle(); args.putInt(ARG_NO, no); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_my, container, false); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int no = getArguments().getInt(ARG_NO, 0); String text = "" + no + "番目のFragment"; Log.d("MyFragment", "onCreate " + text); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView textView = (TextView) view.findViewById(R.id.text); int no = getArguments().getInt(ARG_NO, 0); String text = "" + no + "番目のFragment"; Log.d("MyFragment", "onViewCreated " + text); textView.setText(text); } }
CircleIndicator を ViewPager の最下部に置く
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.makaroni.circleviewpagertest.MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <me.relex.circleindicator.CircleIndicator android:id="@+id/indicator" android:layout_width="match_parent" android:layout_alignBottom="@+id/viewpager" android:layout_height="50sp" android:layout_marginBottom="50sp" app:ci_drawable="@drawable/circle" app:ci_height="10sp" app:ci_width="10sp" /> </RelativeLayout>
Unity Button OnClick処理
例はボタンを押したら残機を増やす処理
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class IncrementZankiController : MonoBehaviour { public Text text; public Image heart1; public Image heart2; public Image heart3; public void IncrementLife(){ Sprite image = Resources.Load<Sprite> ("heart_full"); int life = int.Parse (text.text); if (life == 0) { heart1.sprite = image; life++; } else if (life == 1) { heart2.sprite = image; life++; } else if (life == 2) { heart3.sprite = image; life++; } text.text = life.ToString (); } }
ダイアログにEditView表示して、内容をクリップボードにコピー
@OnClick(R.id.btn) void buttonOnClick(View v) { //テキスト入力を受け付けるビューを作成します。 final EditText editView = new EditText(MainActivity.this); editView.setText("hogehoge"); new AlertDialog.Builder(MainActivity.this) .setIcon(android.R.drawable.ic_dialog_info) .setTitle("タイトル") .setView(editView) .setPositiveButton("コピー", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { CopyClipBoard(editView.getText().toString()); } }) .setNegativeButton("キャンセル", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }) .show(); } public void CopyClipBoard(String text) { SetClipData(text); } private void SetClipData(String allText) { try { ClipData.Item item = new ClipData.Item(allText); String[] mimeType = new String[1]; mimeType[0] = ClipDescription.MIMETYPE_TEXT_URILIST; ClipData cd = new ClipData(new ClipDescription("text_data", mimeType), item); ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); cm.setPrimaryClip(cd); } catch(Exception e) { e.printStackTrace(); } }
Android リストビュー
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView myListView = (ListView) findViewById(R.id.myListView); ArrayList<User> users = new ArrayList<>(); int[] icons = { R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, }; String[] names = { "maroni1", "maroni2", "maroni3", }; String[] locs = { "US", "UK", "JP", }; for (int i = 0; i < icons.length; i++) { User user = new User(); user.setIcon(BitmapFactory.decodeResource( getResources(), icons[i] )); user.setName(names[i]); user.setLocation(locs[i]); users.add(user); } UserAdapter adapter = new UserAdapter(this, 0, users); // for (int i = 0; i < 30; i++) { // items.add("item-" + i); // } // // ArrayAdapter<String> adapter = new ArrayAdapter<String>( // this, // R.layout.list_item, // items // ); // myListView.setEmptyView(findViewById(R.id.emptyView)); myListView.setAdapter(adapter); myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick( AdapterView<?> parent, View view, int position, long id ) { TextView name = (TextView)view.findViewById(R.id.name); Toast.makeText( MainActivity.this, Integer.toString(position) + ":" + name.getText().toString(), Toast.LENGTH_SHORT ).show(); } }); } public class UserAdapter extends ArrayAdapter<User> { private LayoutInflater layoutInflater; public UserAdapter(Context context, int resource, ArrayList<User> users) { super(context, resource, users); this.layoutInflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = layoutInflater.inflate( R.layout.list_item, parent, false ); holder = new ViewHolder(); holder.icon = (ImageView) convertView.findViewById(R.id.icon); holder.name = (TextView) convertView.findViewById(R.id.name); holder.location = (TextView) convertView.findViewById(R.id.loc); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } User user = (User) getItem(position); holder.icon.setImageBitmap(user.getIcon()); holder.name.setText(user.getName()); holder.location.setText(user.getLocation()); return convertView; } } static class ViewHolder { ImageView icon; TextView name; TextView location; } public class User { private Bitmap icon; private String name; private String location; public Bitmap getIcon() { return icon; } public void setIcon(Bitmap icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } } }
Keras で ORの学習
import numpy as np import keras from keras.utils import np_utils from keras.models import Sequential from keras.layers import Dense model = Sequential() model.add(Dense(input_dim=2, activation='relu', units=1)) model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy']) # データセット x_train = [ [0, 0], [0, 1], [1, 0], [1, 1], ] # 正解ラベル y_train = [[0],[1],[1],[1]] model.fit(x_train, y_train, nb_epoch=10, batch_size=1) score = model.evaluate(x_train, y_train, verbose=0) print("test-accuracy: {}".format(score[1]))
シンプルなmnist (python3.5 chainer)
import chainer import chainer.functions as F import chainer.links as L from chainer import training from chainer.training import extensions class MnistModel(chainer.Chain): def __init__(self, out_units): super(MnistModel,self).__init__( l1 = L.Linear(None, 100), l2 = L.Linear(None, 100), l3 = L.Linear(None, out_units)) def __call__(self,x): h = F.relu(self.l1(x)) h = F.relu(self.l2(h)) return self.l3(h) model = L.Classifier(MnistModel(out_units=10)) optimizer = chainer.optimizers.Adam() optimizer.setup(model) train, test = chainer.datasets.get_mnist() train_iter = chainer.iterators.SerialIterator(train, 100) test_iter = chainer.iterators.SerialIterator(test, 100,repeat=False, shuffle=False) updater = training.StandardUpdater(train_iter, optimizer, device=-1) trainer = training.Trainer(updater, (100, 'epoch'), out="result") trainer.extend(extensions.Evaluator(test_iter, model, device=-1)) trainer.extend(extensions.LogReport()) trainer.extend(extensions.PrintReport(['epoch', 'main/loss', 'validation/main/loss', 'main/accuracy', 'validation/main/accuracy'])) trainer.extend(extensions.ProgressBar()) if extensions.PlotReport.available(): trainer.extend( extensions.PlotReport(['main/loss', 'validation/main/loss'], 'epoch', file_name='loss.png')) trainer.extend( extensions.PlotReport( ['main/accuracy', 'validation/main/accuracy'], 'epoch', file_name='accuracy.png')) trainer.run()