第二章
隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
这句话要在setContentView()前调用
注意:
继承AppCompatActivity时使用:
supportRequestWindowFeature(Window.FEATURENOTITLE)
继承activity时使用:
requestWindowFeature(Window.FEATURENOTITLE)创建菜单Menu,在res文件下创建一个menu的文件夹,然后在里面写xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
然后重写onCreateOptionsMenu()方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
在重写菜单点击相应事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
3.销毁一个活动 :finish();
4.安卓打开自带浏览器跳到指定网址
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri.parse(http://www.baidu.com);
intent.setData(content_url);
startActivity(intent);
5.打电话
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number));
startActivity(intent);
6.当用户点击back键执行相关代码要重写onBackPressed()方法
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
7.activity是有栈(Task)来管理的,栈是先进后出
8.将activity变成dialog形式修改主题就好
<activity android:name=".DialogActivity"
android:theme="@android:style/Theme.Dialog" >
</activity>
9.解决activity被回收数据没有保存,重写onSaveInstanceState()方法
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String tempData = "Something you just typed";
outState.putString("data_key", tempData);
}
//在oncreate方法中
if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
Log.d(TAG, tempData);
}
10.activity的启动模式
standard模式:默认模式,如果你创建一个activity三次,它会在栈中创建三个这个activity的实例,然后你退出时就要点击三次
singleTop:如果发现活动在已经在栈顶了就使用这个实例,否则重新创建。
singleTask:检查该栈中有没有这个activity的实例,如果有就直接使用该实例,还会把这个实例上面的其他实例全部清除出栈。
singleInstance:会启动一个新的栈来管理活动。可以让其他应用来访问这个栈里面的实例,这是其他三种模式做不到的。
- 得到栈的id可以用getTaskId()的方法
11.知道当前是哪个activity,写一个baseactivity
//activity的管理类
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
//baseActivity
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
12.启动activity的最佳写法
假如从FirstActivity 跳到SecondActivity ,我们可以在SecondActivity中写一个actionStart的方法暴露在外面,然后在 FirstActivity 中调用
//SecondActivity
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
//FirstActivity
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
第三章
EditText:android:maxLines=”2” 最大行数为两行,对了就会上滚
ProgressBar:默认是圆形的,可以改成水平的,max是最大值
android:max="100"
style="?android:attr/progressBarStyleHorizontal"
3.AlertDialog
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("");
builder.setMessage("");
//可以设置view
builder.setView(new ImageView(MainActivity.this));
//设置选项
builder.setSingleChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, 0,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}
);
builder.setCancelable(false);
builder.setNegativeButton("", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setPositiveButton("", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.show();
4.ProgressDialog
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("This is ProgressDialog");
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.show();
5.自定义dialog
AlertDialog是Dialog的子类,也可以直接基于Dialog自定义。
String info = cityData.getPointerList().get(position).toString();
AlertDialog alertDialog = new AlertDialog.Builder(CityActivity.this).create();
alertDialog.show();
//自定义布局
Window window = alertDialog.getWindow();
window.setContentView(R.layout.dialog_main_info);
TextView tv_title = (TextView) window.findViewById(R.id.tv_dialog_title);
tv_title.setText("详细信息");
TextView tv_message = (TextView) window.findViewById(R.id.tv_dialog_message);
tv_message.setText(info);
6.TableLayout
android:stretchColumns=”1”表示表格不能完全沾满屏幕就拉升
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1" >
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="Account:" />
<EditText
android:id="@+id/account"
android:layout_height="wrap_content"
android:hint="Input your account" />
</TableRow>
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="Password:" />
<EditText
android:id="@+id/password"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</TableRow>
<TableRow>
<Button
android:id="@+id/login"
android:layout_height="wrap_content"
android:layout_span="2"
android:text="Login" />
</TableRow>
</TableLayout>
7.动态加载布局
//第一个参数是布局文件的id,第二个是给加载好的布局再添加一个父布局,这里的父布局就是自己,所以用this。
LayoutInflater.from(context).inflate(R.layout.title,this);
8.系统屏幕密度:
ldpi:240*320
mdpi:320*480
hdpi:480*800
xhdpi:720*1280
xxhdpi:1080*1920