- 博客(30)
- 资源 (7)
- 收藏
- 关注
原创 小米,红米手机android 6.0以下 权限管理
红米小米等手机在android6.0以下加了权限管理,用android自身带的checkpermisson方法时,永远返回true,因此在获取权限为true时,加入判断录音权限: Log.e("MainActivity", "onPermissionGranted"); if (PermissionHelper.isAudioEnable()) { ...
2018-06-06 16:42:33 1410 1
原创 新版codota Android Studio常用插件
新版Android Studio中没有codota ,新的步骤:到官网https://www.codota.com/下载新版到客户端并安装,之后客户端会主动查找系统中的支持的IDE,并安装插件,搞定
2017-12-13 15:49:25 595
原创 AndroidKnife/RxBus中的小问题
注意点相同的tag,相同的入参,可以用于@Subcribe注解的多个方法中相同的tag,相同的入参,不可以用于@Produce注解的多个方法中Bus类中没有判断一个对象是否已注册的方法public boolean isRegister(Object object) { boolean isRegister = false; if (object == null) {
2016-12-21 18:03:58 928
原创 AndroidKnife/RxBus详细说明
RxBus详细介绍RxBus类public class RxBus {/** * Instance of {@link Bus} */private static Bus sBus;/**R * Get the instance of {@link Bus} * * @return */public static synchronized Bus get() { if (s
2016-12-21 18:01:32 1522
原创 GitHub上AndroidKnife/RxBus用法
RxBus库简介GitHub地址 https://github.com/AndroidKnife/RxBus目前的版本是1.0.5发送事件方法:RxBus.get().post(Constants.EventType.TAG_STORY, this);接收事件方法:注册RxBus.get().register(this)接收方法@Subscribe( thread = Ev
2016-12-21 17:54:51 2058
原创 RxBus基本实现
简单的实现方式来源的列子:(http://www.jianshu.com/p/ca090f6e2fe2)看代码:public class RxBus {private static volatile RxBus defaultInstance;private final Subject<Object, Object> bus;// PublishSubject只会把在订阅发生的时间点之后来自
2016-12-21 17:49:59 432
原创 Rxjava基本使用
RxjavaRxjava配置compile 'io.reactivex:rxandroid:1.2.1'compile 'io.reactivex:rxjava:1.1.6'使用基本流程Observable创建 Observer创建 订阅Observable的创建create操作符(创建observable的基本方法)// 参数为OnSubscribe类型
2016-08-13 23:30:05 388
转载 Android界面性能调优手册
注:本文是我在 Android 界面性能调优知识的系统性总结,纯属个人碎碎念。秉持开源分享的原则发布本文出来,各位看官有需则取。https://androidtest.org/android-graphics-performance-pattens/追加:本文发布 24 小时,已被伯乐在线、开发者头条、推酷、图灵社区以及一些小刊小网转载,并在简书上收获 40 几个喜欢。并打破 ANDR
2016-07-26 21:14:16 832
原创 Android相机(摄像头)圆形预览窗口,圆形SurfaceView
圆形相机预览窗口思路:自定义SurfaceView,重写其draw(Canvas canvas)方法,裁剪画布 @Override public void draw(Canvas canvas) { Log.e("onDraw", "draw: test"); Path path = new Path(); //设置裁剪的圆心,半径 path.addCircle(heig
2016-03-24 15:55:01 16412 1
转载 CopyOnWriteArrayList详解
原文地址:点击打开链接 CopyOnWriteArrayList是ArrayList 的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。 这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照
2016-02-24 11:43:52 415
原创 Android Handler传递的对象,Message中的Runnable回调
问题:Handler中传递的是什么, post(Runnable r) 和sendMessage(Message msg) 的区别分析:Looper和MessageQueue一一对应,创建一个Looper的同时,会创建一个MessageQueue。而Handler与它们的关系,只是简单的聚集关系,即Handler里会引用当前线程里的特定Looper和MessageQueue。因此,Handle
2016-02-15 14:43:45 968
原创 Android中事件通知,类似于service+broadcast
需求:Class A 中做数据操作,Class B,C,D....很多类中要知道此事件并做相关操作分析: 以前做这类操作,都是用service+broadcast ,其实还有一种就是观察者模式,具体代码可以网上很多
2016-02-15 12:19:12 350
转载 Android:adb shell am命令行发送Activity/Service/Broadcast
0.adb shell am命名行参数[java] view plaincopyF:\>adb shell # am am usage: am [subcommand] [options] start an Activity: am start [-D] [-W] -D: enable debugging -W:
2014-07-11 16:55:22 1058
原创 android 解决内存溢出 out of memory 增大内存空间
Android系统分配给每个应用的内存空间是一定的,不同的机型分配给应用的内存空间不一样,机器的内存限制,在/system/build.prop文件中可以看到。在最近做的项目中,某一块功能需要的内存空间比较大,容易造成out of memory(当然是在已经尽量做好内存的回收和复用的情况下),采取两种方法解决这个问题:1.不增加应用主进程内存空间 把需要大内存
2014-06-18 17:21:48 3055
原创 android 系统 转换 单位
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,pxValue, context.getResources().getDisplayMetrics());
2014-06-12 11:12:54 385
原创 android应用程中添加悬浮框
先说明下项目需求:在项目中添加一个浮动按钮,始终出现在屏幕上方,可以获得点击事件,当程序启动时,悬浮框出现,直到程序退出,悬浮框消失。思路:service是android中的后台组件,可以理解为一个没有窗口的activity,可以一直运行在整个应用程序中,因此,在service中添加窗口,并在程序启动时,启动service,程序结束时,关闭service,就可以满足项目需求实现方式:ser
2013-11-05 11:32:21 776
原创 android自定义弹出框popupwindow方式实现
前几篇介绍了自定义activity,dialog方式实现弹出框,这篇以popupwindow方式实现效果 LayoutInflater inflater = LayoutInflater.from(this); // 引入窗口配置文件 View view = inflater.inflate(R.layout.main2, null);
2013-11-05 11:13:31 1175
原创 android自定义dialog实现下拉弹出框效果
上一篇以activity方式实现了弹出框效果,这一篇就以dialog方式实现直接看布局代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_con
2013-11-05 10:58:44 4782
原创 android自定义弹出框实现方式(dialog)
题外话:项目已经做完,对项目中的一些问题进行总结,这篇文章对项目中遇到的弹出框问题进行总结,需要说明的是,文章中的代码片段很多是从项目中直接截取的,然后稍加修改,并不是很规范,只做说明问题用。在这个项目中,基本上用到了所有android中可以实现弹出框的方法:activity,window,popupwindow,dialog如下图中的下拉列表,我将用四种不同的实现方式介绍,并且分别添加了
2013-11-05 10:41:29 2586
原创 解决安卓SDK无法下载Package的问题
1.打开Windows资源管理器(我的电脑,win7下即计算机),打开“C:\Windows\System32\drivers\etc”文件夹,注意System32下是drivers文件夹,不是driver文件夹,如图所示。2.接下来,便是关键的一个步骤,这一步就确定了是否能够成功下载安卓系统包的情况。如图,在新的窗体中勾选以Force开头的复选框按钮,然后鼠标点击“Close”按钮关
2013-11-04 22:27:23 1451
原创 Android Bitmap 内存溢出解决方法
在上一篇中,提到从数据库中取出图片数据,构造Bitmap对象时,可能会造成内存溢出,现在提出解决方法 public static Bitmap bitmpCulate(byte[] data){ BitmapFactory.Options opts = new BitmapFactory.Options(); // opts.inJustDecodeBounds = true;
2013-06-14 16:31:30 751
原创 Android 保存图片到Sqlite 数据库并从数据库中获得图片
SQlite数据库中可以直接保存图片,有两点说明:1.建数据库表时,保存图片的表字段类型为BLOB。2.图片类型为Bitmap保存到数据库中的代码如下: final ByteArrayOutputStream os = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG,
2013-06-14 16:17:40 5440
原创 Android Textview加中线
要实现图片中效果,插入如下代码: holder.mTvOriginalP = (TextView) convertView.findViewById(R.id.tv_fpi_originalprice); holder.mTvOriginalP.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);如果在listview的item中想要显
2013-06-14 15:45:57 2665 1
原创 Android中 得到ImageView中显示的图片
在项目中遇到这样一个问题,listview中异步加载图片,之后需要得到某一个item中的image,查看帮助文档,找到一个方法getDrawingCache(),用于得到ImageView中的图片,返回类型为Bitmap。直接调用这个方法会返回一个null,在此方法前要调用setDrawingCacheEnabled(true),之后要调用setDrawingCacheEnabled(false)
2013-06-14 15:27:01 1806
原创 android动态加载(添加)布局
最近项目中需要动态的添加布局,查了网上的一些方法,自己总结了一下,android中动态加载布局主要是找准父布局,注意父布局的样式,是linearlayout或者是其他。代码如下:父布局,其中定义了两个layout,一个是linearlayout,另一个是RelativeLayout,目的是更清楚的了解父布局不同(实际只用一个),在实现动态加载布局是所用的包不同(后面会更清楚)<Lin
2013-06-09 18:17:28 3229
原创 android sqlite insert数据出现异常
android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed 异常原因:数据库表中已经存在一条记录与当前要插入的数据主键相同,也就是说要插入数据的主键在数据库表中已经存在
2013-06-07 16:10:11 842
原创 java中循环计时
最近android项目中需要一个循环计时器,在网上找了很多例子,但基本上没有真正实现每隔一段时间后 从0开始计时,经过不断尝试,终于实现每隔一段时间从0开始计时先设置一个全局的Timer实例,这个实例作为唯一的计时器,代码如下:private void runTime(){if (timer != null) {timer.cancel();}timer = new T
2013-06-07 15:47:38 1429
更改TimePicker和DatePicker样式
2014-05-06
仿IOS滑动选择PickerDialog
2014-03-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人