安卓学习笔记汇总

按钮的点击方式:
1:定义内部类
2:定义匿名内部类btn.SetOnClickListener(new OnClickListener(){
public void onClick(View v){}
});
3:让当前类实现OnClickListener接口,适用于按钮较多的布局
btn.SetOnClickListener(this);
在当前java文件中写一个onClick函数,switch判断是哪一个按钮写对应功能
4:控件使用onClick属性


padding相对控件本身且向内
margin相对其他控件且向外


dp:安卓会自动根据值进行适应屏幕
sp:字体大小


android系统构成:
1:Linux
2:函数库层
3:Application frameWork应用的框架层
4:应用层(最上层)
dvm解决版权问题


打包流程:
编译->class->dex文件->打包(aapt)生成apk->adb(调试桥)->device


Toast:在手机上显示提示信息。同样是一个View,不能在子线程直接使用           
Toast.makeText(MainActivity.this//在哪个布局文件显示,"输入要显示的话",Toast.LENGTH_SHORT//或者Toast.LENGTH_LONG).show()//必须要有show();
context:上下文。存储了android中各种各样的数据,方法等,相当于一个仓库


context.openFileOutPut("文件名",模式)。这个函数返回一个文件输出流


向sd卡存数据需要添加权限“写外部存储设备”


xml解析
1:获取xmlPullParser
xmlPullParser parser = Xml.newPullParser();
2.设置XmlPullParser参数
parser.setInput(in,"UTF-8");
3.获取解析的文档的事件类型
int type = parser.getEventType();
4.判断当前标签,进行详细实现。

数据库的创建:创建一个类继承SQLiteOpenHelper,onCreate函数用来初始化表,
数据库操作使用SQLiteDatabase类
ListView优化:复用 convertView,判断convertview是否为空,若为空则创建view对象,否则强制类型转换复用convertView。


listview中若使用自适应大小会造成系统多次校验,校验当前能否显示设置数量的条目,导致效率低下,因此一般都指定大小货值填充父窗体。


adapter就是用来把数据展示到listview上的


打气筒(inflate)的获取方法:
1.View.inflate(this,R.Layout.layout,root);
2.LayoutInflater.from(this).inflate(R.Layout.layout,root);
3.LayoutInflater inflater = (LayoutInflater)getSystemService(LATOUT_INFLATER_SERVICE);
 View inflate = inflater.inflate(R.layout.layout,root);
ArrayAdapter:
子布局是TextView为根节点时        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.item,objects);
自布局不是根节点时       ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.item,R.id.tv_name,objects);其中R.id.tv_name是子布局中的textview的id
最后都要listview.setAdapter(adapter)


HttpURLConnection,用于通过web发送或接收数据,
通过URL.openConnection()函数返回一个HttpURLConnection的实例


android.os.NetWorkOnMainThreadException.连接网络不能在主线程


主线程(UI线程)中不能有耗时的操作。
将耗时的操作放到子线程中
只有主线程可以更新ui
handler:发送与处理消息


Looper:在消息队列中取消息,looper伴随主线程出生。


handler的使用:
1.在主线程定义一个handler
private Handler handler = new Handler()
2.使用handler重写handleMessage方法
3.在子线程使用handler向主线程发送消息
handler.sendMessage(msg)
4.主线程执行handler的handleMessage方法
catch与filedir的区别
catch:放在缓存(catch文件夹)中,清除缓存就能删掉
filedir:放在data(file文件夹)中,用于长期保存
runOnUiTherad():可以在任何地方使用以改变ui,但只能改变ui,如果要想主线程发送消息,携带数据。就必须使用handler


Handler().postDelayed(new Runnable(){//相当于java中的定时器,延迟多少秒后执行指定任务

public void run(){


//写你要延时执行的操作//与java的定时器不同,Handler这里可以更新ui
}

},5000)//5秒后执行run方法

猜你喜欢

转载自blog.csdn.net/z282011862/article/details/78265049