(一)Android程序结构1.Android-Manifest.xml没有在Android-Manifest.xml文件中注册的活动是不能使用的。将活动设置为主活动:
<activity android:name=" ">
<intent_filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<intent_filter/>
</activity>
2.日志工具
Log.d( ) 用于打印调试信息,在debug中查看
Log.d(TAG,"message"); //TAG传入类名,用于过滤日志
tips:在全局,输入log 加Tab键 ,会以当前类名自动生成一个TAG常量
(二)活动
part 1:activity
1.创建活动
勾选项:Generate Layout File 自动为Activity创建一个对应的布局文件
Launcher Activity 自动将Activity设置为当前项目的主活动
Backwards Compatibilty 为项目启动向下兼容的模式 (一定要选)
2.在活动中使用Toast
Toast.makeText( FirstActivity.this , "message" , Toast_LENGTH_SHORT ).show( );
上下文 传入的文本内容 显示时长
3.在活动中使用menu
Menu resource file 新建menu文件
(1)布局文件
<menu xmlns:
<item
android :id="@+id/add_item"
android :title="add"/>
<item
……
<menu/>
(2)逻辑
在Activity中重写onCreateOptionsMenu( )方法 快捷键Ctrl+O
public boolean onCreateOptionsMenu(Menu menu){
getMenuInlater().inlate(R.menu,main,menu);
return true; //返回true,表示允许菜单显示;返回false,反之
}
4.销毁一个活动
按下back键,或调用finish( )方法
补充:重写手机back键点击事件,重写onBackPressed( )方法
part 2:Intent
1.显式Intent
意图明确:
Intent intent =new Intent ( FirstActivity.this , SecondActivity.class ) ;
startActivity( intent ) ;
2.隐式Intent
通过action 和 category匹配合适的Activity去启动
通过在<activity>标签下配置<intent-filter>的内容,指定当前活动可以响应的action 和 category.
目的activity:
<activity android : name=".SecondActivity">
<intent-filter>
<action android : name=" "/>
<category android : name=" "/>
</intent-filter>
</activity>
起点activity:
Intent intent = new Intent ( " " );//对应action 的值
intent . addCategory(" ");
startActivity(intent);
补充:隐式Intent 可以启动程序内的活动,也可启动其他程序的活动。
启动网页、拨打电话、获取地理位置
3.向下一个活动传递数据
通过putExtra( )方法
起点activity:
String data="kkkkkkkk";
Intent intent = new Intent (FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data",data); //putExtra( )方法接收两个参数,键值对
目的activity:
Intent intent = getIntent();//通过getIntent()方法获取到用于启动活动的Intent
String data=intent.getStringExtra("extra_data");
如果, 传递字符串,用getStringExtra( )方法
传递整型数据,用getIntExtra( )方法
传递布尔型数据,用getBooleanExtra( )方法 ,以此类推。
4.返回数据给上一个活动
通过startActivityForResult( )方法
起点activity:
Intent intent = new Intent (FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1); //第二个参数是请求码,用于在之后的回调中判断数据的来源
目的activity:
Intent intent = new Intent(); //构建一个Intent,仅用于传递数据,没有指定任何意图
intent.putExtra("data_return","Hello!");//将要传递的数据放到Intent中
setResult(RESULT_OK,intent);
finish();
setResult( )方法接收两个参数,第一个用于向上一个活动返回处理结果,一般只使用RESULT_OK 或RESULT_CANCELED,第二个参数把带有数据的Intent传递回去。
然后调用finish( )方法销毁当前活动。
起点activity:
由于使用startActivityForResult( )方法来启动SecondActivity,在SecondActivity被销毁后会回调上一个活动的onActivityResult( )方法,因此在起点activity中重写这个方法来得到返回的数据
part 3:活动的生命周期
part 4:实践技巧
(三)UI
1.控件
android:hint 显示提示性文字
ProgressBar
在屏幕中中心有一个原型的进度条,表示正在加载一些数据style属性可修改样式
AlertDialog
当前界面弹出对话框
ProgressDialog
显示进度条的对话框
setCancelable( ) dismiss( )
2.布局
android:gravity 用于指定文字在控件中的对齐方式
android:layout_gravity 用于指定控件在布局中的对齐方式
(十)服务service
1.多线程
新建一个类继承自Thread,重写父类run()方法
class MyThread extends Thread{
@override
public void run(){
//具体逻辑
}
}
启动线程
new.MyThread( ).start( );