![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android基础
文章平均质量分 85
dztai
三年Android App开发经验,一年IOS开发经验,从事过车载、手机、HUD行业。
展开
-
Android Studio 自定义Gradle的配置
工程build.gradle文件的内容可以使用变量的形式定义1.首先在根目录下创建文件:config.gradle,内容如下:ext { android = [ compileSdkVersion: 26, buildToolsVersion: '27.0.3', applicationId : "co原创 2018-01-20 11:53:39 · 2628 阅读 · 0 评论 -
Android开发之解析JSon数据(二)
跟XML类似,JsonReader也可以解析文件中的JSon数据,下面的例子是从帮忙文档中取下来的首先创建一个《JsonFile.txt》文件,JSon数据如下 [ { "id": 912345678901, "text": "How do I read JSON on Android?", "geo": null, "user": {原创 2013-09-27 20:29:06 · 1546 阅读 · 0 评论 -
Android常用控件之GridView使用BaseAdapter
我们可以为GridView添加自定义的Adapter,首先看下用自定义Adapter的显示效果在布局文件main.xml文件中定义一个GridView控件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi原创 2013-09-17 19:31:01 · 22984 阅读 · 0 评论 -
Android批量添加通话记录
在前面有提到批量添加联系人:Android批量添加联系人到通讯录,通话记录和通讯录一样都是直接操作ContentProvider。为了使批量更新、插入、删除数据更加方便,android系统引入了 ContentProviderOperation类,使用ContentProviderOperation的理由1.所有的操作都在一个事务中执行,这样可以保证数据完整性2.由于批量操作在一个事务中执原创 2014-05-20 14:44:50 · 8891 阅读 · 0 评论 -
Android重写ViewPager修改滑动灵敏度
使用ViewPager作为一个页面进行切换,里面可以存放很多View,但有时在操作View时不小心滑动一下就有可能跳到下一页,这并不是我们想要的,这里就需要重写ViewPager修改它的滑动条件效果图程序目录结构BTViewPager.javapackage com.example.viewpagerdemo;import android.content.Con原创 2014-05-22 13:18:41 · 7368 阅读 · 2 评论 -
Android程序国际化
如果你开发的程序会在全球或其它国家发布,就需要对程序进行国际化处理,Google的工程师早就想到这一点,我们程序员只需按Google定义好的规则创建对应的目录,系统就会根据当前国家和语言来使用不用的资源文件。具体方法是在目录res下创建不同的values,比如目录:values-zh-rCH(简体中文)、values-zh-rHK(繁体中文)、values-en-rHK(英语香港)、value原创 2013-12-12 21:54:44 · 2162 阅读 · 0 评论 -
Android开发之Handler的使用
Handler用来接收子线程发送的消息,并根据此数据来更新主程序中的UI;当主线程中的操作比较耗时,就需要把耗时的操作放到子线程中。在Android中,如果主线程在5s内没有响应的话,就会弹“强制关闭”的提示框;在布局文件中定义一个ImageView<RelativeLayout xmlns:android="http://schemas.android.com/apk/res原创 2013-11-12 15:46:58 · 1505 阅读 · 0 评论 -
Android四大组件之ContentProvider(二)读取设备上的图片、音频和视频
Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,通过Content Provider的方式提供给用户。当设备开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息原创 2013-10-08 20:17:27 · 9244 阅读 · 0 评论 -
Android开发之AlertDialog和自定义AlertDialog
Android为我们提供了很多种AlertDialog,当前我们也可以定制自己需要的Dialog;下面就是Android为我们提供的AlertDialog1、显示带取消、中立和确定按钮的对话框2、显示带列表的对话框3、显示带多选列表项的对话框4、显示带单选列表项的对话框5、显示带图标列表的对话框原创 2013-10-23 12:39:50 · 3599 阅读 · 0 评论 -
Android之后台启动Activity
在实际开发中,Activity需要启动但界面又不能显示出来,这时就需要后台启动,但又不是finish(),这时就要用到Activity中的moveTaskToBack函数,先看下官网参数nonRoot是布尔类型,可以为true或falsetrue:只要是这个task中的activity都有效。false:只对这个task的根activity(即首个activity)才有效。原创 2014-05-17 11:35:15 · 5922 阅读 · 0 评论 -
Android开发之解析JSon数据
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式, 是一系列键值对的集合。技术有优点肯定也会有缺点下面看下JSON与XML的比较1.JSON和XML的数据原创 2013-09-27 18:46:50 · 1337 阅读 · 0 评论 -
简述Android六大布局
布局最终是用户看到的界面,Android的应用采用了典型的MVC结构,而布局就是MVC中的View,这种View通过单独的xml文件配置,与代码分开,当然也可以通过代码来设置布局;在Android4.0之后有六大布局,分别为:LinearLayout、RelativeLayout、FrameLayout、AbsoluteLayout、TableLayout、GridLayout,其中GridLay原创 2014-02-17 14:55:27 · 2210 阅读 · 0 评论 -
Android使用View自定义控件
在实际开发中Android中自带的控件有时无法满足我们的需求,这时就需要我们重写控件来实现我们想要的功能。比如我想使Button有按下和弹起效果还可以写文字,就没有哪个原生的控件能满足我们的需求,在这里我选择重载ImageButton,在ImageButton的基础上添加文字实现效果重写按钮实现代码package com.example.buttontest;import原创 2014-03-07 14:07:53 · 1689 阅读 · 0 评论 -
Android开发之使用ViewPager做引导页面
引导页面相信大家都不会陌生,安装了一个新的App后第一次打开,都会有类似下图,相当于说明文档实现效果Demo下载:http://download.csdn.net/detail/deng0zhaotai/7272609原创 2014-04-30 09:42:19 · 1922 阅读 · 0 评论 -
TextView实现Rich Text
如果要使用一个TextView中实现多种样式,需要用SpannableStringBuilder设置不同的Span,这些Span用于实现Rich Text,比如粗体,斜体,前景色,背景色,字体大小,字体风格等等先看看设置后的效果,以下文字显示是用一个TextView来实现的要想实现上面的效果关键函数就是/** * Mark the specified range of原创 2014-03-18 19:53:53 · 1634 阅读 · 0 评论 -
Android自定义View时添加自己的监听器
监听器在Java中非常常用,在自定义控件时可能根据自己的需要去监听一些数据的改变,这时就需要我们自己去写监听器,Java中的监听器实现上就是C++中的回调函数,在初始化时设置了这个函数,由某个事件触发这个函数被调用,两个类之间的数据通信也可以通过监听器来实现。要定义监听器就要先定义一个接口,具体功能由设置监听器的类去实现关键代码实现package com.example.listviewi原创 2014-03-18 15:07:45 · 6644 阅读 · 0 评论 -
Android开发小技巧
收集一些学习Android过程中使用到的小技巧,或网上看到一些有用的技巧,持续更新1、Android模拟器中,快捷键"Ctrl+F11/F12"可以实现转屏2、取得屏幕像素DisplayMetrics dm=new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);3、位图原创 2013-10-11 18:42:38 · 1595 阅读 · 0 评论 -
Android常用控件之HorizontalScrollView代替Gallery
最近在学习Gallery发现在API Level 16以后已经不使用,废弃了这个肯定是有更好的来替代,查了下文档就发现HorizontalScrollView这个类; HorizontalScrollView用于布局的容器,可以放置让用户使用滚动条查看的视图层次结构,允许视图结构比手机的屏幕大.。HorizontalScrollView 是一种 框架布局, 这意味着你可以将包含要原创 2013-10-17 19:16:40 · 16706 阅读 · 6 评论 -
Android App添加广告
在Android应用中添加广告是开发者收入之一,但有广告的应用对于用户来说比较反感,很多事情都是相互矛盾。如何在我们的APP中添加广告呢?移动广告平台为我们提供了相应的SDK,只需要下载他们的SDK,按他们的开发文档添加就可以了。下面是一些广告平台:一、百度移动联盟:http://munion.baidu.com/1.百度移动联盟推广SDK下载:http://munion.baidu.原创 2014-04-09 19:58:05 · 5233 阅读 · 1 评论 -
Android自定义提示框
在开发中,如果感觉系统自带的提示框不好看,开发者可以自己定义提示框的样式,主要是继承Dialog程序目录结构关键代码package com.dzt.custom.dialog;import android.app.Dialog;import android.content.Context;import android.content.res.Resources原创 2014-08-15 14:22:07 · 1825 阅读 · 0 评论 -
Android常用控件之下拉刷新Wifi列表
有些列表信息需要手动去更新,此时比较常用的就是下拉刷新列表,在这里就使用下拉列表来刷新当前Wifi信息目录结构界面 关键代码下拉列表类package com.example.dropdownrefresh.ui;import java.text.SimpleDateFormat;import java.util.Date;原创 2014-09-24 17:47:28 · 2921 阅读 · 0 评论 -
Android虚拟机Genymotion的安装与配置
Genymotion可以以插件的方式安装到Eclipse和Android Studio上,并且可以快速启动,操作流畅,比原生的模拟器好用多了。在安装的过程中碰到不少问题,在这里记录下来,有类似问题的可以参考Genymotion需要安装vBox(virtualBox),因为Genymotion是依赖于它,在Genymotion官网上有介绍,有整合版本的,也有分开版本下载,在这里我把它下载到网盘上,G原创 2015-11-25 19:38:46 · 1453 阅读 · 0 评论 -
Android使用代码生成SHA1
在注册一些Key时需要用到sha1和包名,来确定apk的唯一性,在Eclipse上可以很容易查看,但Android Studio需要用到命令行查看,这里可以使用代码来查看sha1,具体可以参考以下代码:public static String getSHA1(Context context) { try { PackageInfo info = context.getPackag原创 2016-07-02 09:55:22 · 1603 阅读 · 0 评论 -
Java关于byte[]与double之间的转换
在Android中如果要通过byte来发送double,如:发送经、纬度;需要把double转换为byte[],下面介绍Java语言大端情况下如何对double和byte[]进行转换先介绍double转byte[]的方法:假如有一个double d = 503.2135013通过以下方法可以得到byte[]public static byte[] double2Bytes(doub原创 2016-07-05 14:00:02 · 26393 阅读 · 0 评论 -
关于Android Lint的一些警告处理
在Android Studio上也可以通过Lint检查代码选中菜单Analyze->Inspect Code如下界面点击“OK”后出现如下界面:整个项目有5609条警告信息,这里面可能会出现一些内存泄露的问题,也有影响apk大小的文件,总之警告信息能减少就减少吧。下面就来清理下这些警告1、[Accessibility] Missing contentDescription原创 2016-12-08 11:39:00 · 4842 阅读 · 0 评论 -
Android中ListView和GridView通过getChildAt方法得到相应的Item并刷新
最近的程序有这么一个需求,整个列表中,当用户点击某个Item时,只刷新这个Item,这样可以减少资源的损耗,加快刷新速度。在实现过程中public View getChildAt(int index)传入的是整形index,没有翻屏的情况下使用List的position可以正常刷新,翻屏后点击通过getChildAt得到的是null public View getChildAt(int ind原创 2016-11-26 10:46:49 · 4531 阅读 · 1 评论 -
经受时间沉淀的15 个 Android 通用流行框架大全
文章出处: 经受时间沉淀的15 个 Android 通用流行框架大全,先收藏这些工具类,需要用到方便查找。 1. 缓存 名称描述 DiskLruCache: Java实现基于LRU的磁盘缓存 2.图片加载 名称描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Pi转载 2016-12-17 08:56:05 · 636 阅读 · 0 评论 -
Java解析中国城市Json数据
由于城市列表基本是固定不变的,App可以读取本地文件来显示城市列表,这里使用Json数据把城市列表保存起来,在代码中解析Json数据显示就方便,在此把它记录下来,方便以后使用。area.json文件 { "provinces": [ { "province": "北京市", "cities":["北京市"] }, { "province": "上海市", "cities原创 2017-02-10 11:40:12 · 4581 阅读 · 1 评论 -
AutoCompleteTextView默认首次失去焦点
由于工作需要,AutoCompleteTextView在默认下不需要焦点,当用户点击时再获取焦点并显示软键盘。在子布局LinearLayout下添加android:focusable="true"、android:focusableInTouchMode="true"两条语句即可。<LinearLayout android:layout_width="match_parent"原创 2017-04-27 15:08:25 · 2538 阅读 · 0 评论 -
Android单元测试
单元测试不管对于初学编程还是已经工作了很久的开发者来说,都不乐意花时间去写认为没用的代码进行测试,只要交给测试人员就行了,虽然这样也能把软件改出来,但也许你要花上几倍的时间去修改问题,如果在开发的过程中花点时间去写单元测试代码,把尽可能出问题的地方都测试一遍,把问题扼杀在最开始的地方,这样你就不必为后来找问题出处而烦恼。当代码工程越大越需要单元测试。在Android中添加单元测试需要在Andr原创 2013-09-09 18:56:32 · 1601 阅读 · 1 评论 -
Android把多个控件定义成一个整体的布局类使用
在程序中有时候几个控件要放在一起,想随意放在布局上,而且不仅一个布局要使用,此时就想把这几个控件定义成一个新的View就好了,于是就有了下面这个类新的控件类SeekBarGroup.java,SeekBarGroup.java集成了三个View,有两个TextView,一个SeekBar,就是一个显示时间的进度条,这只是一种应用思想,可以是任何View的集合下面先看下效果,就是一个普通的进度条原创 2015-10-29 18:51:42 · 3807 阅读 · 0 评论 -
Android电池状态监听
如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类package com.example.charginganimation;import android.app.Activity;impor原创 2014-09-24 12:31:03 · 4586 阅读 · 0 评论 -
Android CTS测试
一什么是CTSCTS简介:Compatibility Test suite系列兼容测试google定义了一个兼容性规范(Compatible Definition),而CTS就是为了确保某个测试符合该规范。从而基于Android的应用程序能在基于同一个api版本的设备上面运行。通过CTS测试的device可以获得android的商标,并且享受android market的权限。例如手机原创 2014-12-02 20:37:44 · 7088 阅读 · 0 评论 -
Android Studio几个常用的设置
从Eclipse切换到Android Studio有一点不习惯,在这里把Android Studio常用的几个设置记录下来,我的系统是Ubuntu12.04我的版本android-studio-ide-135.1740770-linux:安装后的界面是字体和主题都不好看,在下方还有Error Download JDK71、设置字体和主题,在File->Setting原创 2015-03-07 19:29:51 · 1177 阅读 · 0 评论 -
Android之adb常用命令
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb是在Eclipse启动时就会自动运行。如果adb出问题,那就无法连接设备或无法通过模拟器进行调试,可以通过以下方式重启adb通过adb命令可以查询设备信息1、显示当前连接的设备命令:adb原创 2013-11-23 13:03:48 · 10784 阅读 · 0 评论 -
Android 打印堆栈的几种方法
在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。验证的方法相关简单,在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么publ原创 2015-04-09 14:24:10 · 32239 阅读 · 1 评论 -
下方显示android.support.v4.app.FragmentTabHost使用总结
以前在ADT使用到FragmentTabHost时的布局如下<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:o原创 2015-09-08 19:04:16 · 5107 阅读 · 0 评论 -
使用ContentObserver实现短信提醒功能
通过查询语句:Cursor cursor = mContext.getContentResolver().query(Uri.parse("content://sms"), null, "type = 1 and read = 0", null, null);打印可以看到数据库中所有的列字段String names[] = cursor.getColumnNames();name = _id原创 2015-11-07 15:58:22 · 1163 阅读 · 0 评论 -
Android在string.xml中声明xliff:g字符串
在程序中需要字符串加上当前变化数据,如果要自适应国际化就要在string.xml中定义,此时就需要用到xliff:g,下面就讲几种常见的使用首先要在string.xml中声明<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:x原创 2015-09-22 19:10:59 · 1508 阅读 · 0 评论 -
Android常用控件之Fragment仿Android4.0设置界面(二)
在之前的基础上添加自定义的BaseAdapter,丰富显示的内容,使用BaseAdapter必须写一个类继承它,同时BaseAdapter是一个抽象类,继承它必须实现它的方法其中getView()方法最重要。当系统开始绘制ListView的时候,首先调用getCount()方法。得到它的返回值,即ListView的长度。然后系统调用getView()方法,根据这个长度逐一绘制Lis原创 2013-10-09 18:04:08 · 3120 阅读 · 0 评论