
Android
勇敢地追
这个作者很懒,什么都没留下…
展开
-
CountDownLatch介绍
在项目中,我们通常会执行一些耗时操作,有的时候是同时执行若干个,然后执行完了还要等结果。通常我们会怎么做呢?Handler,或者runOnUIThread。但是有没有别的选择了呢?有的,就是CountDownLatch先来看个例子public class MainActivity extends Activity { private ArrayList<Integer> ...原创 2018-12-02 19:53:30 · 352 阅读 · 0 评论 -
PinnedSectionListView详细介绍(android开源项目)
我在之前的博客http://blog.youkuaiyun.com/lxj1137800599/article/details/51752970 介绍过PinnedSectionListView。但是对于PinnedSectionListView.java 这个文件没有细讲。由于研究源码也是程序猿的一种能力,所以我专门研究了这个java文件。 现在我已经重新输入了adapter中的数据。界面如下: list原创 2016-07-09 11:50:38 · 910 阅读 · 0 评论 -
android-pdf阅读器(Android开源项目)
这只是我从github上面下载下来改动一下而已。毕竟github上面是studio运行的,而我用的是eclipse 我的代码地址:http://download.youkuaiyun.com/detail/lxj1137800599/9551728解压出来有两个,先说明第一个PDFViewerDemo 它是通过这个改过来的(https://github.com/JoanZapata/android-pdfv原创 2016-06-16 18:25:15 · 12413 阅读 · 20 评论 -
Android从ftp服务器获取文件
window搭建ftp服务器的步骤在这里,亲测可行: http://blog.sina.com.cn/s/blog_3f7e47f20100haur.html 主要留意一下绑定的ip地址,以后要用到要想从ftp服务器获取文件还要用到一个ftp4j的jar包。官网:http://www.sauronsoftware.it/projects/ftp4j/。可以把它先下载下来再参考/doc/manua原创 2016-06-16 18:15:28 · 8237 阅读 · 5 评论 -
在Android中如何通过点击edittext之外的部分使软键盘隐藏
/** * 实现的功能就是“点击edittext之外的部分使软键盘隐藏”. * 用法HideKeyBoard.setupUI(**, **) * 第一个参数就是findViewById(R.id.root_layout(其中root_layout为我们的根布局id) * 第二个参数就是activity的名字 */public class HideKeyBoard { public转载 2016-07-14 09:52:02 · 524 阅读 · 0 评论 -
Zxing二维码扫描(Android开源库)
最近研究了一下二维码扫描,github地址(https://github.com/zxing/zxing)。本来想做个扫描相册内的二维码的,结果没做成。我先分析一下整个开源项目的流程 这里我要重点接收一下restartPreviewAndDecode这个函数/** * A single preview frame will be returned to the handler supplied.原创 2016-07-02 17:05:21 · 2614 阅读 · 0 评论 -
actionbar(Android开源项目)
今天又学习了github上的一个开源库,地址:https://github.com/JakeWharton/ActionBarSherlock 我把其中几个我认为比较常用的功能选取出来分享给大家 另外还截了图供大家比对了看,并没有什么难度 /** * getActionBar改变Home部分,menu.add改变Menu Item */ // Menu对应导原创 2016-06-13 17:26:08 · 863 阅读 · 0 评论 -
java流介绍
流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的原创 2016-06-07 11:13:22 · 488 阅读 · 0 评论 -
Universal-Image-Loader(Android开源项目)
最近在学习Universal-Image-Loader源码(https://github.com/nostra13/Android-Universal-Image-Loader)。它是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。支持多线程图片加载提供丰富的细节配置,比如线程池大小,HTPP请求项,内存和磁盘缓存,图片显示时的参数配置等等;提供双缓存转载 2016-06-28 15:08:52 · 353 阅读 · 0 评论 -
加载gif(Android开源项目)
这是从网上下载下来并且重新运行通过了的代码。 目录结构如下: 使用时只需要把pl.droidsonroids.gif包和libs文件夹拷到相对应的位置,然后调用如下代码加载就行public class MainActivity extends Activity { /** 或者xml文件里面android:src="@drawable/pikachu" */ private原创 2016-06-12 11:32:11 · 737 阅读 · 1 评论 -
下拉刷新(Android开源项目)
github上有个demo,android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新。地址在这里: https://github.com/chrisbanes/Android-PullToRefresh 它里面每种方法基本遵循这种规律:1.建立监听器(回调接口)2.在回调的时候实现new GetDataTask().execute()方法现在我把Listvi转载 2016-06-12 09:43:54 · 649 阅读 · 1 评论 -
ListView详解
1.使用adapter最简单的是ArrayAdapter,处理的是字符串ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,strs);当然,也可以自定义BaseAdapterpublic class BaseAdapterDemo ex原创 2016-03-29 16:30:24 · 717 阅读 · 1 评论 -
个人简历工作地点的选择(Android开源项目)
当我们在找工作时,肯定要注册简历。简历在创建的时候会有工作地点的选择,如下图: 当往上拉时,”热门城市”会取代”当前城市”并且不消失。当点击”上海”时,还有更精确地地点可以选择 我在github上找到了相关的demo(https://github.com/beworker/pinned-section-listview),并且对其进行了实现。首先定义一个实体类/** * Listvie原创 2016-06-24 15:11:38 · 1598 阅读 · 0 评论 -
新浪微博SDKdemo
最近几天做了一下新浪微博的sdkdemo。其实也就是把管网上给的demo下下来运行一下。顺便看了一些bug。 首先要了解Oauth2.0授权认证,和SSO 登录功能。所谓OAuth(即Open Authorization,开放授权),它是为用户资源授权提供了一种安全简单的标准,也就是说用户在访问第三方web或应用的时候,第三方不会知道用户的信息(登录密码等),现在基本都支持OAuth2.0版本了。原创 2016-05-31 13:45:47 · 3325 阅读 · 0 评论 -
一个adapter实现多个itemView
要想实现这个功能,有两个函数比较重要getItemViewType和getViewTypeCount 我先说明一下我的这个demo的功能。一共有两个按钮,一个用来添加字符串,一个用来添加图像。 先给出布局main.xml(就一个listview和两个button)<LinearLayout xmlns:android="http://schemas.android.com/apk/res/and原创 2016-05-03 18:49:46 · 1522 阅读 · 0 评论 -
Android设置闹钟
从API 19以后,setRepeating不再准确。因此,采用了如下方法:setWindow(int, long, long, PendingIntent)setExact(int, long, PendingIntent)从上面的两个方法我们可以看出,没有了repeat,就是设置了闹钟只能响一次了,而且这两种方法都可以设置精确的,第一个相对于第二种方法来说,应该是比较省电的。因为setWind原创 2016-05-26 16:30:27 · 544 阅读 · 0 评论 -
百度地图在Android中的使用
有关百度地图的使用,(http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download)这个链接说明的很详细了,包括环境的搭建,接下来我主要说明我的demo的几个功能。最后给出源码。1.引入百度地图// 在使用SDK各组件之前初始化context信息,传入ApplicationContext// 注意该方法要再setConte原创 2016-05-02 16:56:19 · 617 阅读 · 0 评论 -
一键分享到新浪微博
参考地址在这里总体来说照着参考文档很容易做出来下面是我的main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" a原创 2016-04-18 10:31:23 · 1260 阅读 · 1 评论 -
application和sharedpreference的区别
在android程序中,我们经常用intent来传递数据,但是intent传递的数据类型太少了。因此我们经常通过以下两种方法来传递数据。一.sharedpreference(用法网上有,这里不再说明)二.application Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象原创 2016-07-27 19:24:32 · 542 阅读 · 0 评论 -
Android px、dp、sp之间相互转换
dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 dp也就是dip,这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度转载 2016-08-09 09:40:45 · 474 阅读 · 0 评论 -
Android MVP 模式介绍与实战
1.什么是MVP?Model: 业务逻辑和实体模型View:用户交互和视图显示,在android中对应activityPresenter: 负责完成View于Model间的逻辑和交互2.为什么要用MVP?通常我们都用MVC。但是原有的MVC模式有一些短板。比如在android开发中,activity充当着MVC中Controller的角色,但是在实际开发中还需要处理view的逻辑(既担任V,又担原创 2016-11-03 16:36:03 · 636 阅读 · 0 评论 -
编译时注解(三)Arouter源码讲解
项目中我们有时需要跨模块startActivity,但是这样需要配置menifest,不方便。这时就需要阿里的一个路由框架ArouterArouter的使用就不再多说了。这篇文章主要讲解他的源码1.初始化ARouter.init( this );public static void init(Application application) { if (!hasInit) ...原创 2018-12-02 14:08:54 · 532 阅读 · 0 评论 -
编译时注解(二)JavaPoet的使用
上一篇文章提到AbstractProcessor中生成java类,可以使用JavaPoet开源库进行编写。但是有个问题,addModifier提示无法找到Modifier,其实只要把compile project(’:libprocess’)改成annotationProcessor project(’:libprocess’)就可以了。但是这么一来定义的MethodProcessor就...转载 2018-11-18 13:53:48 · 425 阅读 · 1 评论 -
编译时注解(一)AbstractProcessor实战
Java中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的。我们并不讨论那些在运行时(Runtime)通过反射机制运行处理的注解,而是讨论在编译时(Compile time)处理的注解。下面便入手学习下Java注解处理器。简单实践:1.创建注解@Target({ElementType.TYPE})@Retention(Retent...原创 2018-11-04 14:14:26 · 1861 阅读 · 0 评论 -
Bitmap详解
1.bitmap占多少内存getByteCount()方法是在API12加入的,代表存储Bitmap的色素需要的最少内存。API19开始getAllocationByteCount()方法代替了getByteCount()。 这是API26的 public final int getByteCount() { if (mRecycled) { ...原创 2018-07-15 16:03:26 · 1056 阅读 · 0 评论 -
嵌套滑动机制详解
嵌套滑动机制主要涉及两个接口public interface NestedScrollingChild { void setNestedScrollingEnabled(boolean var1); boolean isNestedScrollingEnabled(); boolean startNestedScroll(int var1);//开启嵌套滚动流程原创 2018-01-24 17:09:21 · 948 阅读 · 1 评论 -
嵌套滑动机制探究
https://www.cnblogs.com/wjtaigwh/p/6398562.html https://segmentfault.com/a/1190000002873657按照上面的例子打了log滑动开始E/child: startNestedScrollE/parent: onStartNestedScroll----------------------决定是否要配合其进行嵌套滚动转载 2017-12-27 17:27:13 · 341 阅读 · 0 评论 -
android全局替换字体最新方案
github上有一个Calligraphy库,这个库可以用来替换字体。核心代码就是CalligraphyLayoutInflater,它继承默认LayoutInflater并且取代默认inflater来渲染整个图层。当你设置好了字体以后自然就会用新字体来渲染文字。但问题是,现在这个库只能实现一开始加载的时候渲染文字,那如果我正在一个Activity里面操作,里面有viewpager,fragment原创 2017-09-26 15:23:26 · 2587 阅读 · 0 评论 -
使用TabLayout遇到的几个坑
1.setupWithViewPager以后之前已经设置好的tab的视图消失了看源码: setupWithViewPager里面有这段 final PagerAdapter adapter = viewPager.getAdapter(); if (adapter != null) { // Now we'll popu原创 2017-09-06 14:59:52 · 3299 阅读 · 1 评论 -
强制获取焦点
private void getFocus(int index) { mEditTexts[index].setFocusable(true);//设置输入框可聚集 mEditTexts[index].setFocusableInTouchMode(true);//设置触摸聚焦 mEditTexts[index].requestFocus();//请求原创 2017-09-04 16:17:20 · 684 阅读 · 0 评论 -
Rxjava2学习
1.去重Flowable.just(1, 1, 1, 2, 2, 3, 4, 5) .distinct() .subscribe(new Consumer<Integer>() { @Override public void accept(Integer i原创 2017-08-18 16:14:11 · 327 阅读 · 0 评论 -
用TypedArray给自定义控件配置属性
(仅仅只是整理,以后用到直接来翻就行了) 比如有这样一个自定义控件(layout文件就不看了)public class TitleView extends LinearLayout { public ImageView themeTitleLeft; private TextView themeTitle; private ImageView themeTitleRight原创 2017-05-06 09:43:47 · 414 阅读 · 0 评论 -
listview过滤item(基于ArrayAdapter和BaseAdapter)
1.基于ArrayAdapter的过滤ArrayAdapter有个专门的函数用于过滤getFilter,所以只需要运用这个函数就行 private String[] item = { "1", "2", "3", "4", "5" }; editText1 = (EditText) findViewById(R.id.editText1); listVie原创 2016-09-30 18:30:31 · 2755 阅读 · 0 评论 -
AIDL示例
Android 接口定义语言 AIDL(Android Interface Definition Language)与其他已有的 IDL 很类似。 客户端和服务端可以通过由它定义的编程接口来达成共识,以便通过进程间通讯(IPC)完成相互通讯。 在 Android 系统中,通常一个进程不允许直接访问另一个进程的内存。 因此为了能够实现对话,进程需要把对象分解为操作系统可以识别的原生数据,在跨越进程边界转载 2016-03-28 16:08:56 · 780 阅读 · 1 评论 -
OnGestureListener探索
最近要用到手势检测,所以重新温习了一下OnGestureListener先看测试代码public class MyView extends View implements OnGestureListener { private GestureDetector gestureDetector; public MyView(Context context, AttributeSet att原创 2016-10-20 16:29:52 · 403 阅读 · 0 评论 -
android多屏适配
现在通用的多屏适配有如下三种1.match_parent2.weight3.多个文件夹(small,normal,large,and extra large),然后分别给出(计算)控件大小第一个和第二个比较好理解,但是应用范围比较窄.比如我需要一个长宽均为屏幕一半的button并且要在屏幕正中间.用match_parent肯定不行,用weight可以倒是可以,但是不觉得还要多用好几个控件把空白地原创 2016-11-09 11:17:15 · 1627 阅读 · 0 评论 -
getIdentifier获取资源id
一共有两种 Log.e("drawable的id", R.drawable.ic_launcher + ""); // 包名 + : + 资源文件夹名 + / +资源名 id = getResources().getIdentifier( "com.example.androidtest:drawable/ic_launch原创 2016-10-19 13:49:00 · 1067 阅读 · 0 评论 -
Java反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所具有的成员变量和方法; 在运行时调用任意一个对象的方法;原创 2016-10-17 13:34:30 · 422 阅读 · 0 评论 -
自制的完备的android开发环境
这是我自制的adt。是eclipse+Genymotion+Tomcat+DynamicProject的总和版 地址在:http://pan.baidu.com/s/1qYHzcPe说明:genymotion-2.6.0-vbox.exe是genymotion压缩包,安装后会有三个图标。先启动virtualbox,然后启动GenyMotion。在GenyMotion界面上选择settings->a原创 2016-04-16 12:53:29 · 435 阅读 · 0 评论 -
Android获取超级用户权限删除文件
获取超级用户权限的windows代码如下: 打开命令提示符,进入sdk\platform-tools文件夹,找到adb.exe。然后输入如下代码:adb.exe shell su mount -orw,remount rootfs / chmod 777 /mnt/shell这样就可以删除/mnt/shell文件夹下的文件。在Android中,上面的代码可以用如下代码替换/**原创 2016-05-24 09:30:39 · 1883 阅读 · 0 评论