1-Android基础知识
2015-08-17 19:29
423 查看
一项目中资源
美工提供的图片都放在drawable-hdpi中即可
资源的使用
AndroidManifestxml
注释
日志工具的使用
margin与padding的区别
设置控件的可见
二android基本用法
java文件
布局文件
Menu的使用
Intent
全屏设置与横竖屏
活动的启动模式
1standard
2singleTop
3singleTask
4singleInstance
启动活动的最佳写法
1)在代码中:R.string.hello_world
2)在XML中@string/hello_world
2)icon表示app的图标,可以通过更改其值而更换图标;
label表示app的名称;
3)进行注册,(后面介绍)
尖括号中,叹号,两边- -
2)位置:不能写到别的<>之间。
2)打印日志的方法:
Log.v() [打印最为琐碎信息,级别verbose]
Log.d() [打印一些调试信息debug]
Log.i() [打印比较重要的数据info]
Log.w() [打印警告 warn]
Lof.e() [打印错误 error]
传入的参数,一般第一个是当前类名即可,第二个是要打印的消息。
不要再用system.out.println();
3)添加过滤器:
法1:在logcat中点击加号,进行添加—–>起个名称,通过Tag是只显示名称为Tag中的名称的信息。
法2:通过右上角的5个级别。
padding:是内部离开边缘的距离,会使点击的范围变大
演示:
setVisible(View.)
将布局文件写到res—>layout中。
2)id 的使用:
在xml中,定义一个id:@+id/button1 ; 引用一个id :@id/button1
3)步骤2:
布局文件在java文件中用代码,加载一个布局:
由于在建立布局文件时,项目都会在R.java中生成一个相应的资源id,这里,我们通过R中的这个id进行加载:
例如:setContentView(R.layout.first_layout);
4)步骤3:在AndroidManifest文件中注册:
<1>将注册声明写在application标签中。
<2>利用activity注册
<3>如果要是布局在一启动就显示,就加上:
范例:
<2>xml中的代码:
<3>在activity中加载:
重写onCreateOptionsMenu(Menu menu){}
注释:
getMenuInflater()创建对象;
inflate方法创建菜单,传入的两个参数:1是指定通过那个资源创建菜单,2是指定菜单项添加到哪个Menu对象中;
返回true是将菜单显示。
Activity Service,ContentProvider,BroadcastReceiver
如果说五大组件,就是包括(Intent)
功能:各组件之间交互的一种重要方式,一般用于启动活动、启动服务、以及发送广播等场景。
用法:
<1>显式Intent:
1)Intent构造函数的两个参数(提供一个启动活动的上下文,指定要启动的目标活动)
2)启动活动
等同于利用component的方式:
<2>隐式Intent:
方法:
1)现在AndroidManifest.xml中指定当前活动能够相应的action和category。
2)在跳转时,构造Intent传入的参数即为action,并利用addCategory方法添加category,只有当action和category都匹配时,才能够跳转成功。这时也需要category有个默认的设置,所以这里没有必要来过滤category。
<3>更多隐式用法:
1)打开浏览某个网页:
setData指定当前Intent正在操作的数据
Intent.ACTION_VIEW是android内置动作。
2)调用系统拨号界面:
Intent.ACTION_DIAL:android内置动作,拨号,但不拨打出去。
3)Intent.ACTION_CALL:直接拨打出电话,但需要在manifest中添加权限:
4)发短信:
不需要权限ACTION_SENDTO,Uri: “smsto:1008”
需要权限:ACTION_SEND ,Uri: “smsto:1008”(但可能所用的应用程序没有这个自动发送的功能)
总结:
Intent intent = new Intent(action,uri);
action 启动某个特定的应用,比如打电话。
打电话:action:ACTION_DAIL(不需要权限,但等待用户发送确定)和ACTION_CALL(权限) Uri:”tel:1234”
发短信:action:ACTION_SENDTO(不需要权限,但等待用户发送确定) 和ACTION_SEND(权限) Uri : “smsto:2436”
打开网页:action:ACTION_VIEW Uri:”http://www.baidu.com”
利用Intent向下一个活动传递参数:
Intent类似包裹,内容进行传输通过data或者Extra。
Extra用法:
步骤:1)intent利用putExtra(,)方法暂存数据 2)用getIntent()获取到intent,利用getStringExtra()获取数据 。。。。。(或者getIntExtra()等)
范例:
返回数据给上一个活动
步骤:
1)上一活动中:利用startActivityForResult(intent,请求码)方法来启动一个intent,请求码只要是唯一即可。
2)下一活动中返回数据方法:
法一:若在点击事件中:
1>构建intent,利用putExtra()存放数据 2>setResult(RESULT_OK或RESULT_CANCELED,intent)专门用于向上一活动返回结果,3>用finish()销毁当前活动。
法二:如果通过Back键返回,可以通过重写onBackPressed()方法。
3)在上一活动中获取数据:(由于用startActivityForResult方式启动的下个活动,所以下个活动销毁前会回调上一活动的onActivityResult()方法)
1>重写onActivityResult()方法,此方法传入的三个参数:请求活动时传入的请求码、返回数据时传入的处理结果、携带返回数据的intent
2>判断请求码是否对应后,再判断处理结果,再处理数据。
范例:(利用点击事件返回)
结果:
必须写在setContentView之前。
全屏xml设置:
2)横竖屏
在menifest中的activity中设置:
standard,singleTop,singleTask,singleInstance,可以在AndroidManifest.xml中通过
1>在本活动中添加一个静态方法,传入需要的参数以及context.
2>启动这个活动时,就可以知道要传入哪些数据
美工提供的图片都放在drawable-hdpi中即可
资源的使用
AndroidManifestxml
注释
日志工具的使用
margin与padding的区别
设置控件的可见
二android基本用法
java文件
布局文件
Menu的使用
Intent
全屏设置与横竖屏
活动的启动模式
1standard
2singleTop
3singleTask
4singleInstance
启动活动的最佳写法
一、项目中资源:
1.美工提供的图片都放在drawable-hdpi中即可。
2.资源的使用:
在strings.xml中的hello world字符串的使用:1)在代码中:R.string.hello_world
2)在XML中@string/hello_world
3.AndroidManifest.xml:
1)其中交代了android的版本:最低版本以及当前目标版本。2)icon表示app的图标,可以通过更改其值而更换图标;
label表示app的名称;
3)进行注册,(后面介绍)
4.注释:
1)形式:尖括号中,叹号,两边- -
2)位置:不能写到别的<>之间。
5.日志工具的使用
1)添加导航:windows—->show view —->other2)打印日志的方法:
Log.v() [打印最为琐碎信息,级别verbose]
Log.d() [打印一些调试信息debug]
Log.i() [打印比较重要的数据info]
Log.w() [打印警告 warn]
Lof.e() [打印错误 error]
传入的参数,一般第一个是当前类名即可,第二个是要打印的消息。
不要再用system.out.println();
3)添加过滤器:
法1:在logcat中点击加号,进行添加—–>起个名称,通过Tag是只显示名称为Tag中的名称的信息。
法2:通过右上角的5个级别。
6.margin与padding的区别:
margin:是控件外部离开边缘的距离。padding:是内部离开边缘的距离,会使点击的范围变大
演示:
//没有margin和padding时: <Button android:id="@+id/button_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是一个测试按钮"/>
//margin: <Button android:id="@+id/button_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是一个测试按钮" android:layout_margin="15dp"/>
//padding: <Button android:id="@+id/button_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是一个测试按钮" android:padding="15dp"/>
7.设置控件的可见
java代码中实现:setVisible(View.)
二、android基本用法:
1.java文件:
项目中的任何活动都应该重写Activity的onCreate()方法。2.布局文件:
1)步骤1:将布局文件写到res—>layout中。
2)id 的使用:
在xml中,定义一个id:@+id/button1 ; 引用一个id :@id/button1
3)步骤2:
布局文件在java文件中用代码,加载一个布局:
由于在建立布局文件时,项目都会在R.java中生成一个相应的资源id,这里,我们通过R中的这个id进行加载:
例如:setContentView(R.layout.first_layout);
4)步骤3:在AndroidManifest文件中注册:
<1>将注册声明写在application标签中。
<2>利用activity注册
<3>如果要是布局在一启动就显示,就加上:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
范例:
<activity android:name=".MainActivity" //注册的activity名称:由于上面pacage中有路径,这里省略前面的路径 android:label="@string/app_name" > //label中的字符将显示在布局页面的最上面标题处 <intent-filter> //使一启动时就显示这个activity <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
4.Menu的使用:
<1>在res文件中建立一个menu文件,专门用于存放菜单xml文件<2>xml中的代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" //定义其id android:orderInCategory="100" android:showAsAction="never" android:title="@string/menu_settings"/> //显示的名称 </menu>
<3>在activity中加载:
重写onCreateOptionsMenu(Menu menu){}
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; }
注释:
getMenuInflater()创建对象;
inflate方法创建菜单,传入的两个参数:1是指定通过那个资源创建菜单,2是指定菜单项添加到哪个Menu对象中;
返回true是将菜单显示。
5.Intent
android四大组件;Activity Service,ContentProvider,BroadcastReceiver
如果说五大组件,就是包括(Intent)
功能:各组件之间交互的一种重要方式,一般用于启动活动、启动服务、以及发送广播等场景。
用法:
<1>显式Intent:
1)Intent构造函数的两个参数(提供一个启动活动的上下文,指定要启动的目标活动)
2)启动活动
//getApplicationContext()可以是当前activity.this Intent intent = new Intent(getApplicationContext(),SecondActivity.class); startActivity(intent);//启动目标活动。
等同于利用component的方式:
Intent intent = new Intent(); ComponentName name = new ComponentName(getApplicationContext(),SecondActivity.class); intent.setComponent(name); startActivityForResult(intent,1);
<2>隐式Intent:
方法:
1)现在AndroidManifest.xml中指定当前活动能够相应的action和category。
2)在跳转时,构造Intent传入的参数即为action,并利用addCategory方法添加category,只有当action和category都匹配时,才能够跳转成功。这时也需要category有个默认的设置,所以这里没有必要来过滤category。
//menifest中的设置 <activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.lingzhuo.test"/>//action只要与建立时传入的action相对于即可 <category android:name="android.intent.category.DEFAULT"/>//这里的category 是采用默认方式,那么建立时就无需匹配它。 </intent-filter> </activity>
//实现跳转 Intent intent = new Intent("com.lingzhuo.test"); startActivity(intent);
<3>更多隐式用法:
1)打开浏览某个网页:
setData指定当前Intent正在操作的数据
Intent.ACTION_VIEW是android内置动作。
Intent intent1 = new Intent(Intent.ACTION_VIEW);//Intent.ACTION_VIEW是android内置动作。 //利用Uri中的parse方法,将网址字符串解析成Uri对象。 intent1.setData(Uri.parse("http://www.baidu.com")); startActivity(intent1);
2)调用系统拨号界面:
Intent.ACTION_DIAL:android内置动作,拨号,但不拨打出去。
Intent intent1 = new Intent(Intent.ACTION_DIAL);//Intent.ACTION_VIEW是android内置动作。 //利用Uri中的parse方法,将网址字符串解析成Uri对象。 intent1.setData(Uri.parse("tel:10086")); startActivity(intent1);
3)Intent.ACTION_CALL:直接拨打出电话,但需要在manifest中添加权限:
//权限,位置写在application外面,与其并列 <uses-permission android:name="android.permission.CALL_PHONE"/>
按钮点击事件,这里是用的实现接口的方式,所有实现onClick方法: public void onClick(View v) { switch (v.getId()){ case R.id.button1: Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:10086")); startActivity(intent); break; default: break; } }
4)发短信:
不需要权限ACTION_SENDTO,Uri: “smsto:1008”
Intent intent = new Intent(Intent.ACTION_SENDTO,Uri.parse("smsto:10086")); intent.putExtra("sms_body","hello!");//固定sms_body名称,才能发送这个字符。 startActivity(intent);
需要权限:ACTION_SEND ,Uri: “smsto:1008”(但可能所用的应用程序没有这个自动发送的功能)
<uses-permission android:name="android.permission.SEND_SMS"/>
Intent intent = new Intent(Intent.ACTION_SEND,Uri.parse("smsto:10086")); intent.putExtra("sms_body","hello"); startActivity(intent);
总结:
Intent intent = new Intent(action,uri);
action 启动某个特定的应用,比如打电话。
打电话:action:ACTION_DAIL(不需要权限,但等待用户发送确定)和ACTION_CALL(权限) Uri:”tel:1234”
发短信:action:ACTION_SENDTO(不需要权限,但等待用户发送确定) 和ACTION_SEND(权限) Uri : “smsto:2436”
打开网页:action:ACTION_VIEW Uri:”http://www.baidu.com”
利用Intent向下一个活动传递参数:
Intent类似包裹,内容进行传输通过data或者Extra。
Extra用法:
步骤:1)intent利用putExtra(,)方法暂存数据 2)用getIntent()获取到intent,利用getStringExtra()获取数据 。。。。。(或者getIntExtra()等)
范例:
//暂存数据 Intent intent1 = new Intent(MainActivity.this,SecondActivity.class); intent1.putExtra("name", "杭三"); startActivity(intent1);
//取出数据 Intent intent = getIntent(); String name = intent.getStringExtra("name"); Log.d("name", name);
返回数据给上一个活动
步骤:
1)上一活动中:利用startActivityForResult(intent,请求码)方法来启动一个intent,请求码只要是唯一即可。
2)下一活动中返回数据方法:
法一:若在点击事件中:
1>构建intent,利用putExtra()存放数据 2>setResult(RESULT_OK或RESULT_CANCELED,intent)专门用于向上一活动返回结果,3>用finish()销毁当前活动。
法二:如果通过Back键返回,可以通过重写onBackPressed()方法。
3)在上一活动中获取数据:(由于用startActivityForResult方式启动的下个活动,所以下个活动销毁前会回调上一活动的onActivityResult()方法)
1>重写onActivityResult()方法,此方法传入的三个参数:请求活动时传入的请求码、返回数据时传入的处理结果、携带返回数据的intent
2>判断请求码是否对应后,再判断处理结果,再处理数据。
范例:(利用点击事件返回)
//上一活动 public void onClick(View v) { Intent intent = new Intent(getApplicationContext(),SecondActivity.class); startActivityForResult(intent,1); }
//下一活动:传数据 btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent();//或者利用getIntent获得这个界面的intent,就不用再创建intent啦。 intent.putExtra("name","SHE"); setResult(RESULT_OK, intent); finish(); } });
//上一活动获取数据; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode){ case 1: if(resultCode==RESULT_OK){ String retrundata = data.getStringExtra("name"); Log.d("firstActivity",retrundata); } break; default: Log.d("firstActivity","出现错误"); } }
结果:
6.全屏设置,与横竖屏
1)全屏代码设置:必须写在setContentView之前。
全屏xml设置:
2)横竖屏
在menifest中的activity中设置:
<activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="landscape"> //横屏 竖屏是portrait
7.活动的启动模式:
启动模式,共有4种:standard,singleTop,singleTask,singleInstance,可以在AndroidManifest.xml中通过
<activity>标签指定android:launchMode属性来选择启动模式。
1)standard:
standard是活动默认的启动模式,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶位置,对于使用这种模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动活动的一个新的实例。2)singleTop:
此种模式下,在启动活动时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。3)singleTask:
这种模式下,每次启动该活动,系统首先在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。4)singleInstance:
这种模式下,会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,也就解决了共享活动实例的问题。8.启动活动的最佳写法;
启动某个活动,可能需要传入几个必须的参数,这里我们可以采用这样的方式:1>在本活动中添加一个静态方法,传入需要的参数以及context.
2>启动这个活动时,就可以知道要传入哪些数据
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); }
//使用时: SecondActivity.actionStart(FirstActivity.this,"data1","data2");
相关文章推荐
- Android 事件分发机制详解
- Android 事件分发机制详解
- Android 事件分发机制详解
- Android开发工程师经典面
- 第二十天 Android环境搭建
- Android错误及解决方法锦集
- android adb常用指令
- android 开发 命名规范
- 更新日志 - BugHD Android 客户端上线
- 更新日志 - BugHD Android 客户端上线
- Android中decode JPG时建议使用inPreferQualityOverSpeed
- Android第一讲——基本框架、环境搭建
- About Android Surface Flinger
- Android开发环境搭建与HelloWorld
- day0817-Android开发环境搭建
- Android ScrollView如何设置maxHeight
- 8.18android工程的结构及其五大布局
- Android开发相关介绍及工具的安装
- androidのadb命令填满手机磁盘空间
- Android:将数据存到文件中,DDMS无法查看/data目录