Android
文章平均质量分 59
智玲君
细节决定成败,态度决定一切..
展开
-
android平台Oaid匿名设备标识符的获取
前言2019年4月24日,移动安全联盟于深圳成功召开移动智能终端设备标识研讨会。下一步计划由头部设备厂商先行,逐步推动体系落地实施,并由中国信通院牵头开发支持多厂商、多终端类型的统一补充设备标识SDK,协助移动应用开发者更便捷的使用移动智能终端补充设备标识体系,推进相关业务。以后逐渐要禁止获取IMEI,使用OAID(匿名设备标识符)来替代IMEI在app的作用(另外我们也可以获取VAID和AA...原创 2020-05-06 10:53:14 · 6286 阅读 · 0 评论 -
Android中几种常用的定时器和延时方法
一、三种常用的定时器1.Handler类的postDelayed方法:Handler mHandler = new Handler(); Runnable r = new Runnable() { @Override public void run() { ...原创 2020-05-06 10:53:40 · 913 阅读 · 0 评论 -
安卓自定义View实现扇形图表
效果图自定义PieChartViewpackage txkj.xian.com.newzjdemo.tubiao;import android.animation.ValueAnimator;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;impo...原创 2020-05-06 10:53:51 · 457 阅读 · 0 评论 -
安卓Jetpack架构组件(二):ViewModel+LiveData的使用
前言上一篇我们介绍了单独的ViewModel组件的使用实例,Android文档中建议我们LiveData配合ViewModel使用,那么LiveData到底是什么,两者怎么结合使用呢?LiveData是一个可观察的数据持有者类,具有如下优点:1,LiveData作为被观察者,数据可以被观察者订阅,当数据有变化时会通知观察者(UI)。2,减少内存泄漏,因为LiveData能够感知组件的生命周...原创 2020-05-06 10:54:17 · 991 阅读 · 0 评论 -
安卓架构组件(一):ViewModel的使用
前言ViewModel 主要是用来管理UI相关的数据的,使用它有两个优势:1,可以使 ViewModel 以及 ViewModel 中的数据在屏幕旋转或配置更改引起的 Activity 重建时存活下来, 重建后数据可继续使用2,可以帮助开发者轻易实现 Fragment 与 Fragment 之间, Activity 与 Fragment 之间的通讯以及共享数据,不同Fragmeng之间的数据...原创 2020-05-06 10:54:08 · 1248 阅读 · 0 评论 -
json中如果有数字和汉字作为key,使用Gson如何解析
在java中我们将json字符串解析成对象时,我们一般首先要做的就是根据字符串去定义对应的实体类,而在定义实体类时要求实体类中的属性值命名必须和json字符串中的key值完全一致,这样就会存在如下问题:如果后台返回的json字符串中有的key为数字或者汉字,那我们就无法正常定义对应的实体类,因为java中规定属性命名不能以数字开头,也不能包含汉字,那么该如何解决呢?1,如果key中为数字开头或...原创 2020-05-06 10:54:57 · 2051 阅读 · 1 评论 -
一看就会Android之列表视图组件ListView结合Adapter的使用及监听
1.使用数组资源简单的实现-----缺点:无法改变每个列表项的字体颜色,大小等样式,所以一般用的比较少。使用的步骤:在res目录下的子目录value目录下创建数组资源array.xml在布局文件中添加ListView组件,并设置分隔条,最重要的是设置entries属性2.借助于Adapter为了能够控制列表项的文字原创 2015-10-24 15:28:50 · 836 阅读 · 1 评论 -
一看就会Android之View类和ViewGroup的关系
android应用的所有UI组件都继承了View类,其中View类有一个重要的子类ViewGroup,ViewGroup通常被作为其他组件的容器来使用,由于ViewGroup是一个抽象类,所以在平时的使用中我们都是使用ViewGroup的各个子类来作为容器,这些子类即就是我们所说的各种布局管理器,如LinearLayout,TableLayout等。ViewGr原创 2015-10-24 15:50:52 · 855 阅读 · 0 评论 -
一看就会Android之用户选择列表项Spinner
1.使用数组资源为Spinner提供列表项:使用步骤:1.定义数组资源array.xml2.在布局文件中添加Spinner组件,并指定entries属性为该数组资源即可2.使用Adapter定制列表项:使用步骤:在布局文件中添加Spinner组件,不指定entries属性在代码中使用arrayAdapter或者Si原创 2015-10-24 15:20:23 · 405 阅读 · 0 评论 -
一看就会Android之分组列表组件ExpandableListView的使用
ExpandableListView是ListView的子类,是对ListView进行的扩展,他的列表内容提供不再是Adapter接口,而是ExpandableListAdapter接口来提供,同样ExpandableListAdapter接口的实现类有以下三种:1.SimpleExpandableListAdapter2. SimpleCursorTreeAdapte原创 2015-10-24 15:22:54 · 1263 阅读 · 0 评论 -
一看就会Android之布局高度和布局宽度与组件高度和宽度的区别
很多人会问:为组件指定了高度与宽度不就够了吗,为何还要设置布局的高度和布局的宽度呢?这是由android的布局机制决定的,android组件的大小不仅受他实际的宽高控制,还受她的布局的宽高控制,比如设置一个组件的宽度为30pt,如果将它的布局宽度设为wrap_parent,那么该组件的宽度会被拉宽到占满它所在的父容器,如果将他的布局宽度设为wrap_content,那么组件的宽度才会是原创 2015-10-24 15:52:04 · 1433 阅读 · 0 评论 -
一看就会Android之TextView,EditText以及CheckedTextView
TextView直接继承了View,它的子类主要包括:EditText和Button,还有CheckedTextView等其实TextView就是一个文本编辑器,只是android关闭了它的文字编辑功能,如果开发者想定义一个可以编辑内容的文本框,可以使用他的子类:EditTextTextView还派生出了一个CheckedTextView,该Chec原创 2015-10-24 15:56:33 · 1476 阅读 · 0 评论 -
一看就会Android之实现带小图标的Toast
//使用带图标的Toast提示显示 Toast toast = newToast(MainActivity.this); //设置Tosat的属性,如显示时间 toast.setDuration(Toast.LENGTH_LONG); //原创 2015-10-24 15:10:02 · 2487 阅读 · 0 评论 -
一看就会Android之按钮Button和图片按钮ImageButton的用法
1.Button继承了TextView,ImageButton继承了ImageView,两者均用来生成一个按钮,两者的区别主要在于Button上既可以显示文字又可以显示图片,而ImageButton上只能显示图片,文字无效,两者的共同点:所设置的背景图片都是固定的,不会随着用户的动作而改变,如果需要让按钮的背景颜色或者背景图片随用户的动作动态的改变,可以考虑使用XML资源来定义Draw原创 2015-10-24 15:58:13 · 3369 阅读 · 0 评论 -
一看就会系列Android之ContentProvider实现数据共享及注册监听
当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序就可以通过ContentPrivade来实现,ContentPrivade以某种Uri的形式对外提供数据,从而允许其他应用通过ContentResolver来访问或者修改数据。如何完整的开发一个ContentProvider呢,步骤如下:1. 定义一个继承ContentProvider基类的子类,并重写其他原创 2015-10-24 14:58:39 · 889 阅读 · 0 评论 -
一看就会Android之SQLite数据库的使用思路
SQLite数据库适用于小型手机APP的数据存储,如果是为某个网站开发手机客户端app,那么它所公用的数据库就不是SQLite了,而是服务器端安装的MySQL或者其他比较大的数据库,此时要进行数据访问就要进行网络编程,使用Socket等知识。在实际的开发中通常使用SQLiteOpenHelper的子类来管理数据库的链接,使用此方法如果数据库以及数据库表还不存在,系统会自动调用o原创 2015-10-24 15:07:26 · 535 阅读 · 0 评论 -
一看就会Android之网格视图GridView的使用及监听
GridView与ListView的区别就在于GridView可以显示多列使用步骤:在布局文件中定义GridView组件使用ArrayAdapter,SimpleAdapter,SimpleCursorAdapter或者BaseAdapter创建adapter对象将gridview与adapter进行适配GridView的原创 2015-10-24 15:25:12 · 918 阅读 · 0 评论 -
一看就会Android之使用SoundPool播放多个短小的音频,如按键提示音,消息提示音,游戏声音等
使用步骤如下:创建SoundPool对象 ---使用构造方法,例如创建一个可以容纳10个音频的SoundPool对象,格式如下:SoundPool sp = new SoundPool(10,AudioManager.STREAM_SYSTEM,0);参数1:容纳音频的个数参数2:指定音频的类型,通过AudioManager类提供原创 2015-10-24 15:32:26 · 2315 阅读 · 0 评论 -
一看就会Android之开发自定义的View
当android应用提供的组件不足以满足我们的需要时,我们就要自己定义组件,如会跟随手指的小球组件,自定义组件的步骤:定义一个MyView类继承View基类重写构造器(两个构造方法):MyView(Context context){ super(context); }---使用代码创建一个MyView实例时 MyView原创 2015-10-24 15:53:41 · 710 阅读 · 0 评论 -
一看就会Android之SQLite中事务的使用
假如现在有一张用户表user,该表中有一个字段为account代表金额,现在要通过事务来实现转账功能,应该怎么做呢?(payment4()方法为处理事务的完整方法)在UserDao(定义的是用关于用户表操作的一系列方法)类中定义一个转账的方法如下:public void payment1(){//通过SQLiteOpenHelper子类实例获取SQLiteD原创 2015-10-25 10:19:30 · 508 阅读 · 0 评论 -
Android之完成SQLite数据库版本更新的过程熟悉
假如现在有一张user表在应用刚开始设计的时候只有一个字段,然后想新添加一个account字段,如何实现:首先在SQLiteOpenHelper子类构造方法中修改数据库的版本号,假如之前为1,现在修改为2。在数据库版本更新时回调的方法中执行为user表添加字段的操作如下:db.execSQL(“alert table user add a原创 2015-10-25 10:42:09 · 441 阅读 · 0 评论 -
按后退键直接回到系统Home界面
在主窗体activity中重写onKeyDown()方法如下://在主界面按返回键将退出系统,回到系统home界面 @Override publicbooleanonKeyDown(int keyCode, KeyEvent event) { if(keyCode== KeyEvent.KEYCODE_BACK){原创 2015-10-25 11:43:13 · 1431 阅读 · 0 评论 -
一看就会Android之手机系统音量的设置
AudioManager类位于android.Media包中,通过getSystemService(Context.AUDIO_SERVICE)方法获得AudioManager实例对象。AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);audi原创 2015-10-26 10:57:50 · 4846 阅读 · 0 评论 -
一看就会Android之手机震动的设置
如果想让手机启动振动,需要创建Vibrator对象,有关手机震动的三个常用方法如下:vibrate(long[] str,int repart);//根据指定的模式进行震动参数1:该数组中的第一个元素表示等待多长时间后启动振动,后面元素为开启和关闭震动的持续时间,单位均为毫秒参数2:重复振动时在参数1数组中的索引,-1表示不重复振动vib原创 2015-10-26 10:55:37 · 3900 阅读 · 0 评论 -
一看就会Android之单选按钮和复选框的事件监听
总的来说每一个单选按钮和复选框都有checked()方法来判断是否被选中为按钮和复选框设置事件监听主要有以下两种:1:在改变勾选状态时触发2:在点击提交按钮时获取对于单选按钮(组):在改变状态时触发即为单选按钮组设置监听setOnCheckedChangeListener,在重写的onCheckedChanged方法中根据参数chec原创 2015-10-27 13:32:26 · 8458 阅读 · 0 评论 -
一看就会Android之Socket通信时总是通信失败的几点原因分析(超实用)
在Android进行Socket通信时,模拟器依赖的服务器的默认IP为10.0.2.2,有以下因素影响通信的成功:1.为应用添加联网权限2.访问服务器的操作要放在线程中来完成3.在客户端开启的访问服务器的线程一定要调用start()来开启,不然既不报异常也连接失败。4.连接模拟器所依赖的服务器默认IP为10.0.2.2原创 2015-10-28 15:20:50 · 2178 阅读 · 1 评论 -
Android把res/raw的资源转化为Uri形式访问(android.resource://)
如何访问平时APK文件Res目录下的内容呢? 如果直接访问Apk下的assets目录可以使用AssetManager类处理,而需要访问res/raw这样的文件夹怎么办呢? APK在安装时已经解压缩,部分资源存放在/data/data/package_name/这里, 比如我们想访问res/raw/msg.mp3文件,可以使用android.resource://package原创 2015-10-28 15:59:55 · 2463 阅读 · 0 评论 -
Android中进程级别分类
android当中的进程级别: 1.前台进程---- 可见且可获得焦点 2.可见进程---- 可见但不可获取焦点 3.服务进程Service ---- 当activity消失时,如果有service运行中,叫做服务进程 -------很少能回收到第三步 4.后台进程---- 相当于屏幕上的最小化和home键时(不是返回键)原创 2015-10-29 12:09:30 · 567 阅读 · 0 评论 -
Home键和返回键的区别
home键和return返回键的区别: * 返回时对象被销毁,而按home键时,对象未被销毁,只是使activity失去焦点并变的不可见,下次在访问直接回到上次home的界面****当执行数据保存,释放资源等动作时,要在onPause(失去焦点时)内实现,不要在onStop(不可见)或onDestory(销毁)内实现****当在onCreate函数内调用fi原创 2015-10-29 12:06:24 · 1460 阅读 · 0 评论 -
一看就会Android之BroadcastReceiver
BroadcastReceiver本质上是一个系统的监听器,专门用来监听各个组件所发出的Broadcast,与前面介绍的各种组件的事件监听器OnXxxListener不同,OnXxxListener是程序级的监听器,他们运行在指定程序所在的进程中,当程序退出时,监听器就会随之关闭,但BroadcastReceiver属于系统级的监听器,他拥有自己的进程,只要存在与之匹配的Intent被广播出来,B原创 2015-10-29 11:17:47 · 375 阅读 · 0 评论 -
(已解决!)关于在myeclipse 2014中发布web service服务时的报错解决
最近在学习web service网络编程时遇到问题:在myeclipse2014中发布web service服务时总是报错,错误提示是找不到类,为此寻找解决办法,最后终于解决了,在此希望可以帮到遇到同样问题的人,如下图所示:------使用JAX-WS,选择2.1版本此处选择MyEclipse Library最后点击finish完成即可原创 2016-01-07 10:44:01 · 1519 阅读 · 0 评论 -
ListView中子view复用机制的实现原理以及图片错位的解决方案
ConvertView复用原理图:借助于RecycleBin(回收站)实现复用;RecycleBin的作用:对子View进行回收利用。移出屏幕的ImageView控件会进入到RecycleBin当中,而新进入屏幕的元素则会从RecycleBin中获取ImageView控件。图片错位原理: 如果我们只是简单显示list中数据,而没用convertview的复用机制和异步操作,原创 2016-09-10 10:33:25 · 1094 阅读 · 0 评论 -
sp、dp、dip、pt、px等单位的区别?【重点】
dpi dpi指像素密度。dots per inch ,即每英寸内像素点的个数。它不是表示长度的单位。在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。dip device independent pixels ,即与设备无关的像素。目前这个单位已经被dp原创 2016-08-30 12:59:40 · 686 阅读 · 0 评论 -
RecyclerView的使用教程1
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45059587;本文出自:【张鸿洋的博客】概述RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,转载 2016-09-12 14:13:52 · 357 阅读 · 0 评论 -
android高仿微信表情输入与键盘输入详解
转载请注明出处: http://blog.csdn.net/javazejian/article/details/52126391 最近公司在项目上要使用到表情与键盘的切换输入,自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个相当困扰我,不过所幸在Github(其中一个不错的开源项目,其代码整体结构很不错)并且在论坛上找些解决方案,再加上我也是研究了好多个开源项目转载 2016-09-12 17:37:17 · 1155 阅读 · 0 评论 -
Activity的加载模式
activity的默认加载模式:栈---后进先出 * 加载模式的改变: * 方法:在清单文件指定的activity中添加属性launchMode * ------------------------------------------------------------------------- * 以下例子均是改变A的加载模式,而B仍然原创 2015-10-29 12:07:35 · 311 阅读 · 0 评论 -
Intent及其七大属性及intent-filter设置
一、知识点回顾:Activity(一)、如何实现Activity页面跳转?示例代码://第一种方式:Intent intent = new Intent(MainActivity.this,NextActivity.class); startActivity(intent);//第二种方式:Intent intent = new Intent(原创 2016-09-05 20:25:32 · 667 阅读 · 0 评论 -
Android基类设计方法详解
1 为什么要设计基类 为什么要给程序设计基类呢?主要是出于2个原因,一是方便代码编写,减少重复代码和冗余逻辑,优化代码;二是优化程序架构,降低耦合度,方便拓展、修改。 ok,编写代码是程序员的第一步,那么第二步就是要编写高质量的代码,代码能实现功能是一方面,写的优美则是另一方面,这也是我们所有攻城狮们应该追求的境界。2 设计基类的基本思路转载 2016-09-07 17:48:38 · 501 阅读 · 0 评论 -
安卓Handler,Looper消息传递机制
1.Handler出现的原因: 首先安卓高版本不允许直接在主线程中执行一些耗时操作,因为会造成ANR,影响用户体验,耗时操作包括: 网络访问,耗时运算,阻塞式的IO,因此我们必须开启一个子线程来执行这些耗时操作,但是开启了子线程 之后又存在另外一个问题: Android中规定子线程不能直接修改UI界面。 因此如果子线程想要间接地修改UI界面,方式有多种,此处介绍使用安卓中的原创 2016-09-24 13:37:05 · 466 阅读 · 0 评论 -
实现仿简书选取内容生成分享图片效果
前几天脑子里忽然闪过简书的图片分享效果,感觉很简洁也很漂亮,想着能不能用自己方式实现一下呢,于是今天就有了这篇文章。好了,先看下效果图吧:项目地址:https://github.com/zhangke3016/GeneratePicture欢迎star、issues~实现这个效果,首先要弄明白几个问题:一、如何获取选取的网页内容 二、获取的网页内容如何加载显示转载 2016-09-24 15:53:21 · 702 阅读 · 0 评论