Activity
类似于Controller
,同一时间只能展示给用户一个。
onCreate()
在activity
运行时被调用,应在此方法中初始化UI,加载资源文件等。
TextView
- 在代码中创建:
在onCreate()
中加入如下代码:TextView tv = new TextView(this); tv.setText("你好"); setContentView(tv);
- 在
xml
中创建:<TextView //指定该控件id android:id="@+id/tv" //匹配父控件 android:layout_width="match_parent" //适应内容 android:layout_height="wrap_content" //设置字体大小 android:textSize="20sp" //设置字体颜色 android:textColor="#00ff00" android:text="您好"/>
- 关联
使用findViewById
讲xml
中控件与activity
关联
通过find方法传入关联id,获取返回值view,转换为view具体子类textview,再赋予局部变量tv。接下来就可以在activity中对tv进行操作。TextView tv = (TextView) findViewById(R.id.tv); tv.setText(Html.fromHtml("欢迎物品<font color=blue>为建</font>瓯市五角枫就怕"));
利用formHtml
方法,可以解析带有html
语言格式的字符串,做到是字符串中间变色。
改变字体颜色的另一种方法SpannableStringBuilder
,类似于NSAttributeString
String str = "欢迎的违法身份无法的说法三等分"; SpannableStringBuilder style = new SpannableStringBuilder(str); style.setSpan(new ForegroundColorSpan(Color.RED), 0,6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); style.setSpan(new ForegroundColorSpan(Color.GREEN), 6,15,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.setText(style);
- 超链接
使用autoLink
设置web
,phone
等设置超链接。
EditText
类似于textField
常用属性
-
maxlength
限制输入字符数 -
singleLine
是否单行 -
inputType
限制输入类型 -
hint
place holder -
drawableLeft
编辑框左侧图片,同理还有上下左右。图片导入为放进mipmap
文件夹,使用@mipmap/picName
引用 -
background
背景。可以通过在drawable
中添加shape.xml
文件,写入圆角代码,使用@drawable/shape
调用实现圆角。
DDMS
控制模拟器发送短信,电话等。
同时可以向模拟器中app中添加文件,下载文件,删除文件等。(新版已移除)
Button
添加点击事件。
使用setOnClickListener
,传入参数实现onClick
方法接口
方法一:直接闭包
button = findViewById(R.id.button);
//参数为一个接口
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v("color","dianji");
Toast.makeText(MainActivity.this,"点击按钮",2).show();
}
});
方法二:声明变量
button.setOnClickListener(listener);
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//强转button类型
Button btn = (Button)v;
//switch根据buttonId筛选多个按钮
switch (btn.getId()){
case R.id.button:
Log.v("button","按钮1");
break;
default:
Log.v("button","按钮2");
break;
}
}
};
使用
Log.v
等方式打印;使用Toast.makeText
进行toast
提示。
Intent
调用系统方法
使用intent
表示意图,实现打电话发短信等。注意要在AndroidManifest
设置相应权限。
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:137343"));
startActivity(intent);
}
进入新页面及传值
使用intent
进入其他页面以及传值。
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
intent.putExtra("str", "main activity data");
startActivity(intent);
使用
intent.put(serializable)
传递对象
反向传值
A类中:
public final static int REQUEST_CODE = 1;
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
intent.putExtra("str", "main activity data");
startActivityForResult(intent,REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == requestCode && resultCode == SecondActivity.RESULT_CODE){
Bundle bundle = data.getExtras();
String string = bundle.getString("back");
mainBtn.setText(string);
}
}
B类中:
public final static int RESULT_CODE = 1;
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("back","back data");
setResult(RESULT_CODE,intent);
finish();
}
};
当有多个按钮返回的时候,可以有多个宏定义来进行区别判断。
public final static int RESULT_FIRST_BUTTON = 1;
public final static int RESULT_SECOND_BUTTON = 2;
Activity生命周期
image.png退出会执行onDestroy
,切换到后台不会。
-
onCreat
布局,调用数据库获取数据,数据绑定等。 -
onPause
不能执行耗时操作,会影响下一个界面进入。可以数据持久化,不在后面方法避免被系统终止。
保存Activity状态
在onSaveInstanceState
中保存。在onPause
方法之前。
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outPersistentState.putString(CONTENT,editText.getText().toString());
}
在onCreate
中读取。
if (savedInstanceState != null && savedInstanceState.containsKey(CONTENT)){
String str = savedInstanceState.getString(CONTENT);
editText.setText(str);
}
Theme
在manifests
中使用theme
设置titile bar
等各种属性。
布局
LinearLayout:线性布局
-
linearLayout
一个linearLayout
为一个竖向线性行。 -
gravity
子控件或内部内容对齐方式。 -
layout_weight
多个控件指定正整数来比例分配总空间。
AboluteLayout:绝对布局
设置layout_x
和layout_y
设置控件位置。相对较为死板,不推荐。
FrameLayout:框架布局
通过框架视图层叠的方式来进行布局。
-
layout_gtavity
此视图相对于父子图的对齐方式。
RelativeLayout:相对布局
类似于约束,相对位置布局。
-
layout_left
等属性指定与另一控件位置关系,如左侧相邻。 -
layout_alignParentRight
等属性指定与其父视图位置关系,如父视图最左侧。 -
layout_alignLeft
等属性指定与另一个控件的对齐方式,如左对齐。 -
center_...
等为居中方式。 -
padding
表示中间间隔。 -
marginLeft
等表示边缘距离。
网友评论