Android学习笔记·从零开始【一】
开始着手Android。和大多数初用Eclipse的人一样,有些手忙脚乱。
之前看Cocos2d时零星的看过;Cocos2d后来也被耽搁下来了;关于Cocos2d点此穿越,日后更新笔记。
现做下Android学习笔记,记录点滴。
-->点击进入Android学习笔记导图。
-->19本Android经典教程+104个Github上火爆项目开源源码
加油!
●1 绑定的SDK工具包http://developer.android.com/sdk
●2 Application Name:安装后显示名称;Project Name:项目名称(通常不加空格);Package Name:包名(如com.cleopard.testhello)。
●3 Window→Open Perspective→DDMS;开发Android时需要的工具,目前可以查看Devices窗口中想看的设备状态(掉线,可用Reset adb重置)。
●4 assets文件夹,程序运行时可以动态读取这些内容;或WebView加载本地网页存放。
●5 Android不推荐在程序里对字符串进行硬编码,更好的做法一般是把字符串定义在res/values/strings.xml里,然后可以在布局文件或代码中引用。
1.在代码中,通过R.string.hello_world引用。
2.在XML中,通过@string/hello_world引用。
●6 日志工具LogCat
添加LogCat到Eclipse:Window ->ShowView ->Other(展开Android)
1.Log.v()
这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是Android日志里面级别最低的一种。
2.Log.d()
这个方法用于打印一些调试信息, 这些信息对你调试程序和分析问题应该是有帮助的。对应级别 debug,比 verbose高一级。
3.Log.i()
这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为的那种。对应级别 info,比 debug高一级。
4.Log.w()
这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别 warn,比 info高一级。
5.Log.e()
这个方法用于打印程序中的错误信息,比如程序进入到了 catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别 error,比 warn高一级。
●7 Ctrl+Shift+O自动导入包,比如import android.util.Log;
●8 极度建议将不相干的项目关闭掉,仅打开当前工作所需要的项目,不然我保证以后你会在这一方面吃亏。右键项目->Close Project。
●9 输入提示,自动补全。其他类同。
打开Eclipse -> Window -> Perferences-> Java -> Editor -> Content Assist,在右边最下面一栏找到auto-Activation ,下面有三个选项,找到第二个“Auto activation triggers for Java:”选项
在其后的文本框中会看到一个“.”存在。这表示:只有输入“.”之后才会有代码提示和自动补全,我们要修改的地方就是这里。把该文本框中的“.”换掉,换成“abcdefghijklmnopqrstuvwxyz.”,这样,你在Eclipse里面写Java代码就可以做到按“abcdefghijklmnopqrstuvwxyz.”中的任意一个字符都会有代码提示。
●10 手动创建Activity等。
1.右键src->New->Package.
2.右键新建的包->New->Class.(继承Activity,重写onCreate())
3.创建相应layout:右键res/layout->New->AndroidXML File;(默认LinearLayout即可)
4.给Activity加载布局:返回Activity在onCreate()方法加入layout,setContentView(R.layout.first_layout);
注意1.自动补全,Android SDK会自动提供一个Android包下的R文件,别用错了!
注意2.在AndroidManifest.xml中注册启动页面
注意3.给主活动指定的label不仅会成为挑剔栏中的内容,还会成为启动器(Launcher)中的应用程序显示的名字。
●11 隐藏标题栏:
在onCreate函数中,setContentView()之前加入requestWindowsFeature(Window.FEATURE_NO_TITLE);。
●12 方法指定错误或不明确?
OnClickListener()方法指定错误吧,就像上面的R一样,应该是这样吧。
两个解决办法:
1.new OnClickListener()改为->new Button.OnClickListener()
2.页顶端添加->import android.view.View.OnClickListener;
似乎正渐渐熟悉Eclipse的环境和风格….
点击”Import‘OnClickListener’(android.view.View)”即可。
总结:
1.以后遇到错误先放鼠标上去看看。
2.可以把光标至于错误处,用快捷键Ctrl+1。
3.使用Ctrl+Shift+o全局添加包,前面用过了。
●13 Toast(提醒方式,显示消息后自动消失)
可以写到按钮Click事件[onClick()]里:Toast.makeText(FirstActivity.this,"You Click Button", Toast.LENGTH_SHORT).show();
使用Toast中的静态方法makeText(),可以直接”点出来”。三个参数[Context、内容、显示时长]
●14 菜单(Menu)
1.首先再res目录下简历一个menu文件夹(右键res->New->Folder),再menu目录下添加一个AndroidXML File。
2.打开menu.xml,添加item:
<item android:id="@+id/add_item" android:title="Add"/> <item android:id="@+id/remove_item" android:title="Remove"/>3.在Activity里重写onCreateOptionsMenu()方法:
@Override public booleanonCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu,menu);//用到inflate,见下面 return true; }4.添加菜单响应事件,再Activity中重写onOptionsItemSelected()方法:
@Override public booleanonOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.add_item: Toast.makeText(this,"添加", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this,"移除", Toast.LENGTH_SHORT).show(); break; default: break; } return true; }
这里使用Toast弹出信息,不要忘记写最后的.show()。
5. 系统自带menu键可激活,魅族没有,所以弹不出。
●15 关于Inflate()
通俗的说,inflate就相当于将一个xml中定义的布局找出来.
在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件.
因此如果你的Activity里如果用到别的layout,比如对话框上的layout,你还要设置对话框上的layout里的组件(像图片ImageView,文字TextView)上的内容,你就必须用inflate()先将对话框上的layout找出来,然后再用这个layout对象去找到它上面的组件,如:
<pre name="code" class="java"> View view1=View.inflate(this,R.layout.dialog_layout,null); TextView dialogTV=(TextView)view1.findViewById(R.id.dialog_tv); dialogTV.setText("abcd");
注:R.id.dialog_tv是在对话框layout上的组件,而这时若直接用this.findViewById(R.id.dialog_tv)肯定会报错。
●16 销毁Activity
Activity类提供了一个finish()方法,在活动中调用这个方法就可以销毁当前活动了。
button1.setOnClickListener(newOnClickListener(){ @Override publicovid onClick(View v){ finish(); } });
效果和按下Back键一样一样的。
大家有什么问题可以问我;有一点,我也是新手。加油吧!
····················································································
· 今天到此结束 2015/03/03 13:20 CLeopard ·
····················································································
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。