Android基础知识
文章平均质量分 58
idiandi
这个作者很懒,什么都没留下…
展开
-
40个比较重要的Android面试题
1、 Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和转载 2017-03-07 09:07:23 · 685 阅读 · 0 评论 -
Android学习(32) -- 网络图片下载
确定图片的网址发送http请求URL url = new URL(address);//获取连接对象,并没有建立连接HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置连接和读取超时conn.setConnectTimeout(5000);conn.setReadTimeout(5000);//设置原创 2016-04-21 05:29:11 · 304 阅读 · 0 评论 -
Android学习(33) -- 网络请求总结
主线程阻塞在4.0后不能直接在主线程中进行网络操作UI停止刷新,应用无法响应用户操作耗时操作不应该在主线程进行ANRapplication not responding应用无响应异常主线程阻塞时间过长,就会抛出ANR主线程又称UI线程,因为只有在主线程中,才能刷新UI消息队列机制主线程创建时,系统会同时创建消息队列对象(MessageQueue)和消息轮询器对象(Looper)轮原创 2016-04-21 20:35:39 · 351 阅读 · 0 评论 -
Android学习(58) -- xUtils之HttpUtils
HttpUtils的使用 HttpUtils本身就支持多线程断点续传,使用起来非常的方便创建HttpUtils对象HttpUtils http = new HttpUtils();下载文件http.download(url, //下载请求的网址 target, //下载的数据保存路径和文件名 true, //是否开启断点续传 true, //如果服原创 2016-05-29 20:44:33 · 417 阅读 · 0 评论 -
Android学习(57) -- xUtils简介使用
项目git地址https://github.com/wyouflf/xUtils 参考:http://www.oschina.net/p/xutilsxUtils3简介xUtils 包含了很多实用的android工具.xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…xUtils 最低兼容Andro转载 2016-05-29 20:42:04 · 583 阅读 · 0 评论 -
Android学习(56) -- 断点续传多线程下载(Android)
手机版的断点续传多线程下载器把刚才的代码直接粘贴过来就能用,记得在访问文件时的路径要改成Android的目录,添加访问网络和外部存储的路径用进度条显示下载进度拿到下载文件总长度时,设置进度条的最大值//设置进度条的最大值pb.setMax(length);进度条需要显示三条线程的整体下载进度,所以三条线程每下载一次,就要把新下载的长度加入进度条定义一个int全局变量,记录三条线程的总下载长度原创 2016-05-29 20:33:53 · 244 阅读 · 0 评论 -
Android学习(55) -- 带断点续传的多线程下载(Java)
原理将要已经下载进度保存到临时文件中,例如:下载了3000字节的话,也就是保存了0~2999的位置,下次从3000的位置开始继续下载,那么把3000保存到临时文件中即可。对于多线程的话,我们也要分别进行记录,有几个线程则保存几个文件, 例如 0号线程:下载了6000字节 记录 0~5999 下次从6000字节开始 1号线程:下载了4000字节 记录 0~3999 下次从4000字节开始原创 2016-05-29 20:28:08 · 299 阅读 · 0 评论 -
Android学习(54) -- 多线程下载 原理和代码
多线程下载 原理:服务器CPU分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服务器资源 单线程下载:从输入流第0个字节开始读取,读取到最后一个字节,把读取到的数据写到本地文件中, 写的时候也要从文件的第0个位置开始写,写到最后一个位置 多线程的计算:每个线程预下载的大小: size = 总原创 2016-05-29 17:35:52 · 414 阅读 · 0 评论 -
Android学习(31) --对话框&单选对话框&多选对话框
对话框 AlertDialog.Builder builder = new Builder(this); //设置图标 builder.setIcon(android.R.drawable.alert_dark_frame); //设置标题 builder.setTitle("删除提示"); //设置文本 builder.setMessage("确定删除么");原创 2016-04-20 21:58:53 · 479 阅读 · 0 评论 -
Android学习(30) -- ArrayAdapter&SimpleAdapter
ArrayAdapter当列表只要一列的时候使用 String[] objects = new String[]{ "小小1", "小小2", "小小3" }; ListView lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new ArrayAdapter(this, R.layout.i原创 2016-04-20 21:52:57 · 241 阅读 · 0 评论 -
Android学习(29) --ListView
ListView就是用来显示一行一行的item的MVC结构 M:model模型层,要显示的数据 ————people集合V:view视图层,用户看到的界面 ————ListViewc:control控制层,操作数据如何显示 ————adapter对象每一个item都是一个View对象BaseAdapter必须实现的两个方法第一个//系统调原创 2016-04-20 06:02:00 · 239 阅读 · 0 评论 -
Android学习(53) -- 使用异步HttpClient--loopj/android-async-http
发送get请求 //创建异步的httpclient对象 AsyncHttpClient ahc = new AsyncHttpClient(); //发送get请求 ahc.get(path, new MyHandler());* 注意AsyncHttpResponseHandler两个方法的调用时机 class MyHandler extends AsyncH原创 2016-05-28 07:25:38 · 364 阅读 · 0 评论 -
Android学习(28) -- 动态创建TextView并展示数据
我们在编程的时候,除了可以利用布局中的TextView来显示数据,同样我们也可以利用对象来动态创建TextView,并展示数据。1、创建TextView对象2、添加数据和属性值3、把TextView设置为布局的子节点4、如果需要滚动需要使用ScrollView LinearLayout ll = (LinearLayout) findViewById(R.id.原创 2016-04-20 05:41:41 · 14102 阅读 · 1 评论 -
Android学习(27) -- 数据存储之SQLite数据库的增删改查
数据库的增删改查SQL语句insert into person (name, phone, money) values (‘张三’, ‘159874611’, 2000);delete from person where name = ‘李四’ and _id = 4;update person set money = 6000 where name = ‘李四’;select name,原创 2016-04-17 21:51:03 · 323 阅读 · 0 评论 -
Android学习(34) -- 带缓存的网络图片下载
加入缓存图片的功能把服务器返回的流里的数据读取出来,然后通过文件输入流写至本地文件//1.拿到服务器返回的输入流InputStream is = conn.getInputStream();//2.把流里的数据读取出来,并构造成图片FileOutputStream fos = new FileOutputStream(file);byte[] b = new byte[1024];int原创 2016-04-21 20:49:46 · 251 阅读 · 0 评论 -
Android学习(35) -- smart-image-view 获取网络图片
SmartImageView的设计初衷是来取代Android自带的ImgageView组件,另外它还提供了一些附加功能,如:支持通过URL来加载图片;支持从电话簿中加载图片;异步加载图片;图片被缓存在内存,以便下次快速加载显示;SmartImageView类可以被很容易扩展成对其它资源的调用;作者主页:http://loopj.com/android-smart-image-v原创 2016-04-21 21:16:45 · 629 阅读 · 0 评论 -
Android学习(36) -- 自定义控件(1)实现组合按钮的菜单和隐藏
自定义控件:1.组合控件:将系统原生控件组合起来,加上动画效果,形成一种特殊的UI效果2.纯粹自定义控件:继承自系统的View,自己去实现view效果使用组合实现菜单布局代码:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="原创 2016-04-22 16:46:32 · 1192 阅读 · 0 评论 -
Activity跳转时的数据传递
Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,使用Intent和Bundle在组件之间传递数据,而这两种通常实现的是Java基本对象类型和String的传递。在实际项目中,页面之间传值,除了以上几种,经常还有传递Object对象、List类型、List类型和全局变量等等的需求。由于Activity跳转有两种方式,为此进行数据传递一共有两种方原创 2016-08-28 06:30:10 · 1064 阅读 · 0 评论 -
Intent实现Activity的跳转
Intent实现Activity的跳转 Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service/Br原创 2016-08-28 05:51:19 · 1373 阅读 · 0 评论 -
实现退出Activity的方式
实现退出Activity的方式a.finish() b.System.exit()a.关闭Activity并不立即释放内存—-finish() 调用finish()方法会执行Activity.onDestroy()方法,结束Activity生命周期。但并没有立即释放内存,活动的资源并没有被清理。 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.原创 2016-08-28 05:45:26 · 464 阅读 · 0 评论 -
Activity的启动模式
Activity任务栈 Activity在内存中的存储方式:是以任务栈的形式存储到内存中的。• 应用运行过程中,内存中可能会打开多个Activity,那么所有打开的Activity都会被保存在Activity任务栈 • 栈:后进先出,最先进栈,就会最后出栈Activity启动模式 设置Activity的启动模式,只需要在AndroidManifest.xml里对应的标签设置An原创 2016-08-28 05:44:23 · 506 阅读 · 0 评论 -
Android学习(46) -- SmartImageView
作者主页:http://loopj.com/android-smart-image-view/ 有使用方法。github上面源码: https://github.com/loopj/android-smart-image-viewSmartImageView的设计初衷是来取代Android自带的ImgageView组件,支持从URL和通讯录中获取图像,并支持异步加载和缓存原创 2016-05-09 22:58:53 · 457 阅读 · 0 评论 -
Android学习(48) -- 获取xml文件并解析.
1、根据xml的格式创建JavaBeanpublic class News { private String title; private String detail; private String comment; private String imageUrl; @Override public String toString() { return "News [ti原创 2016-05-10 06:29:58 · 1106 阅读 · 0 评论 -
Android学习(47) -- Html源文件查看器
Android学习(46) -- Html源文件查看器原创 2016-05-10 06:12:57 · 1231 阅读 · 0 评论 -
Android学习(42) -- 自定义控件(6)下拉选择实现( 动态ListView + popupWindow)
要实现的效果图下拉列表使用的是 动态ListView + popupWindow实现 1、设置布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro原创 2016-04-24 10:25:47 · 1402 阅读 · 0 评论 -
Android学习(41) -- 自定义控件(5)图片轮播(伪循环)
我使用ViewPager进行图片轮播时候,发现当到了开头或末尾不能再继续了,此时是因为PagerAdapter中的getCount方法进行了限定,明确了具体的数量,当到达数量的时候的,就不在进行调用instantiateItem方法了。如果想改变的话原创 2016-04-24 08:12:22 · 586 阅读 · 0 评论 -
Android学习(40) -- 自定义控件(4)广告轮播(ViewPager)
ViewPager是3.0之后才出现的,之前版本使用v4包ViewPager预加载机制:最多保存3个page,超过的将需要使用destroyItem被销毁掉效果图片1、在layout布局文件中定义布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t原创 2016-04-23 17:36:49 · 630 阅读 · 0 评论 -
Android学习(39) -- 关联jar包的源代码(两种方式)
我们在实际开发的过程中,需要关联jar包的源代码。如下是没有关联源代码的,并且没有Attatch Source按钮:我们最终希望的是如下效果关联jar包的源代码有两种形式:第一种 1.右键点击Android Private Libraries,将它使用Build Path菜单将其 remove掉,2、 再右键点击原创 2016-04-23 15:10:30 · 391 阅读 · 0 评论 -
Android学习(38) -- 自定义控件(3)点击Menu键显示隐藏菜单
如果想实现点击Menu键显示隐藏菜单,那么就需要重写onKeyDown方法。想解决多次点击事件,动画无法完全执行,就需要AnimUtil类中定义一个静态变量,用于记录当前执行的动画数量。需要使用RotateAnimation中的setAnimationListener来实现对该静态变量的操作,当启动动画的时候进行对该变量进行自加操作,当结束动画的时候对该变量进行自减操作。原创 2016-04-22 18:17:23 · 1045 阅读 · 0 评论 -
Android学习(37) -- 自定义控件(2)解决旋转的bug
在使用动画的时候要注意: 系统原生的旋转和位置动画并没有真正改变view的位置当二级菜单消失的时候,我们点击之前触发事件的位置,就会发现能够继续显示或隐藏三级菜单。如下图我们在AnimUtil工具类中,当隐藏菜单后,将所有布局下面的子View禁用;当显示菜单的时候,将所有布局下的子View进行显示。完整代码如下:public class AnimUtil {原创 2016-04-22 17:30:50 · 459 阅读 · 0 评论 -
Android学习(25) -- 单元测试(JUnit Test)
测试分类黑盒测试 测试逻辑业务:是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。白盒测试测试逻辑方法:是通过程序的源代码进行测试而不使用用户界面根据测试粒度单元测试:unit test,针对方法来进行正确性检验的测试工作。集成测试:integration test,是在单元测试的基础上,将所有模块按照概要设计要原创 2016-04-17 06:46:52 · 361 阅读 · 0 评论 -
Android学习(26) -- 数据存储之SQLite数据库的创建
SQLite数据库轻量级关系型数据库创建数据库需要使用的api:SQLiteOpenHelper必须定义一个构造方法://arg1:数据库文件的名字//arg2:游标工厂//arg3:数据库版本public MyOpenHelper(Context context, String name, CursorFactory factory, int version){}数据库被创建时会调用:原创 2016-04-17 21:40:30 · 366 阅读 · 0 评论 -
Android学习(50) -- 使用post方式提交数据
要点post提交数据是用流写给服务器的协议头中多了两个属性Content-Type: application/x-www-form-urlencoded,描述提交的数据的mimetypeContent-Length: 30,描述提交的数据的长度//给请求头添加post多出来的两个属性String data = "name=" + URLEncoder.enco原创 2016-05-11 06:15:13 · 2153 阅读 · 0 评论 -
Android学习(17) -- 访问权限 简介
Linux文件的访问权限在Android中,每一个应用是一个独立的用户drwxrwxrwx第1位:d表示文件夹,-表示文件第2-4位:rwx,表示这个文件的拥有者用户(owner)对该文件的权限 r:读w:写x:执行第5-7位:rwx,表示跟文件拥有者用户同组的用户(grouper)对该文件的权限第8-10位:rwx,表示其他用户组的用户(other)对该文件的权限openFil原创 2016-04-12 21:00:10 · 224 阅读 · 0 评论 -
Android学习(18) -- 数据存储之openFileOutput
public void click1(View v){ //路径已经默认为data/data//files try { FileOutputStream fos = openFileOutput("info1.txt", MODE_PRIVATE); fos.write("哈哈哈".getBytes()); fos.close(); } catch (Exceptio原创 2016-04-13 05:22:47 · 526 阅读 · 0 评论 -
Android学习(20) -- 数据存储之SharedPreferences(存储账号密码)
SharedPreference 用SharedPreference存储账号密码往SharedPreference里写数据//拿到一个SharedPreference对象SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);//拿到编辑器Editor ed = sp.edit();//写数据ed.putB原创 2016-04-13 05:51:53 · 658 阅读 · 0 评论 -
Android学习(12) -- 返回键(Back)与Home键区别
back键 当按下手机的back键的时候,系统会默认调用栈中最上层Activity的OnDestroy()方法来销毁当前Activity,当此Activity再次启动起来的时候,会重新调用OnCreate()方法进行创建。 home键 当按下手机的Home键的时候,系统会默认调用栈中最上层Activity的OnStop()方法,原创 2016-04-10 16:19:30 · 889 阅读 · 0 评论 -
Android学习(45) -- 自定义控件(9) 下拉刷新 (添加footer)
样式效果1、创建底部的布局 layout_footer.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"原创 2016-04-26 15:56:06 · 2815 阅读 · 0 评论 -
Android学习(44) -- 自定义控件(8) 下拉刷新(添加header)
1、定义HeaderView的布局2、创建一个类去继承ListView,并重写两个构造器3、在MainActivity中使用自定义ListView展示数据4、在自定义ListView中将HeaderView添加到ListView上部1、自定义HeaderView layout_header.xml自定义ProgressBar1、定义一原创 2016-04-25 15:51:02 · 838 阅读 · 0 评论 -
Android学习(9) -- 点击事件中的View
当多个组件的点击事件触发的是同一个方法的时候,我们就需要借助参数View来进行判断区分。View:系统会把触发这个方法的那个组件的对象作为view对象传进来public void getScore(View v){ //通过对view对象的判断,就可以知道用户点击的到底是哪一个按钮 //拿到按钮的id int id = v.getId(); switch (id) {原创 2016-04-08 23:09:01 · 327 阅读 · 0 评论