android记录

adb默认绑定端口:5037
netstat -ao


设置环境变量的作用:
   当用命令行的方式执行exe文件时,系统会去哪里找这个exe,此时就会去环境变量中指定的路径下找。
   
android中的四大组件:
activity,
service,
content privoder,
broadcastReceiver

代码辅助:
alt+'/':智能提示,
ctrl+T显示类层次结构
ctrl+1:智能提示错误信息及解决办法,报错时可以按
ctrl + h //搜索
ctrl+O//查看类提供的方法
ctrl+T//查看一个类的继承关系树
智能提示:窗口-首选项-JAVA-编辑器-内容辅助-java的自动激活触发器(配置:26个英文字母即可)
快速注释:
ctrl+/  行注释
ctrl+shift+/   块注释。ctrl+shift+\   去除块注释
最大化选中的窗口:ctrl+m
快速切换代码窗口:ctrl+F6
大小写切换:ctrl+shift+Y   ctrl+shift+X
快速删除当前行:ctrl+d
快速导入包:ctrl+shift+o
快速添加javaDoc注释:alt+shift+j
快速生成try/catch块:alt+shift+z
关闭其中某个编辑窗口:ctrl+w
关闭所有的编辑窗口:ctrl+shift+f4
快速回到上一次编辑处:ctrl+q
alt+左右方向键:前进后退到阅读位置
快速进到定义处:ctrl+左键
ctrl+alt+H//查看某个方法被调用的调用层次
ctrl+shift+p 快速定位到匹配符
ctrl+j ,ctrl+shift+j //增量查找,正向,反向
快速差别:窗口-首选项-常规-编辑器-文本编辑器-快速差别
查看书签:窗口-显示视图-其他-常规-书签



代码之美:
快速格式化代码:ctrl+shift+f
让花括号与VS中的风格一样,如:{},可以设置:窗口-首选项-Java-代码样式-格式化程序-编辑-花括号
按字母给方法排序:源码-sort member
组织包(清理不需要用到的包):源码-组织导入包





android:screenOrientation="landscape"//横屏显示
android:screenOrientation=“portrait”//竖屏显示


android:configChanges="keyboardHidden|orientation|screenSize"//横竖屏切换时不让activity销毁。此时会调用onConfigChanges()


github android源码






给应用配置权限:
<uses-permission android:name="android.permission.CALL_PHONE" />//打电话的权限
<uses-permission android:name="android.permission.INTERNET" />//访问网络的权限


安卓中生成库文件:
比如像c#中的dll文件,生成库文件步骤:工程-右键选属性-android-勾选 is library
其他工程导入库文件步骤:工程-右键选属性-android-add-选择要导入的库
生成Jar包的方法:文件-导出-Java

让程序启动时创建自己定义的application类对象:
public myApplication extends  application(){...}
然后在<application>节点中配置:android:name="包名.myApplication"

要打开其他应用程序的activity,其他应用程序的activity要设置属性:android:exported=true,默认是false




activity的生命周期:
onCreate()//activity创建时执行
onStart()//activity可见时执行
onRestart()//activity重新可见时执行(例:一个activity把另一个activity挡住时)
onResume()//activity可交互时执行
onPause()//activity暂停时执行
onStop()//停止时执行
onDestroy()//销毁时执行

暂停状态:被其他的activity覆盖(不是完全覆盖),此时依然可见但是不可交互就叫暂停状态
停止状态:被其他的activity完全覆盖,此时不可见,就叫停止状态
断开状态:activity被系统终止回收或没有启动时就叫断开状态


把activity变为透明:android:theme="@android:style/theme.translucent"
关闭activity:finish()

getWindow().getWindowManager().getDefaultDispaly().getHeight()
ANR(application no responding):主界面在无法响应输入事件(超过6s的行为)




显示调用activity的几种方式:
intent.setclass()
intent.setclassName()
intent.setComponent()
startActivity()//启动activity


隐式调用activity:
intent.setAction()
intent.addCategory()
intent.setData(uri.parse("http://www.baidu.com:12345/image"))
android:scheme="http:" 协议。android:host="www.baidu.com",android:port="12345",android:path="/image.txt"。
intent.setData(uri.parse("http://www.baidu.com:12345/image"))
intent.setDataAndType()

activity之间传递数据:
1、intent.putExtra()//向activity传递数据
Bundle _bundle= getIntent().getExtras()//从activity中获取传递过来的数据
_bundle.get()/getString()...
intent.putExtra()如果要传递类的话,类必须是可序列化的,所以可以让类实现(implements)序列化 Serializable接口
intent另一个传递类的方法是 让类实现(implements)parcelable接口
2、通过全部对象传递数据:getApplication()获取全局对象(可以在全局对象中用map<T,K>存数据)
让自己的类对象成为全局类对象可以继承(extends)Application:
注意:要让程序启动时创建自己定义的类为全部对象时可以在 AndroidManifest.xml中配置:Android:name="我们的继承Application的全局类名(包括包名)"
public class myApplicationApp extends Application
{。。。}
获取全局对象:getApplication()
activity间传递数据:
intent.putExtra()
getIntent.getExtras()
intent:实现组件之间的通讯(感觉像是上下文的作用,或者是MSG结构体的作用)
intent.setClass(调用者,被调用者)

