自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

璐璐的专栏

勿骄勿躁

  • 博客(159)
  • 收藏
  • 关注

原创 Android App-targetSDKVersion28升级为30

App-targetSDKVersion28升级为30

2023-12-06 16:44:22 2889 1

原创 自定义ViewGroup实现流式布局

自定义ViewGroup原理 流式布局

2023-06-01 11:52:08 617

原创 自定义View

目录引言1 自定义属性2 onDraw 绘制View3 onMeasure 测量 View 的大小并确定它们的宽度和高度4 完整代码5 绘制流程6 总结

2023-05-11 17:43:04 637

转载 Android UI 基础-坐标系、角度(弧度)、颜色

Android UI 基础-坐标系、角度(弧度)、颜色

2023-05-08 15:45:01 498

原创 解读apk分包-32位安装包、32位64位兼容包和64位安装包

确保应用包含64位库即可,如包含不做修改,如未包含,需添加64位库即可。应用不一定要支持所有 64 位架构,但对于支持的每种原生 32 位架构,应用都必须包含相应的 64 位架构。

2022-11-01 12:08:46 17699 1

原创 ListView列表项View复用--ViewHolder模式

名词介绍ListView我们称之为列表,ListView中显示的每列,我们称之为列表项。内容:本文讲列表项View复用,那么何时会复用列表项View?当列表存在滚动时,即所有列表项不能被全部看到,就会复用View。本文以ListView使用时重写BaseAdapter的适配器为例,讲解列表项View复用中的ViewHolder模式实现的控件对象复用。在重写BaseAdapter时,通过重写getView方法实现自定义列表项View和列表项View复用,每个列表项的每次展示都需要调用getView

2021-04-17 22:38:01 889

原创 Android线程间通信runOnUiThread

定义:Android线程间通讯(主要是子线程与UI主线程之间通信,子线程发送消息给UI主线程,主线程对界面进行相应的更新)原理基于Handler,在Handler的基础上进行封装,Handler的使用如下:1、Main Thread 中实现Handler类2、子线程中拥有Main Thread中Handler类的对象mHandler3、子线程发送消息给主线程mHandler.sendMessage(Message msg)4、通过Looper循环机制,主线程Handler类中的handleMe

2021-02-03 17:55:14 604

原创 Java基础-数据序列化之序列化框架的使用

为什么要序列化?现在开发过程中经常遇到多个进程多个服务间需要交互,或者不同语言的服务之间需要交互,这个时候,我们一般选择使用固定的协议,将数据传输过去,但是在很多语言,比如java等jvm语言中,传输的数据是特有的类对象,而类对象仅仅在当前jvm是有效的,传递给别的jvm或者传递给别的语言的时候,是无法直接识别类对象的,那么,我们需要多个服务之间交互或者不同语言交互,该怎么办?这个时候我们就需要...

2020-04-14 12:41:07 187

原创 框架篇(一)-登录实例和Google官方实例讲解MVP模式

实例讲解MVP模式

2020-04-09 11:09:55 557

原创 解决国内访问GitHub慢的问题(加速访问网站)

原因简述GitHub的域名遭到DNS污染,导致无法连接使用 GitHub 的加速分发服务器,才使得国内访问速度很慢。为了剖析原因,我们首先需要了解域名访问服务器的原理和DNS污染。域名访问服务器的原理由上图可知,域名访问网站服务器中最重要的环节是DNS解析域名和IP地址的对应关系,那么为什么会出现DNS污染呢?DNS污染(域名服务器缓存污染):DNS为缓解网络压力,会缓存解析到的域名...

2020-04-07 16:26:33 3681 1

原创 以Android Studio讲解Gradle在Android项目中的应用(一)

本文名词:Gradle/Android/Android Studio/android gradle plugin在本文中AS代表Android Studio,gradle插件代表android gradle plugin。本文目录:什么是Gradle?Gradle的功能gradle与android studio的关系android项目中的gradle文件扩展-不借助IDE使用gr...

2020-04-07 16:15:08 510 1

原创 Android studio(AS)项目更换gradle版本

