安卓
点石为金
希望能把自己平时遇到的一些问题写成专题,帮助到在工作中可能也会遇到类似问题的软件开发者,祝愿大家共同进步!
展开
-
安卓-自定义标题栏组件
这里说的是自定义标题栏组件,通过设置组件的部分属性,实现标题栏的不同的展示样式,先上效果图: 自定义标题栏组件不同效果展示图自定义组件步骤:1)继承自View或容器布局2)xml中引入自定义控件3)代码中设置属性或实现接口直接上代码:TitleV原创 2017-02-06 15:46:28 · 967 阅读 · 0 评论 -
还原AndroidManifest.xml明文的方法
发布的安装包中的AndroidManifest.xml文件为二进制文件,如果想通过此文件查看应用的相关信息,需要先转成明文。具体操作如下:1)下载jar包(AXMLPrinter2.jar),下载链接地址:http://download.csdn.net/download/singleton1900/69020272) 将AXMLPrinter2.jar与AndroidManife原创 2017-01-23 11:41:46 · 6047 阅读 · 1 评论 -
安卓-打印日志及日志工具类使用
一、打印日志介绍安卓系统中提供了打印日志的方式:Log.v() ,Log.d() ,Log.i() ,Log.w() ,Log.e() 以上日志级别依次从低到高打印日志的目的是为了方便定位问题和查看关键信息。下面是对各种日志级别的输出介绍: 1、Log.v 的输出颜色为黑色的,输出大于或等于VERBOSE日志级别的信息 2、Log.d的输出颜色是黑色的,输出大于原创 2017-02-21 15:25:36 · 5730 阅读 · 0 评论 -
安卓-获取全局上下文
一、实现获取全局上下文什么情况下需要使用全局上下文,不能通过参数传过来,但是做其他工作又用到这个参数,这种情况下就需要使用全局上下文,一般情况下都是可以通过参数传进去的。比如说封装一个工具类,工具类中需要用到上下文,可以通过参数传进去,也可以在工具类中使用全局上下文。以获取getApplicationContext();这个为例。为了便于管理,将其定义在Application中。总结下使用原创 2017-02-21 18:04:17 · 4315 阅读 · 0 评论 -
InputStream按指定编码读取解决乱码问题
今天写了个小demo,核心功能就是客户端和服务器互传数据,服务端采用java web编写,客户端使用java编写。在测试时出现一个很常见的问题,就是客户端收到服务端返回的数据总是乱码。开始一直以为是服务端的问题,通过上网查询,大家都说使用PrintWriter返回数据时需要在PrintWriter out = response.getWriter();前面设置,照做了还是不行,接着查,大家都这原创 2017-01-24 13:37:31 · 49938 阅读 · 2 评论 -
安卓-管理Activity
一、简述当项目中的Activity多了就会涉及到管理的问题,比如:想看下当前已经启动了多少了Activity,可以在随意位置关闭所有的Activity等。如果想实现这个功能,可以自定义一个类用于管理所有的启动的Activity和销毁的Activity。同时需要自定义一个BaseActivity,在这个类中增加启动的Activity和移除Activity等功能,这样当自定义一个Activit原创 2017-02-22 11:03:17 · 509 阅读 · 0 评论 -
安卓-封装实用的Toast工具类
大家好,Toast这个提示框大家都晓得,显示一段时间后自动消失,不能获得焦点。但是在使用中有些问题:1)需要弹出一个新的Toast时,上一个Toast还没有显示完2)可能重复弹出相同的信息3)Toast具体有哪些用法不是很熟悉,用到时导出去找4)app退出去了,Toast还在弹等等一系列问题下面封装了一个工具类,帮助大家管理Toast,基本上可以满足常用的需求,如果原创 2017-01-25 15:57:00 · 9567 阅读 · 1 评论 -
安卓-使用WindowManager实现类似Toast效果
大家好,今天讲下如果使用WindowManager通过添加View的方式实现自定义Toast效果。整个Android的窗口机制是基于一个叫做WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过Wi原创 2017-01-26 10:45:44 · 2415 阅读 · 2 评论 -
安卓-通过include导入标题栏布局
大家好,今天讲下自定义标题栏,一般实现标题栏大概有这么几种思路:1)使用系统自带的2)自定义替换系统自带的3)自己定义,通过include方式导入4)自己定义,通过组合控件的方式引用5)其他今天这篇文章要讲的是通过include方式导入标题栏布局,一般项目中每个app的风格是固定的,标题栏的样式最多也就几种,虽然说自定义组合控件的方式可以封装的很灵活,但是一般就用到原创 2017-01-26 11:30:02 · 2601 阅读 · 0 评论 -
安卓-ListView基本使用
今天的目标是使用ListView控件完成一个布局,左边一个图标,右边分为上线两部分:标题和内容;ListView在使用时要考虑内存优化,就是使用ViewHolder(自己定义的一个内部类,存储布局中的控件的索引)适配器使用继承自ArrayAdapter的适配器,也可以继承自BaseAdapter(要多写几个方法)目前虽然还有公司在使用,但是后面大家陆续都会转向RecyclerView,原创 2017-02-14 15:44:11 · 1052 阅读 · 0 评论 -
安卓-控制EditText的光标的位置
EditText光标的位置的控制,主要是依赖于属性setSelection,传入光标的位置索引即可。下面分三种情况测试:1)设置光标在文字的起始位置2)设置光标在文字的中间位置3)设置光标在文字的末尾位置布局文件activity_edit_text_cursor.xml<LinearLayout xmlns:android="http://schemas.andr原创 2017-02-15 10:02:21 · 3710 阅读 · 0 评论 -
安卓-Intent的7大属性介绍
一、简介程序的3个核心组件——Activity、services、广播接收器——是通过intent传递消息的。intent消息对于运行时绑定不同的组件是很方便的,这些组件可以是同一个程序也可以是不同的。一个intent对象,是一个被动的数据结构,它保存了一个操作的抽象描述——或通常是一个广播的实例,一些发生的事情的描述,一个通知。传递intent到不同组件的机制是互不相同的。 intent原创 2017-02-22 14:39:53 · 2002 阅读 · 0 评论 -
安卓-Intent传递数据
一、简述Intent可以携带数据,可以携带的常见的数据分为以下几种: intent.putExtra(String name, boolean value); intent.putExtra(String name, byte value); intent.putExtra(String name, char value);原创 2017-02-21 13:43:45 · 1449 阅读 · 0 评论 -
安卓-服务中onCreate与onStartCommand的区别
服务生命周期中主要有三个重要的阶段:1)创建服务 onCreate2)开始服务 onStartCommand3)销毁服务 onDestroy一个服务只会创建一次,销毁一次,但是会开始多次。下面用一个demo来演示下:界面中有三个按钮,一次是启动服务,再次启动服务,结束服务,演示顺序,先点击启动服务按钮,再点击再次启动服务按钮,最后点击结束服务的按钮,通过打印Log来看执行原创 2017-02-17 10:54:36 · 20436 阅读 · 0 评论 -
安卓-启动服务并让服务自己结束
让服务自己结束主要用到一个API就是stopSelf();下面写一个demo来演示下:1)主界面中一个按钮,点击启动服务2)服务中开始服务时开启一个线程执行一个for循环打印日志3)当执行到500时停止服务先看下打印的日志:I/StopService: run: i=499I/StopService: run: i=500I/StopService: onDestr原创 2017-02-17 11:45:12 · 6182 阅读 · 0 评论 -
安卓-子线程中更新UI的几种常见方法
安卓的子线程中不允许直接更新UI,否则会报错。一般常见的子线程中更新UI的几种方法如下:1)runOnUiThread2)Handler与Message3)View.post(Runnable )4)AsyncTask下面写个demo测试下几种情况,在布局文件中定义5个按钮和一个文本控件,5个按钮中的前4个用于演示前面提到的可以进行更新UI的四种情况,第5个按钮测试在子线程中直原创 2017-02-17 15:14:26 · 530 阅读 · 0 评论 -
安卓-ListActivity的使用
ListActivity可以理解为是ListView和Activity的结合。主要用来显示列表数据。显示数据需要设置适配器。Adapter常用的有ArrayAdapter,SimpleAdapter和CursorAdapter。ListActivity的使用步骤:1)继承自ListActivity,如:xxx extends ListActivity2)重写onCreate方法,在该方原创 2017-02-03 10:07:21 · 7100 阅读 · 0 评论 -
安卓-绑定服务与解绑服务
为什么要出现绑定服务?普通的服务activity启动后就不管了,这是活动的作用就是启动一个服务或停止一个服务,和服务的关系不够紧密,如果想让活动随时可以控制服务做事情,这时就要用到绑定服务了。注意:通过startService开启的服务,在服务中会执行onStartCommand函数。如果需要做耗时操作,需要在onStartCommand中开启一个新的线程来处理。为什么要在新的线程中处原创 2017-02-18 11:40:23 · 5101 阅读 · 1 评论 -
安卓-IntentService使用
有了Service为什么还要有个IntentService呢?原因如下:1)Service默认运行在主线程中,IntentService运行在一个新的线程中2)Service需要主动调用stopSelf()或stopService()服务才可以停止,IntentService运行完后自动停止使用IntentService需要注意2点:1)构造函数中一定要调用父类的有参构造函数原创 2017-02-18 14:01:54 · 1224 阅读 · 0 评论 -
安卓-启动前台服务
为什么要设置前台服务?但是服务的系统 优先级还是比较低的,当系统出现内存不足的情况时,就有可能会回收掉正在后台运行的服 务。如果你希望服务可以一直保持运行状态,而不会由于系统内存不足的原因导致被回收, 就可以考虑使用前台服务。前台服务和普通服务最大的区别就在于,它会一直有一个正在运 行的图标在系统的状态栏显示,下拉状态栏后可以看到更加详细的信息,非常类似于通知的 效果。当然有时候你也可能不仅仅原创 2017-02-18 16:17:32 · 6059 阅读 · 1 评论 -
安卓-控制控件的宽度占屏幕的一半且水平居中显示
今天说下如何让一个控件的宽度显示时占屏幕的一般宽度,且水平居中显示。这里抛砖引玉,给出三种实现方案:1)线性布局:利用属性android:weightSum和android:layout_weight来实现2)线性布局:利用属性android:layout_weight和隐藏无关控件的方式来实现3)线性布局:通过布局文件和代码动态修改控件的布局中地方宽度参数属性下面分别给出测试代码原创 2017-02-10 11:03:37 · 15717 阅读 · 0 评论 -
安卓-使用layout_weight属性自定义标题栏布局
今天使用android:layout_weight这个属性来实现一个标题栏的布局。线上效果图:布局文件如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/id_parent" android:原创 2017-02-10 11:32:10 · 433 阅读 · 0 评论 -
安卓-启动Activity的两种方式
启动Activity有两种方式:1)startActivity2)startActivityForResult方式1,启动后不关心activity返回的结果方式2,启动后可以接收activity返回的结果,接收结果需要在onActivityResult函数中处理。下面我们来看下这个函数protected void onActivityResult(int requestCo原创 2017-02-20 10:06:16 · 2663 阅读 · 0 评论 -
安卓-Activity生命周期
一、简述android是使用任务来管理活动的,一个任务就是一组存放在栈中的活动的集合。1.活动有四个状态:1)运行状态:活动位于返回栈的栈顶2)暂停状态:活动不处于栈顶位置,但是可见3)停止状态:活动不处于栈顶位置,且完全不可见4)销毁状态:当一个活动从返回栈中移除2.活动生存周期Activity中定义了7各回调方法onCreate():活动第一次创建时原创 2017-02-23 18:33:11 · 583 阅读 · 0 评论