从Activity中返回数据:
用startActivityForResult()启动要执行任务的那个activity,任务执行完后执行任务的那个activity调用setResult(0,_intent<_intent里putExtra()放入要返回的数据>),
在前一个activity中的onActivityResult()中就接收到结果了
finish()//关闭当前activity


activity启动模式:(配置android:launchMode="")
1、standard(标准模式,每次启动activity都会创建一个新的activity实例)
2、singleTop(可以有多个实例,但是不允许activity的多个实例叠加,即:如果有activity的实例 在栈顶的时候,启动这个activity,不会创建新的实例,而会调用其onNewIntent()方法,如果不在栈顶则创建新的实例)
toast.makeText().show()//让文本显示一段时间后消失,相当于c#中的tooltip或者具有存活时间的messageBox
3、singleTask(在栈中只能有一个实例,在同一个应用程序中启动它的时候,若不存在此activity实例,则会在当前栈中创建,若存在,则会把栈中在其之上的其他activity实例销毁掉,并调用此实例的onNewIntent()方法。)
4、singleInstance(只有一个实例,并且这个实例独立运行在一个activity任务栈中,即单独存在于一个栈中,这个任务栈中只有这个实例,不允许有别的activity存在)

保存和恢复activity的状态:
比如要保存editText控件中的输入值不随横竖屏的切换而消失,可以增加editText的android:id=“”属性。通过下面2个函数实现的
onSaveInstanceStatus()//保存实例状态
{bundle.putString()}
onRestoreInstanceStatus()//读取实例状态
{bundle.getString()}

长度单位:
px:表示屏幕实际的像素。
dp:是屏幕的物理尺寸,适用于控件
sp:与刻度无关的像素,适用于字体

布局:
1、linearLayout(线性布局)
2、RelativeLayout(相对布局)
3、absoluteLayout(绝对布局)
4、tableLayout(表格布局)
5、frameLayout(框架布局)
线性布局:
gravity=""//文本内容如何对齐(右对齐)
layout_weight//指定在父容器中所占的(权重)比例,比例越大,显示的大小越大。按权重之和来划分父容器空间
orientation=""//子控件是水平排列还是垂直排列
框架布局:
框架布局是最简单的布局方式,所有添加到这个布局中的视图都是以层叠的方式显示,第一个添加到框架布局中的视图显示在最底层,最后一个被放在最顶层,上一层的视图会覆盖下一层的视图,因此,框架布局类似堆栈布局
marginTop//外边距离顶部的距离(在FrameLayout中结合gravity一起用)
visibility//是否可见,invisible与gone的区别:invisible的控件还占着位置(隐藏),gone表示不占位置(移除)
foreground属性//设置绘制在所有子控件之上的内容
foregroundGravity属性//设置绘制在所有子控件之上内容的对齐属性


相对布局:
控件的位置相对兄弟控件或父容器而定
layout_below=“@id/”//在某元素的下方
layout_above= //在某元素的上方
layout_toLeftOf=//在某元素的左边
layout_toRightOf=//在某元素的右边
layout_centerHorizontal//水平居中

表格布局(TableLayout):
colapseColumns属性//设置指定列号的列为是否隐藏
shrinkColumns属性//设置指定的列号的列的宽度是否可进行收缩
stretchColumns属性//设置指定列号的列的宽度是否可进行拉伸


view:
用代码创建控件:
View _view=View.inflate(this,R.layout.main_activity_layout)
TextView _textView=new TextView()
LayoutParams _layoutParam=new LayoutParams()//控件的属性,如宽、高
_textView.setLayoutParams()//
_view.addView(_textView)
setContentView(_view)

xml中的控件布局在运行时会在内存中生成对应的对象实例

textView:
相当于c#中的label
autoLink=""//产生连接的效果
_textView.setMovementMethod(LinkMovementMethod.getInstance())
TextView通常用来显示普通文本,但是有时候需要对其中的某些文本进行样式、事件方面的设置。android系统通过SpannableString类进行相关处理
SpannableString _spanStr=new SpannableString()
_spanStr.setSpan(new ClickableSpan()
{
onclick()
{
逻辑处理区域
}
}
,start,end,flag)
_textView.setMovementMethod(linkMovementMethod.getInstance())
singleLine属性//文字单行显示
ellipsize属性//文字太多时怎么显示,省略号在前或后,或滚动(滚动时此控件必须具有焦点,所以为了当焦点被其他控件占有时仍具有滚动效果,可以创建一个MyTextView的类继承TextView,然后重载isFocused(),让其返回true)
focusable属性//是否能够具有焦点(能够具有焦点不代表此时有焦点)
focusableInTouchMode属性//在触摸模式时具有焦点

EditText:
editText继承与textView,所以textView能做的事editView都能做
digits属性//限定editText只能输入哪些字符
inputType属性//同上
_editText.setError()//设置错误信息
TextUtils.isEmpty()//判断文本子串是否为空


