- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 ImageView属性之ScaleType
注意:这个属性控制的是ImageView的图片资源的显示(绝非背景),这个属性只有设置ImageView的宽高属性不同时为wrap_content才生效(如果宽高都设置了wrap_content,那么图片的显示将根据图片的宽高进行显示)!!! 原图(270*480): 为了便于观察设置不同属性时ImageView控件的留白情况,给它设置一个背景色为红色,所显示的红色部分就是ImageView
2017-02-04 14:28:12
274
原创 常用adb命令
查看当前连接的设备:adb devices安装apk到指定的设备上:adb -s 5DBA4DY9ZHSSFE9L install D:\dubug.apk (-s后面跟的是通过adb devices得到的设备标识,文明路径名直接将文件拖到命令行即可得到)出现adb无法使用时,可先在命令行查看adb的端口号5037被谁占用: netstat -aon|findstr “5037” 找出相应的p
2017-01-03 14:10:26
273
原创 CardView使用遇到的问题
CardView:加入这个属性card_view:cardUseCompatPadding=”true”使得在各版本的手机上显示的效果一样,不然在4.X的版本上可以看到阴影,而在6.0的版本上需要额外设置一个magrain才能看到阴影(这显然是不符合设计的)!原因是:在Android Lollipop之前的系统,CardView会自动添加一些额外的padding空间来绘制阴影部分,这也导致了以Lol
2017-01-03 14:06:58
2053
原创 android的事件传递机制
参考http://www.jianshu.com/p/2be492c1df96 onInterceptTouchEvent:事件拦截方法,只有在ViewGrop中存在,因为事件都会先传递到最顶层的parent,如果它没有做处理,该事件(dowm,up等事件)就会传递到下一层,下一层可能是view,也可能是viewgrop,如果是view则会进入它的onTouchEvent,如果是viewGr
2017-01-03 14:04:27
226
原创 android中 Dialog.dismiss()、Dialog.cancel()、和Dialog.hide()的相同点和区别
参考http://sq3946.blog.163.com/blog/static/2438058420115102574560/ * 两者的作用都是将dialog(无论是ProgressDialog还是AlertDialog)从屏幕上清除(remove it from from the screen)。 cancel函数实际上是调用的dismiss函数来进行的清除工作,因此从这点上看两者其实是一
2017-01-03 14:03:25
2332
原创 View的scrollTo和scrollBy
参考http://xroocky.github.io/2016/05/30/ScrollTo%E5%92%8CScrollBy/注意:这两个方法移动的并不是View本身。如果该View没有子View,那么移动的就是View的内容(比如说调用一个Button的相应方法,会发现Button本身并不会移动,移动 的是Button的文本内容)。如果该View中有子View,那么移动的就是子View(
2017-01-03 14:02:21
369
原创 Application、Activity、Context的关系
参考http://blog.csdn.net/woaieillen/article/details/10234807 * 从上面两张图我们可以看出:Application和Activity都是继承自Context * Application对象是整个应用的上下文(通过打印日志可知:无论在哪里,通过getApplication或getApplicationContext得到的都是同一个Cotext
2017-01-03 13:58:11
848
原创 SharedPreferences
参考http://weishu.me/2016/10/13/sharedpreference-advices/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 1.请不要滥用SharedPreference不要存放大的key和value!我就不重复三遍了,会引起界面卡、频繁GC、占用内存等等,好自为之!.毫不相关的配置项就
2017-01-03 13:56:09
171
原创 使用枚举实现单例
首先定义一个枚举单例:public enum SingObject { INSTANCE; private SingObject() {} public String hint() { return "执行方法啦"; }}获得单例对象并执行方法: String hint = SingObject.INSTANCE.hint();
2017-01-03 13:54:52
286
原创 Looper简析
http://blog.csdn.net/fesdgasdgasdg/article/details/52081773 * 在异步线程中创建Handler(不带参数的构造方法)需要Looper.prepare( ),但是这个Handler是子线程的(可知Handler在哪个线程执行,就只是哪个线程的,并非所有的Handler都能执行UI操作,它只是一个辅助机制),如下,执行更新UI的操作会崩溃。
2017-01-03 13:53:57
229
原创 android防止按钮多次点击和添加双击事件
如下:自定义一个抽象类实现View.OnClickListener接口,在onclick方法中判断点击的时间间隔,根据时间间隔调用相应的抽象方法即可在调用处得到回调,可根据需求定义不同的接口和抽象类(单击,双击,单击+双击)“`java public abstract class MyClickListener implements View.OnClickListener {privat
2017-01-03 11:47:41
2124
原创 getLocationInWindow和getLocationOnScreen的区别
如下,通过这两个方法获得的值是一个长度为2的数组 int[] location = new int[2] ;/ location [0]—>x坐标,location [1]—>y坐标view.getLocationInWindow(location); 获取在当前窗口内的绝对坐标,getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父窗口里的
2017-01-03 11:46:31
505
原创 android studio中多model造成的问题
在实际开发的过程中,我们可能遇到一个项目中有多个model的情况,但是无论如何,应用时只有一个的,也就是说,在同一个项目中,只能有一个model的配置文件build.gradle中声明为apply plugin: ‘com.android.application’,其他的不能再通过这句话声明,一般通过apply plugin: ‘com.android.library’声明为lib。按照上面的情况
2017-01-03 11:46:09
2101
原创 android中dp与px的关系
在分辨率为X*Y的手机上,1px占屏幕宽度的1/X,占屏幕高度的1/Y,结合上图可以得出结论:在240x320的手机上,1dp占屏幕宽度的1/(240/0.75)=1/320,占屏幕高度的1/(320/0.75)=1/427(四舍五入) 在320×480的手机上,1dp占屏幕宽度的1/(320/1)=1/320,占屏幕高度的1/(480/1)=1/480 在480×800的手机上,1dp占屏幕宽
2017-01-03 11:45:38
325
原创 view.getParent()与view.getRootView()
顾名思义,getParent就是获取view的父亲节点,而getRootView是寻找当前的view层次中处在最顶层的view,可理解为找出该view实例所在的view层次的根view。如果这个view文件只是一个activity.setContentView时所引用的一个view。 1.当view处于xml文件的根节点时,通过getParent到的view都是它身。 2当view处于xml的
2017-01-03 11:31:18
17221
原创 提高效率的Android Studio快捷键
调试 alt+f8 debug时选中查看值f8 相当于eclipse的f6跳到下一步shift+f8 相当于eclipse的f8跳到下一个断点,也相当于eclipse的f7跳出函数f7 相当于eclipse的f5就是进入到代码alt+shift+f7 这个是强制进入代码ctrl+shift+f9 debug运行java类ctrl+shift+f10 正常运行java类command
2017-01-03 11:29:27
201
原创 java参数传递
参考:http://blog.sina.com.cn/s/blog_4b622a8e0100c1bo.html基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数 此时,如果对这个对象进行一些成员的属性改变操作,例如该对象是学生,包含一个性别属性,如果在这里改变了这个属性,那么原来对象的性别属
2017-01-03 11:28:26
160
原创 避免Toast多次弹出
public class Util { private static Toast toast; public static void showToast(Context context, String content) { if (toast == null) { toast = Toast.makeText(context,
2017-01-03 11:27:47
286
原创 Fragment中的坑
参考:http://www.jianshu.com/p/662c46cd3b5f http://blog.csdn.net/goodlixueyong/article/details/48715661 可能会出现Fragment不为null而fragment.getContext( )为null的情况,Activity都可能会被系统回收然后重建,但Fragment并不会随着Activity的
2017-01-03 11:25:49
419
原创 getActionBar()为null的问题
当前activity引用的主题是没有ActionBar的主题(android studio默认的主题会导致这个问题,而eclipse生成的app默认使用的 android:Theme.Holo.Light.DarkActionBar主题不会有这样的问题)。虽然引用的主题有标题栏,但是自己设置成无标题栏了(在style,xml,activity类中声明了相关的属性)
2017-01-03 11:25:09
234
原创 okHttp一些小细节
当无法连接服务器(连接错误、无网络等)时: 1.如果设置使用缓存,此时onResponse和onError都会相应 2.如果设置不使用缓存,则只会相应onError
2017-01-03 11:24:44
283
原创 DrawerLayout
在xml中设置侧滑界面的位置(左边或者右边),使用 android:layout_gravity=”end”或者android:layout_gravity=”start”,而在代码中开关侧滑菜单时使用的是mDrawerLayout.openDrawer(Gravity.LEFT)的形式打开侧滑菜单后,虽然我们看到侧滑菜单界面已经铺盖在内容上了,但是单击侧滑的区域可能会触发到内容界面(非侧滑界面)
2017-01-03 11:24:23
140
原创 URLEncoder和URLDecoder
URLEncoder和URLDecoder的关系,就像是加密和解密的关系。 URLEncoder是转码,URLDecoder是解码。 中文在一些情况下是乱码,需要转码。此时需要使用URLEncoder转码,一般是转成%AB%FG%UF(这个只是例子)这样的形式。 而读取的时候需要从%AB%FG%UF这种形式解码成正常的中文。此时使用URLDecoder。
2017-01-03 11:23:44
214
原创 Android事件派发机制简析
参考:http://blog.csdn.net/yanbober/article/details/45887547 http://blog.csdn.net/yanbober/article/details/45912661Android控件的Listener事件触发顺序是先触发onTouch,其次onClick。如果控件的onTouch返回true将会阻止事件继续传递,返回false事件会继
2017-01-03 11:23:23
411
原创 Java位运算的问题
两个位数不一样的二进制数做位运算时,会补足位数少的那一个数(高位补上0),让它的位数与另外一个二进制数一样再进行运算,得到的位数一般较高的位数 如:01001011&1101等同于01001011&00001101一种特殊的情况,当一个超过4位的二进制与0xf(十六进制f)进行与运算时,得到的结果却只是4位的二进制,原因是:0xf的高位补足0后,任何数与它的高位进行与运算,得到的结果都是0,最终
2017-01-03 11:17:34
195
原创 Java中左(右)移和左(右)循环
1 >>>是循环右移,移除后最高位移到最低位; 如:b>>>4 表示循环右移4位2 <<的话表示左移,移除会丢弃,低位补0. 如:b<<2表示左移两位
2017-01-03 11:14:12
501
原创 Dialog设置对话框宽高
使用系统原生的dialog,它是有默认的宽度的,如果要限制它的宽度,直接在布局中写出是无法生效的,必须在创建dialog并且调用它的show()方法后在通过它的LayoutParams设置宽高才能生效,推荐使用Builder的方式构建对话框而不是直接new Dialog( ),通过new Dialog()的方式构建对话框后,调用它的setContentView()设置布局时会报错:requestFe
2017-01-03 11:10:44
1343
原创 android studio签名打包方式
1.使用gradlew assembleRelease命令 2.BuildVariants选择为release模式后直接run即可使用配置好的签名包打包签名 3.通过build菜单下的Generate Signed APK选择签名文件进行签名
2017-01-03 11:05:49
192
原创 git
1.常用命令执行 git checkout -b local-branchname origin/remote_branchname 就可以将远程分支映射到本地命名为local-branchname 的一分支。检出仓库:$ git clone git://github.com/jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remo
2017-01-03 11:05:07
173
原创 LayoutParams
①概述 LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信
2017-01-03 11:04:18
375
原创 RecyclerView
必须给RecyclerView设置一个setLayoutManager才能显示出来; 一般在构造时指定一个ViewHolder(通过泛型,如下),这样在生成四个方法时就会使用这个ViewHolder,避免生成方法时使用了默认的RecylerView.ViewHolder class MyAdapter extends RecyclerView.Adapter MyViewHolde
2017-01-03 11:02:52
259
原创 MVP模式简单理解
在安卓中,View对应的是Activity等视图,这些视图需要实现这个View接口。presenter中只有View和model的引用,通过调用model的相关实现方法获得数据并通过View的接口返回给Activity(因为Activity实现了View接口)。
2017-01-03 11:02:15
316
原创 第三方(ShareSDK)分享和登录遇到的一些问题
1.按照官网步骤,执行快速集成ShareSDK后,可直接测试分享和第三方登录(一般来说网页端和客户端登录都可以,新浪微博比较特别,一定要验证包名), 能直接测试的原因是ShareSDK已经帮我们申请了属于ShareSDK示例demo下各个平台的APPID和key等信息填入ShareSDK.xml文件中,这时我们使用ShareSDK去分享和登录,显示的分享来自和授权登录的应用信息是ShareSDK对应
2017-01-03 11:00:52
2550
1
原创 自定义View
自定义一个MyView继承于ViewGroup,在布局文件中引用,通过view的onMeasure()方法,可获得一些view的相关属性,如View的宽(高)度模式,宽高(单位为像素,在布局文件中给出来的),如下: int withMode = MeasureSpec.getMode(widthMeasureSpec); int withSize = MeasureSp
2017-01-03 10:57:38
186
原创 Context的getExternalFilesDir()和getExternalCacheDir()
会返回一个应用的缓存目录(没有时则新建),新建时如果手机存储空间不足,可能导致无法创建而返回空!操作IO相关类时时刻关注是否返回null。-附:* Environment.getExtemalStorageState() // 获取SDcard(手机存储)的状态* Environment.MEDIA_MOUNTED //手机装有SDCard(手机存储),并且可以进行读写* Context.get
2017-01-03 10:56:57
1273
原创 android开发小问题汇总
selector不生效的原因(主要发现TextView有这个问题):如果没有给view设置对应的监听事件,则对应的selector不会生效(如未设置点击事件则state_pressed属性不会被使用)!关于点击事件不生效的原因,如果继承于activity,在xml文件中通过onClick属性设置TextView(Button可以响应)点击事件是无效的!如果继承于AppCompatActivity,
2017-01-03 10:54:31
265
com.cyw.liuliang.apk
2017-10-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人