package app.tj.com.hello; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.InputFilter; import android.text.Spanned; import android.text.TextWatcher; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //动态创建视图 LinearLayout linearLayout = new LinearLayout(this); ViewGroup.LayoutParams layoutParams = linearLayout.getLayoutParams(); //linearLayout.addView(); linearLayout.setLayoutParams(layoutParams); //类似模板 LayoutInflater layoutInflater = getLayoutInflater(); layoutInflater.inflate(R.layout.activity_main,null); setContentView(R.layout.activity_main); //添加按钮 Button button = (Button) findViewById(R.id.add); Button button2 = (Button) findViewById(R.id.add2); //添加监听 /*button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"添加",Toast.LENGTH_SHORT).show(); } });*/ button.setOnClickListener(listener); //触碰事件 button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int actionType = event.getAction(); if (actionType==MotionEvent.ACTION_DOWN){ //按下 }else if (actionType==MotionEvent.ACTION_MOVE){ //移动 }else if (actionType==MotionEvent.ACTION_UP){ //松开 } //绑定多个事件时是否往下传递,true不传递 return false; } }); //获取布局页面 相当于DIV,可以加相关事件 ViewGroup viewGroup = (ViewGroup) findViewById(R.id.main); viewGroup.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return false; } }); //一个ACTIVITY是一个UI线程,线程会监听页面的变化,每个ACTIVITY 中的VIEW 会相互影响 //当线程阻塞超过5秒,系统就会干预 //解决办法 再创建一个线程 //新创建的线程不能修改当前UI主线程中的VIEW组件 button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } //不能再新开辟线程中调用V //TextView textView = (TextView) v; //可用---android解决方案 //可读性差 v.post(new Runnable() { @Override public void run() { //异步执行 放到UI主线程中 TextView textView = (TextView) v; } }); //第二种方案 AsyncTask } }).start(); } }); //android 继承的五个优先级,进程在运行过程中会随时变化 //1用户正在操作的 //2用户从一个程序切换到另一个程序 //3边放音乐,边看电子书,音乐的service //4定时检测更新 //5缓存进程 //资源文件 res R类中都可以获取(asset不能获取AsserManager二进制流的方式获取) //anim (xml动画文件) int color = this.getResources().getColor(R.color.colorAccent); this.getWindow().setBackgroundDrawableResource(R.color.colorAccent); //dimen尺寸资源 //drawable 图片资源文件 //view 的子类为vidget //相对位置 layout_height //wrap 内容多少 组件多大 //ems 多少个字 //fill 和父窗口一直 在定义 android:height不受影响 //android:ems="2" 显示几个字 多了换行 //android:gravity 文本位置设置 //文本框 TextView textView = (TextView) findViewById(R.id.textView); textView.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { //文本框内容 String content = s.toString(); } }); textView.setFilters(new InputFilter[]{ //实现自定义过滤 new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { return null; } } }); //Spinner下拉列表 //数组适配器 //ArrayAdapter //LinearLayout 线性布局 布局可以相互嵌套 //RelativeLayout 相对布局 1位置 2边距 3对齐方式 //FrameLayout 帧布局 从屏幕左上角(0,0)布局,进行叠加 } //把listener 和按钮分离,可以重用 private View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()){ case R.id.add: //Toast.makeText(MainActivity.this,"添加",Toast.LENGTH_SHORT).show(); Toast toast = Toast.makeText(MainActivity.this,"添加",Toast.LENGTH_SHORT); //设置显示位置 toast.setGravity(Gravity.CENTER,0,0); toast.show(); //通知 //notification break; default: Log.i("app","测试"); } } }; //下拉列表会用到 class MyAdapter extends BaseAdapter{ @Override public int getCount() { return 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { return null; } } }