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;
}
}
}