AutoCompleteTextView:
具有自动匹配的效果。
_autoCompleteTextView.setAdapter();//适配器中包含数据源




/
button:
获取屏幕尺寸:getWindow().getWindowManager().getDefaultDisplay().getWidth()//屏幕宽
OnTouchListener类//触摸监听器,与OnClickListener点击监听器差不多
OnFocusChangeListener类//焦点改变监听器
drawableTop="图片路径"//在按钮上面有个图片
drawablePadding="";//图片与文字的距离
SpannableString _spannableString=new SpannableString();
ImageSpan _imageSpan=new ImageSpan(BitmapFactory.decodeResource().R.drawable.myImage);
_spannableString.setSpan(_imageSpan,)
alignParentRight=//与父容器的右边对齐

margin:外边框
padding:内边框
border:边框

radioButton:
如果想radioButton在选中后其他radioButton处于未选中状态,则将这几个应该互斥的radioButton放在RadioGroup中(多选一的效果)

toggleButton:
表示2中状态的按钮,有checked属性,textOn,textOff属性
setOnCheckedChangeListener()//checked属性改变时发生调用
在代码中用指定的资源id创建一个View:CheckBox _checkBox=View.inflate(this,R.layout.ui_checkBox,null)

SeekBar:
值可以通过拖动的方式调节,比如像调节音量那样
onSeekBarChangeListener()类
onProgressChanged()//进度值发生改变时调用
onStartTrackingTouch()//开始拖动时调用

ImageView:
主要是用来显示图片的控件
scaleType//怎么填充图片,比如拉伸,重复填充等
fitCenter//图片按View的比例缩放
DisplayMetrics _displayMetrics=new DisplayMetrics();
GetWindowManager().getDefaultDisplay().getMetrics(_displayMetrics)//获取屏幕量度(像素宽,高等)
Matrix.setRotate()//设置图片旋转角度。matrix是对图片进行处理的类
URL类//可以从网络上请求资源
HttpURLConnection类//通过Http协议连接URL表示的资源
_url.openConnection()//创建一个到url的连接
_connection.setDoInput(true)//能够获取服务器的响应内容
_connection.setRequestMethod("GET")//HTTP请求方式
_connection.getResponseCode()//获取响应状态码
InputStream _is=_connection.getInputStream()//获取输入流,用于读取响应内容

datePicker和timePicker:
DatePickerDialog和timePickerDialog:
日期时间控件
onDateChangeListener//日期改变监听器
onTimeChangeListener//时间改变监听器

AnalogClock和DigitalClock:
时钟控件
dial属性//表盘

ProgressBar:
进度条
style属性

ScrollView:
垂直滚动控件(只支持垂直滚动),只能包含一个控件,一般是包含LinearLayout控件


HorizontalScrollView:
水平滚动控件(只能包含一个控件),一般是包含linearLayout控件

Spinner:
下拉列表控件
_spinner.setSpinner(_apater)//_apater绑定了数据源
setOnItemSelectedListener()//列表项监听器

ImageSwitch:
setFactory()
setImageResource()
setAnimation(AnimationUtils.loadAnimation(R.anim.1123.xml))

include:
静态加载
可以在当前布局文件中引用其他的布局文件:<include   layout="@layout/title"
ViewStub:
动态加载,需要的时候才会加载到内存中
在当前布局文件中加载其他布局文件
_viewStub.inflate()//加载viewStub中引用的布局

ViewPager:
多页面滑动效果
老版本需要导入android-support-v4实现兼容

Raw:
存放声音文件的目录(自行创建)
MediaPlayer类//媒体播放器

graviry:
gravity属性:设置线性布局内部元素的布局方式
(自己理解:设置元素在父控件中的布局方式)

自定义颜色资源:
在res下的values下创建colors.xml文件

AsyncTask:
Params参数:执行任务时的传入参数类型,多数情况使用string类型,同时也是也是DoInBackground()方法的传入参数
Progress参数:在后台发布进度时传入的参数类型,调用publishProgress(Progress),同时也是onProgressUpdate()方法的传入参数
result参数:DoInBackground()方法的返回值类型,同时也是onPostExecute()方法的传入参数类型
onPreExecute()方法:最先执行的方法,该方法执行完毕立即条用DoInBackground()方法,在UI线程中执行
DoInBackground()方法:会自动另起一个线程执行此方法
OnProgressUpdate()方法:该方法只有在publishProgress()方法调用时才会被系统回调,在UI线程中执行
publishProgress()//在后台调用,可用于发布进度。如果不调用publishProgress()方法,那么OnProgressUpdate()方法不会被系统回调
OnPostExecute()方法:在DoInBackground()方法执行完毕后被回调

线程间通讯:
message
messageQueue
handler
looper

4个底层流:
inputStream//字节输入流
outputStream//字节输出流
reader//字符输入流
writer//字符输出流

文件操作:
FileInputStream//以字节为单位
FileOutputStream//以字节为单位
FileReader//以字符为单位
FileWriter//以字符为单位
BufferedReader//以字符为单位。增强了读写文件的能力,如:可以读取一行
BufferedWriter//以字符为单位。
newline()//换行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值