本文只介绍操作,不介绍原理,如需了解原理,请详细了解Gradle、Android Gradle Plugin以及AS项目中与Gradle有关的文件和各文件的作用。在开发过程中经常会使用AS导入开源的项目,但是开源项目使用的Gradle与Android Gradle Plugin版本和自己的AS所使用的默认版本经常不一样==(如AS能支持开源项目的版本,最好使AS支持项目版本,否则可能因为版本不一...

2020-04-01 15:53:56 20824 1

原创 Android TextView省略号代替多出数据

1、效果图 2、xml实现 android:maxLines=”1” android:ellipsize=”end”<TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content

2017-09-29 19:39:58 2071

原创 Android控件之WebView(网页调转回APP)

问题来源:网页跳转回应用 APP打开网页,网页放置在服务器中(例如,APP打开百度网页),打开网页之后在某一时刻需要从网页在跳转回到APP。 实现原理:使用URI再加上Intent来实现。 URI介绍: 就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下: scheme://hos

2015-10-09 19:04:41 3400

原创 Android控件之WebView(基础知识)

1. 常用设置 1.1 打开网页时不调用系统浏览器,而是在WebView中显示。 WebView如果不设置setWebViewClient(),网页在系统系统浏览器中打开,如果设置则在WebView中显示,同时还可以自定义WebViewClient。mWebView.setWebViewClient(new WebViewClient(){ @Override publi

2015-10-09 18:52:10 635

原创 android下访问已存在的sqlite数据库文件的办法

android下访问已存在的sqlite数据库文件的办法

2015-09-17 11:44:33 6540

原创 ADT集成环境+PhoneGap 2.9.0搭建HTML5 开发APP环境

一.环境搭建1.   搭建开发Android环境,此处不再讲述,可以使用ADT集成环境,也可以使用Eclipse + Android SDK + ADT Plugin。ADT集成环境下载地址:http://developer.android.com/sdk/index.html2.   配置PhoneGapPhoneGap下载地址:http://phonegap.c

2015-05-28 11:35:08 1189

原创 Android断点调试Service

问题:以调试 模式启动Android 项目时,在service 中设置断点,调试器不会停止下来。解决办法:1.   Androidmanifest.xml配置文件,将service 配置后面的 android:process=":remote" 删除就可以了。2.   使用Log,打印信息。3.   等待添加调试器,添加了这条语句之后,可以在这个方法的任何地方添加断点。在需要调

2015-05-27 18:01:16 5342 1

原创 java.lang.ExceptionInInitializerError

一.错误,原因java.lang.ExceptionInInitializerError二.原因引起java.lang.ExceptionInInitializerError 错误的原因是:在类的初始化时,出错。也就是说,在加载类时,执行static的属性、方法块时,出错了。比如 public class AA{ private static AA aa =

2015-05-27 17:53:12 44514 3

原创 Android Callback浅谈

一.简介,例子      CallBack是回调的意思,"回调函数"或者"回调方法"是软件设计与开发中一个非常重要的概念,掌握"回调函数"的思想对程序员来说(不管用哪种语言)是非常必要的。       什么是回调函数呢?回调函数就是预留给系统调用的函数,而且我们知道该函数被调用的时机。这里有两点需要注意:第一点,我们写回调函数不是给自己调用的,而是准备给系统在将来某一时刻调用的;第二点

2015-04-22 18:32:26 1183

原创 Android Junit测试环境搭建

一.单元测试简介在android的开发的过程中,经常需要对业务方面的代码进行测试,熟悉java的人都知道junit, 在android中google提供了基于junit为android进行了优化得自动化框架junit,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性,在java中使用junit编写测试用例,我们需要继承TestCase,在android中需要继承Android

2015-04-22 18:13:48 1240

原创 Android Service(一)--浅谈Service

一.Service简介service可以说是一个在后台运行的Activity,它不是一个单独的进程,它只需要应用告诉它要在后台做什么就可以了,它要实现和用户的交互的话需要通过通知栏或则是发送广播,UI去接收显示。它的应用十分广泛,尤其是在框架层,应用更多的是对系统服务的调用。它用于处理一些不干扰用户使用的后台操作。如下载,网络获取。播放音乐,他可以通过INTENT来开启,同时也可以绑定到宿主对

2015-04-13 17:25:54 873

原创 Android Thread和AsyncTask的区别和联系

一.Thread简介在Android当中,当一个应用程序的组件启动的时候,并且没有其他的应用程序组件在运行时,Android系统就会为该应用程序组件开辟一个新的线程来执行。默认的情况下,在一个相同Android应用程序当中,其里面的组件都是运行在同一个线程里面的,这个线程我们称之为Main线程。当我们通过某个组件来启动另一个组件的时候,这个时候默认都是在同一个线程当中完成的。当然,我们可以自己

2015-04-10 11:59:36 1644 1

原创 Android Preference API 用法--ListPreference(一)

一.ListPreference简介我们都只知道SharedPreference非常适合于参数设置功能,在此处的preference 也是代表SharedPreference的意思,在SharedPreference中,我们可以迅速的将某些值保存进xml文件中,然后我们可以读取这些设置信息进行相应的操作。为了简化与preference相关的应用开发,android为我们提供了一系列的api

2015-04-09 17:56:50 5683

原创 Android向EasyN摄像头发送http get请求获取媒体数据响应包

一.描述Android实现获取网络摄像头的视频流并且播放,以便实现手机实时监控。网络摄像头:EsayN(普顺达)。网络:内网。外网应该也也一样,没有测试。协议文档:ip Camera视音频访问协议。此文档主要是实现协议文档中发送 http get请求到网络摄像头,获取媒体数据响应包。代码中摄像头的IP和端口分别是192.168.10.253  81。二.发送http g

2015-03-26 14:04:45 3236

原创 php支持连接sql server数据库

1、软件配置Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2数据库,wamp2.2中的php版本是5.3.10。Php环境也可以换成php+apache。2、支持连接MySQL Server配置 php版本5.3以前,有php_mssql功能,可以使用,但是5.3及以后的版本不支持。2.1、php连接mssql设置(php5.3以前版

2014-12-02 16:01:47 3791

原创 android wifi连接可接收数据, gprs不能

android获取网络上的文件的时候,在WiFi环境下可以获得,GPRS网络不行。原因:访问的时候要使用静态ip,不能动态ip。例子: 华为网盘直链云加速里面存储的文件,下载的时候ip是动态分配的,GPRS网络环境下不能获取数据。扩展:1. 为什么GPRS网络下,获取数据的时候不能是动态ip,也就是说必须是公网ip才行?http://www.wzsky.net/html/Cis

2014-11-13 11:53:48 1868

原创 内存泄露

错误提示:java.lang.Throwable: Explicit termination method 'release' not called。翻译为:明确的终止方法不叫“释放”原因:内存泄露。尝试解决办法:1. 跟一下内存使用情况2. 监控你定义的全局变量大小。

2014-11-12 15:56:41 961

原创 自动更新--下载apk以及提示对话框的实现(3)

下载apk以及提示对话框的实现一、步骤:1. 确定有可以更新的版本,对话框提醒用户是否进行更新。2. 选择更新的话,显示下载对话框并且进行下载,否则关闭提示更新对话框。3. Apk下载完成后,安装apk。二、具体细节:1. 提示用户更新的时候,实现必须更新的方法如下:显示的对话框只显示更新按钮,也就是只能选择更新。2. 下载的时候,下载对话框的页面显示一个进度条来显示下

2014-11-12 15:47:36 2512

原创 自动更新 -- 版本号比较(2)

版本号比较在实现自动更新的时候,需要进行版本号的比较。例如: 1.0.6 和1.0.7比较大小解决方案:将版本号的字符串转换成整数来比较。步骤:1. 去除字符串中的小数点。(使用正则表达式)2. 比较两个字符串的长度,长度短的后尾补0,直到两个字符串长度相同。(为了实现 1.0.5.1与1.0.6的比较)。3. 将两个字符串转换成整数比较。代码如下:// 正

2014-11-12 11:46:50 1513

原创 自动更新--解析xml文件(1)

1. 解析xml文档1.1 根据字符串类型的文件名字解析xml文件/** 解析xml文件* xml文件实例如下: ddviplinux m 30 李路 女 20 * */public void parseXml(String fileName) { try { DocumentBuilderFactory d

2014-11-11 17:23:42 1450

原创 调用相机拍照和图册中的图片并且对图片进行裁剪

在写Android应用的时候,很多时候需要调用自带的相机拍照或者直接从图库中选取图片并且对图片进行裁剪。下面就讲述如何实现。1. 调用相机   (1) 使用Intent调用相机,但是在启动Intent之前要设置一个文件路径,用来存储相机照下来的照片。   (2)然后使用startActivityForResult启动Intent。   (3)然后在protected void

2014-09-28 13:36:21 1472

原创 Android 利用addView 动态给Activity添加View组件

本文主要讲述如何动态给UI界面添加布局和控件,在编程的时候很多时候需要动态显示一些内容,在动态添加View的时候,主要使用addView方法。1. addView方法简介在Android 中,可以利用排版View的 addView 函数,将动态产生的View 物件加入到排版View 中。例子如下:界面代码: <LinearLayout android:id="@+id

2014-09-22 12:53:49 28821

原创 主程序等待对话框响应后再顺序执行问题

在项目开发中,经常会用到对话框,Android的对话框都是异步进行的,但是有时候需要实现主程序等待对话框响应后再继续执行。下面以使用AlterDialog对话框返回true或者false之后,主程序再继续运行为例讲述如何实现主程序等待对话框响应后再顺序执行的方法。思考一:      首先考虑到声明一个final 关键字的布尔型的局部变量,然后在对话框的“确认”和“取消”按钮的点击事件中对布

2014-09-19 13:17:27 3211

原创 在sd卡中创建文件夹和文件

本文以在sd卡中创建文件和文件夹为例,讲述如何创建文件夹和文件的重点。1. 路径问题(下面的例子是在Java中测试的,在Android中同样适用)1.1 如果需要在文件夹中创建文件的文件夹存在,直接创建文件即可。例如:File file = new File("F:/1.png");1.2 如果需要在文件夹中创建文件的文件夹不存在,需要首先创建文件夹。例如: File file

2014-09-17 13:50:06 4484 1

原创 使用Handler在子线程中更新UI

Android规定只能在主线程中更新UI,如果在子线程中更新UI 的话会提示如下错误:Only the original thread that created a view hierachy can touch its view((只有原来的线程创建一个视图层次可以触摸它的视图)。      只能在主线程中更新UI的原因是:android中相关的view和控件不是线程安全的,我们必须单独做处

2014-09-17 13:10:50 2821 1

原创 Android活动间调用并且返回后的数据

Android活动之间相互跳转并且返回数据的时候,需要使用Activity的startActivityForResult()方法。下面将有一个例子来详细讲述startActivityForResult()方法和一些注意事项。例子:1. activity_first.xml 2. FirstActivity 3. activity_second.xml 4. Seco

2014-08-27 18:28:32 965

原创 字符串null和“”的区别

String str1 = null; str1引用为空。String str2 = ""; str2引用一个空串。1. null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,而str2已经实例化。注意:(1)因为null不是对象,""是对象。所以比较的时候必须是 if(str1==null){...}和if(str2.equals("")){...}。(2

2014-08-27 12:21:09 1108 1

原创 Java实现泛型委托类似C#Action<T>

一、C# Action 泛型委托(帮助理解委托)描述:封装一个方法,该方法只采用一个参数并且不返回值.语法:public delegate void Action(T arg);T:参数类型:此委托封装的方法的参数类型arg:参数:此委托封装的方法的参数备注:通过此委托,可以将方法当做参数进行传递.Action 泛型委托:封装一个方法,该方法只采用一个参数并

2014-08-26 13:03:41 5913

原创 Java方法输出参数

在写Java代码的时候,自定义方法的时候,都会牵扯到参数问题,方法参数包括输出参数和输入参数。下面主要说说输出参数:1.没有输出参数的时候就直接把输出参数写成void就可以。2.当输出参数只有一个数据的时候,直接返回输出参数直接写成输出数据的类型就行。3.当输出多个数据且类型一致的时候,使用数组,集合等等也可以实现。4.当输出多个数据但是数据类型不一致的时候,此时就比较麻烦。此

2014-08-07 15:28:36 6874

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除