android
zzh96
这个作者很懒,什么都没留下…
展开
-
android关闭Activity
1.finish()结束当前Activity,不会立即释放内存。2.killProcess()结束当前进程,绕过了生命周期的顺序,属于强制关闭。且用该方法kill进程后app会重启。会立即释放内存。原创 2017-03-01 16:24:54 · 570 阅读 · 0 评论 -
拨号盘
总体思路:1.单击Button将对应的值添加到TextView中;2.设置监听TextView文本的改变;3.重写TextWatcher中的afterTextChanged()方法,里面实现读取联系人的功能;4.将TextView中的内容与读取到的联系人号码进行匹配;5.将符合要求的电话号码显示在ListView中;6.单击拨号Button或ListView子项拨打电话;原创 2017-05-09 22:49:10 · 513 阅读 · 0 评论 -
android 7.0 JobService启动时onStartJob执行问题
MainActivity.java:public class MainActivity extends AppCompatActivity { @TargetApi(24) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc原创 2017-06-23 10:36:40 · 4914 阅读 · 1 评论 -
旋转矩形框
MotionEvent中getAction( )与getActionMasked( )的区别:getAction( )得到的值是由触控点index + 触控事件 构成;getActionMasked( )得到的值仅由 触控事件 构成.onTouchEvent(MotionEvent event)的实现:public boolean onTouchEvent(Motion原创 2017-07-12 19:31:33 · 1091 阅读 · 0 评论 -
application/x-www-form-urlencoded
form的enctype属性为编码方式,常用有两种: application/x-www-form-urlencoded 和 multipart/form-data , 默认为application/x-www-form-urlencoded 。当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&nam转载 2017-07-22 09:37:03 · 369 阅读 · 0 评论 -
dispatchDraw
Android的view组件显示主要经过mesure, layout和draw这三个过程。在mesure阶段里调用mesure(int widthSpec, int heightSpec)方法,这个方法是final不能被重写,在这个过程里会调用onMesure(int widthSpec, int heightSpec)方法。当组件设置好大小后,调用final layout(int l, int转载 2017-08-12 10:50:09 · 884 阅读 · 0 评论 -
SocketDemo 类似聊天室
服务端Java代码:public class SocketDemo { private static final int SOCKET_PORT = 50000; public static ArrayList socketList = new ArrayList(); public static void main(String[] args) { ServerSocket se原创 2017-09-23 17:11:32 · 286 阅读 · 0 评论 -
ContentProvider中的getType返回的MIME有什么作用
转自:http://blog.csdn.net/harvic880925/article/details/44620851一、概述在上篇中,我们讲了通过共享数据库的增、删、改、查问题,但在生成PeopleContentProvider类时,由于其派生自ContentProvider,所以我们我们重写了数据库操作的insert()、query()、update()、delete()函数,但对转载 2017-09-25 11:09:08 · 640 阅读 · 0 评论 -
android studio 打包AAR并将AAR引入u3d
打包方法:然后找到生成的AAR: 导入u3d时需要注意:先用压缩软件打开aar文件,然后删除libs文件夹中的classes.jar如果删除了下图中的classes.jar: 不删除classes.jar就会出现:Failed to Move File / Directory from 'Temp/StagingArea\原创 2017-09-19 10:59:10 · 715 阅读 · 0 评论 -
targetSdkVersion<23中调用checkSelfPermission的问题
App 的targetSdkVersionContextCompat.checkSelfPermission()不会起作用,就算通过打开应用详情,设置了权限(允许或拒绝),ContextCompat.checkSelfPermission依然会返回0(表示权限允许)。打开应用详情:public void setPermission(){ Intent intent=ne原创 2017-11-10 15:02:21 · 744 阅读 · 0 评论 -
使用Glide加载GIF图时遇上的问题
在第一个页面中,使用Glide加载GIF时,未设置asGif或diskcachestrategy.NONE,第一个页面中的ImageView能正常加载并播放GIF图: @BindingAdapter("icon") public static void setIcon(ImageView imageView,String url){ Glide.with(imag原创 2017-10-26 01:14:05 · 16702 阅读 · 0 评论 -
android7.0从相册中选择照片
相册中的照片都是存储在external-storage,需要动态申请WRITE_EXTERNAL_STORAGE权限.if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){原创 2017-03-29 20:32:09 · 6313 阅读 · 0 评论 -
android设备的唯一标识
获取一个能唯一标识每台Android设备的序号与服务器通信所以如果你想得到设备的唯一序号, TelephonyManager.getDeviceId() 就足够了。但很明显暴露了DeviceID会使一些用户不满,所以最好把这些id加密了。实际上加密后的序号仍然可以唯一的识别该设备,并且不会明显的暴露用户的特定设备,例如,使用 String.hashCode() ,结合UUID:St转载 2017-12-30 16:33:35 · 264 阅读 · 0 评论 -
解决RadioButton设置drawable居中问题
xml文件:<RadioButton android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:button="@null" android:drawableTop="@drawable/selector_gende...原创 2018-04-17 10:04:44 · 1641 阅读 · 0 评论 -
VideoView播放raw目录下的资源以及满屏播放问题
1.播放raw目录下的MP4文件String uri="android.resource://"+getActivity().getPackageName()+"/"+R.raw.open_movie;mVideoView.setVideoURI(Uri.parse(uri));2.播放满屏在xml文件中设置videoview的长宽皆为match_parent ,播放视频的...原创 2018-04-27 18:13:27 · 1202 阅读 · 2 评论 -
Gradle Build 出错:It is currently in use by another Gradle instance.
分别build 3次 依次出现下面的错误:Timeout waiting to lock file hash cache (/Volumes/SHARED/zyco/androidProjects/MyApplication3/.gradle/4.4/fileHashes). It is currently in use by another Gradle instance.Owner PI...原创 2018-07-27 10:15:21 · 8843 阅读 · 1 评论 -
Glide3.7从URL加载图片的执行流程
Glide加载网络图片 根据郭霖的《从源码的角度理解Glide的执行流程》总结出Glide3.7版本加载网络图片的流程原创 2018-09-13 10:09:26 · 623 阅读 · 0 评论 -
?android:attr/属性 与 ?android:属性
引用资源时,使用@还是?的区别,例如在设置style的时候既可以使用@也可以使用? style="?android:attr/progressBarStyleHorizontal" style="@android:style/Widget.ProgressBar.Horizontal"使用@表示使用固定的style,而不会跟随Theme改变,这style可以在对应的style.转载 2017-05-28 20:15:14 · 3339 阅读 · 0 评论 -
android屏幕及尺寸单位
获取屏幕参数代码:Java代码 收藏代码DisplayMetrics metric = new DisplayMetrics(); //API 17之后使用,获取的像素宽高包含虚拟键所占空间,在API 17之前通过反射获取 context.getWindowManager().getDefaultDisplay().getRealMetrics(metric); //获转载 2017-05-27 17:43:06 · 562 阅读 · 0 评论 -
AlertDialog
AlertDialog的构造方法:Protected constructorsAlertDialog(Context context)Creates an alert dialog that uses the default alert dialog theme.AlertDialog(Context context, b原创 2017-03-04 10:59:05 · 292 阅读 · 0 评论 -
匿名内部类访问外部类方法中的局部变量
匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型 1. 这里所说的“匿名内部类”主要是指在其外部类的成员方法内定义,同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被final修饰。 2. 原因是编译程序实现上的困难:内部类对象的生命周期会超过局部变量的生命周期。局部变量的生命周期:当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调转载 2017-03-09 13:10:40 · 2442 阅读 · 0 评论 -
getSupportFragmentManager 与 getFragmentManager
getSupporFragmentManager返回的是android.support.v4.app.FragmentManagergetFragmentManager返回的是android.app.FragmentManager原创 2017-03-11 13:43:08 · 456 阅读 · 0 评论 -
关于unbindService未调用onServiceDisconnected
1、onServiceDisconnected() 在连接正常关闭的情况下是不会被调用的.2、该方法只在Service 被破坏了或者被杀死的时候调用. 例如, 系统资源不足, 要关闭一些Services, 刚好连接绑定的 Service 是被关闭者之一, 这个时候onServiceDisconnected() 就会被调用.原创 2017-04-07 11:24:08 · 6766 阅读 · 3 评论 -
外部存储
外部存储:最容易混淆的是外部存储,如果说pc上也要区分出外部存储和内部存储的话,那么自带的硬盘算是内部存储,U盘或者移动硬盘算是外部存储,因此我们很容易带着这样的理解去看待安卓手机,认为机身固有存储是内部存储,而扩展的T卡是外部存储。比如我们任务16GB版本的Nexus 4有16G的内部存储,普通消费者可以这样理解,但是安卓的编程中不能,这16GB仍然是外部存储。所有的安卓设备都有转载 2017-04-08 09:28:58 · 651 阅读 · 0 评论 -
Http Range请求头格式
Range 请求头格式Range: bytes=start-endRange: bytes=5- :第5个字节及最后个字节的数据Range: bytes=10-100 :第10个字节到第100个字节之间的数据. 注意,这个表示[start,end],即是包含请求头的start及end字节的,所以,下一个请求,应该是上一个请求的[end+1, nextEnd] :Range:原创 2017-04-08 09:49:05 · 1853 阅读 · 0 评论 -
关于Environment.getExternalStorageDirectory()
使用华为手机调试的时候,Environment.getExternalStorageDirectory().getPath()返回的路径是空的.原因如下:不同的设备上,调用getExternalStorageDirectory()返回值不一样。这个方法返回的是当前设备厂商所认为的“外部存储”,有可能返回外置的SD卡目录(Micro SD Card),也可能返回内置的存储目录(eMMC)。g原创 2017-03-30 14:31:16 · 4730 阅读 · 2 评论 -
android:process=":remote"属性
一般情况下一个服务没有自己独立的进程,它一般是作为一个线程运行于它所在的应用的进程中。但是也有例外,Android声明文件中的android:process属性却可以为任意组件包括应用指定进程,换句话说,通过在声明文件中设置android:process属性,我们可以让组件(例如Activity, Service等)和应用(Application)创建并运行于我们指定的进程中。例如:一个应转载 2017-04-12 17:04:08 · 453 阅读 · 0 评论 -
android访问本地Web服务器
模拟机访问127.0.0.1来访问,都是访问模拟器本身你想在模拟器上面访问安装模拟器的电脑,那么就使android内置的IP:10.0.2.2 10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名转载 2017-04-04 09:42:20 · 725 阅读 · 0 评论 -
@SerializedName注解
在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。 Gson解析json的方法我这里就不详细说明了,网上一大把的例子,我这里主要说一下使用@SerializedName进行注解的情况。 使用Gson解析json成对象时默认的是将json里对应字段的值解析到java对象里对应字段的属性里面。然后我们经常会遇到我们自己定义的ja转载 2017-04-21 09:11:25 · 521 阅读 · 0 评论 -
ComponentName
ComponentName(组件名称)是用来打开其他应用程序中的Activity或服务的。Identifier for a specific application component (Activity, Service, BroadcastReceiver, or ContentProvider) that is available. Two pieces of informati原创 2017-05-03 16:42:11 · 569 阅读 · 0 评论 -
AIDL中的定向tag
AIDL中的定向 tag 表示了在跨进程通信中数据的流向,其中 in 表示数据只能由客户端流向服务端, out 表示数据只能由服务端流向客户端,而 inout 则表示数据可在服务端与客户端之间双向流通。其中,数据流向是针对在客户端中的那个传入方法的对象而言的。in 为定向 tag 的话表现为服务端将会接收到一个那个对象的完整数据,但是客户端的那个对象不会因为服务端对传参的修改而发生变动;out转载 2017-05-04 12:46:35 · 614 阅读 · 0 评论 -
android xml文件中透明效果设置
在xml文件中,可以直接写#0000,这个是全透明的效果。#9000这个值相当于56%的样子,因为颜色值是16进制的,#9000相当于(9/16)而百分比的话,大家可以按照这个比例来换算全透明 #000010%透明 #1600 20%透明 #320030%透明 #480040%透明 #640050%透明 #800060%透明 #960070%透明 #B200转载 2017-04-22 20:24:58 · 1477 阅读 · 0 评论 -
读取短信并复制验证码小工具
获取短信有两种方式,第一种是通过广播接收器,第二种通过读取短信数据库。第一种:静态注册了一个广播,通过接收包含android.provider.Telephony.SMS_RECEIVED动作的广播,获取新收到的短信内容。 <receiver android:name=".GetSMS" android:enabled="t原创 2017-05-06 00:38:55 · 5055 阅读 · 3 评论 -
实现一键关屏功能
实现一键关闭屏幕的功能,需要获得系统服务DevicePolicyManager mDevicePolicyManager=(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);通过这个DevicePolicyManager类,能够实现关闭屏幕功能,但需要获得设备管理权限。关键代码如下: m原创 2017-05-08 00:25:37 · 670 阅读 · 0 评论 -
正则表达式 \\\\
"\\\\"字符串中,两个反斜杠被解释为一个反斜杠,再作为正则表达式, \\ 则被正则表达式引擎解释为 \,所以在正则表达式中需要使用四个反斜杠表示"\""*"表示零次或多次匹配前面的字符或子表达式,等价于{0,},例如:zo* 匹配"z"和"zoo"这里星号对 o 起作用,所以 o 可以出现零次或多次,所以可以匹配:z //o 出现0次zo //o 出现1次zoo //o 出原创 2017-04-26 14:07:08 · 2740 阅读 · 0 评论 -
Android换肤框架Android-Skin-Loader源码解析
本篇文章是针对Android端换肤框架Android-Skin-Loader的源码解析整个框架的架构从加载皮肤说起SkinManager.getInstance( ).load一行代码便实现了换肤功能,那么进入该方法看看具体是怎样实现的SkinManager.javapublic void load(String skinPackagePath, final ILoaderLi...原创 2019-03-29 18:15:42 · 1195 阅读 · 3 评论