activity: launchMode
1、singleTop :栈顶是当前的activity时,才不会创建新的activity:注意(栈顶)
2、singleTask:启动activity时,先检查栈中是否有当前的activity,有则弹出当前activity的之上的所有activity,无则创建。
3、singleInstance:是一个单例模式,保证activity的单独性。他和singleTask的区别是:前者是创一个activity放在一个单独的任务栈中,在启动一个不同activity时还会在创一个任务栈将activity放进去,每次启动activity的时候都会跳到相应栈,找不到放入新栈。singleTask是每次启动都会在任务中查找要启动的activity是否存在,有—>则将前面的activity弹出,无—>则创建。
Intent的使用
- 使用显式的Intent
Intent in = new Intent(context,destinaion.class)
- 使用隐式的Intent
<activity android:name=".SecondActivity> <intent-filter> /*如果有多个activity的action名字重复,Intent请求时则会出现一个选择的activity的界面 只说Intent单独查找action,其他都一样*/ <action name="android.intent.action.NAME" /> //intent 对象中引用的值 <category name="android.intent.category.DEFAULT"> // intent.addCategory引用 <intent-filter> <activity> //在activity类中使用 Intent in = new Intent("android.intent.action.NAME");
- Intent的其他使用
<activity android:name=".SecondActivity>
<intent-filter>
<action name="android.intent.action.VIEW" /> //intent 对象中引用的值
<category name="android.intent.category.DEFAULT"> // intent.addCategory引用
<data android:scheme="http">
<data android:scheme="http">
<data android:host="127.0.0.1">
<data android:port="8080">
<data android:path="路径">
<intent-filter>
<activity>
//另一个功能配置
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://baidu.com")); // geo 地理位置, tel : 电话
startActivity(i);
- intent 数据传递功能
//利用intent进行传递数据
Intent i = new Intent(Intent.ACTION_VIEW);
i.putExtra(key,value);
startActivity(i);
//利用Bundle也可以传数据
Intent intent=new Intent(MainActivity.this,TwoActivity.class);
Bundle bundle=new Bundle();
bundle.putString("name","张三");
bundle.putInt("age",18);
bundle.putString("gender","男");
intent.putExtras(bundle);
startActivity(intent);
Action 生命周期
图片:
各种布局控件
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progress_bar"
/>
// java 代码
if(bar.getVisibility()==View.GONE){ //进度条没出现吗?
bar.setVisibility(View.VISIBLE);
}else{
bar.setVisibility(View.GONE);
}
------------------------------------------------------
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/progress_bar"
android:max="100"
style="?android:attr/progressBarStyleHorizontal"
/>
//bar ->ProgressBar经过findViewById()之后的对象
int a = bar.getProgress();
a = a+10;
bar.setProgress(a);
//横向的进度条设置
新的基本布局
- Precent Layout
此布局不同于LinearLayout,RelativeLayout,帧布局,
第一步、 打开app/build.gradle文件,添加依赖库
《第一行代码》书本版本可能和你的不一样。解决方法如下dependencies{ //........ compile 'com.android.support:percent:24.2.1' } //当android studio弹出一个框的时候点击sync Now
找到android SDK的文件夹 \AndroidSDk\extras\android\m2repository\com\android\support\percent
在这里就能看到各种版本的,这里我选择26的26.0.0-alpha1,重新导入,之后重新Sync就可以了!