- 博客(64)
- 收藏
- 关注
原创 gradle快速构建一个可执行的java项目
项目结构如下 项目根目录 ++++src ++++indi.yftao ++++Main.java ++++xx.kt ++++build.gradleStep1:build.gradle配置如下:apply plugin: 'java'//设置Java源文件的位置,默认为src/mai...
2018-07-20 19:47:30 885
原创 Android——Fragment中键盘遮挡问题的解决方案
在Mainfest中设置Activity的windowSoftInputMode属性,主要有以下几种: 【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示 【C】stateHidden:用户选择activ
2017-07-14 18:39:31 13058 1
原创 Android——PullToRefresh自动刷新
现在有一个这样的需求,在Activity的onCreate函数中或者在Fragment的onCreateView函数中让PullToRefreshListView自动刷新进行网络数据的请求,PullToRefreshListView本身提供了一个setRefreshing()接口,调用该接口会自动触发下拉刷新的操作(前提是支持下拉刷新)。按照一般的操作我们直接在onCreate或者Fragment的
2016-06-30 20:34:12 5074 4
原创 Android——DrawerLayout滑动范围的设置
最近做项目的时候需要用到DrawerLayout做侧边栏,当然自己也可以通过用ViewDragHelper来实现侧边栏优点是可高度定制化,但是比较繁琐。而DrawerLayout是系统封装好的控件,用起来简单。DrawerLayout本身内部也会通过ViewDragHelper 实现的。言归正传,系统自带的DrawLayout只能实现从屏幕边缘滑出菜单,现在需求是全屏幕任何位置都能滑出。有两种方法可
2016-06-16 19:53:01 11767 4
原创 Android——IntentFilter匹配规则
我们都知道,intent分成两种:显式和隐式,显式需要制调用activity的包名和类名,而隐式是通过过滤规则来确定的。在manifest.xml文件里我们可以给需要的Activity加上过滤的匹配规则,主要有这几个方面<intent-filter> <action android:name=".."/> <!-- 可以有若干个action --> <category andro
2016-05-24 22:12:45 530
原创 Android——自定义镂空遮盖控件
刚学完ViewDragHelper和PorterDuffXferMode的我,突然想做一个这样效果的自定义控件:点击ListView的列表项,通过ViewDragHelper用动画方式上下各弹出一个控件遮盖住ListView,这两个控件在遮盖listView的过程中有一部分是镂空的。先上效果图: 首先是进行页面的布局,让自定义控件PlayLayout继承自Franlayout,在最底层放的就是li
2016-05-17 11:11:11 6580
原创 Android——动态缩放图片
最近学习自定义view控件的过程碰到需要根据控件本身的大小动态绘制图片,主要用到了以下三种方法进行图像缩放首先,先从文件资源里加载bitmapBitmap bitmpSrc=BitmapFactory.decodeResource(getResources(),R.drawable.img1);//取得图片本身宽和高int srcW=bitmapSrc.getWidth();int srcH=
2016-05-14 16:43:21 807
转载 Android——canvas学习
这篇blog介绍了canvas使用的基本情况结合自己写的小demo ,加深了印象 canvas.save();//这里要保存一次,以便于画完表盘,restore到初始状态 canvas.drawCircle(width / 2, width / 2, radius, mPaintCircle); for(int i=0;i<24;i++){ i
2016-05-13 11:08:53 319
原创 Android——通过findViewById自动类型转换
在做Android时通过findViewById时返回的是View对象,所以我们必须再进行显示类型转换将view转化为对应的类型对象,那么怎样省略这一步骤呢(假如要通过findViewByID获得大量的控件)我们可以泛型来帮助进行类型推导,比如public <T> T _(int resID){ return (T) findViewById(resID);}private Button
2016-05-11 18:38:54 1582
原创 Android——自定义滚动ViewGroup
该自定义控件对外提供getAdapter和setAdapter接口,能够设置要滚动显示的View(每个View默认显示全屏幕宽高)public class ScrollerViewGroup extends ViewGroup { private int screenHeight;//the phone screen height private int currentY;//记录当前
2016-05-11 09:21:27 2074
原创 Android——tabHost的使用注意点
1.当我们直接让Activity继承自TabActivty时:需要在layout布局文件中指定一个TabHost控件的ID在activity中使用getTabHost()得到tabhost控件对象2.当我们的activity不直接继承自TabActivity时,也不用intent填充fragment时需要通过findViewById获得tabHost控件,这时layout布局中并不指定id
2016-05-10 21:57:44 3639
原创 Android——自定义圆环View
一般使用自定义View需要重写onDraw()函数,如果需要使用wrap_content样式,则还需要重写onMeasure函数。通常我们绘制一个圆环是通过绘制两个半径不同圆心相同的颜色不一样的圆下面介绍使用canvas.drwARc()函数绘制圆环(或者圆弧)canvas.drawArc(rectF,startDegree,60,false,mPaint);该函数有四个参数 参数1:一个Rect
2016-05-10 19:18:21 1439
原创 Android——NDK开发配置遇到的问题
通常我们在含有native的类的静态块里面加载jni库static{ System.loadLibrary("HelloNDK");}相对应要修改Module下的build.gradle配置文件,指明gradle建立的.so文件名: ndk { moduleName "HelloNDK"//和上面的静态加载库中的字段要一致 ldLibs
2016-04-20 18:25:41 591
原创 Andriod——IPC进程通信JAVA层工作原理简析
众所周知,Android每个APP都运行在各自的Dalvik虚拟机里面,每个虚拟机都等同于Linux的进程,这样做的原因是为了隔离进程,保证各个不同APP的安全,比如其中一个APP挂了不会影响到其他的正在运行的APP。而这样做APP各自的进程不能够直接进行通信。所以需要借助于Binder机制(当然还有socket和Linux原始的内存共享机制实现进程通信,不过都比较麻烦)。所以在这片文章主要结合自己
2016-04-18 21:48:41 1594
原创 Linux——树莓派系统分区
主要分区的命令有两种:fdisk和parted 两种指令都需要root权限, 首先介绍fdisk命令: fdisk 可以查看当前的文件系统的使用情况fdisk -l 因为我是用SD卡装的系统所以分区是以/dev/mmcblk0开头,可以看到当前有3个实际分区(/dev/mmcblk1,2,5.linux分区有主分区,延伸分区和逻辑分区之分,只有主分区和逻辑分区是真正存储数据的所以mmcblk
2016-04-14 23:01:53 13061
原创 Linux——利用文件创建swap分区
Linux系统的Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对L
2016-04-12 21:08:53 1584
原创 Android——getPreferences()、getSharedPreferences()和getDefaultSharedPreferences()区别
SharedPreferences文件存储共享变量的文件路径位于“/data/data/应用程序包/shared_prefs/”目录下 首先从调用层次上来分: 1.getPreferences(int mode)是由Activity来调用的。 2.getSharedPreferences(String name,int mode)由Context调用。 3.getDefaultSharesP
2016-04-09 15:12:23 8045
原创 Android——adb工具的使用
Android Debug Bridge(ADB)是一个功能很强大的工具,位于Android SDK 安装目录下的paltfom-tools文件夹下面。 在win7系统下我们可以在命令行模式下使用它(但首先要确保adb.exe文件的目录已经添加到系统环境变量path中) 使用ADB工具可以完成设备和Android设备和电脑文件的相互复制,也可以安装APK应用,甚至可以切换到Android系统中执
2016-03-03 19:28:28 941
原创 Android——通过Uri获取文件的路径
当我们在APP中打开一个文件管理器选择一个文件时,通常是通过在onActivityResult方法中获取到选择文件的Uri,而有时候我们想要得到的是文件路径
2016-01-16 11:54:11 1431
原创 Android——Http分段请求数据
在进行下载网络文件时,想要进行分段下载,所以需要开启多个线程获取同一网络文件的各段数据,只需要在请求的时候加上请求参数: range:bytes=begin-end HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET");
2016-01-16 11:43:17 1129
原创 Android——自定义自适应高度的GridView
在使用Gridiew的时候,如果设定height=”wrap_content”,使用adapter往里面添加View时,有时出现显示不全,所以需要定义一个自适应高度的GridView
2016-01-08 11:04:14 8976 1
原创 Android——universal-imageloader开源库的使用
该开源库是一个用于图像加载处理的项目,项目的下载地址为: https://github.com/nostra13/Android-Universal-Image-Loader该库的特征有:多线程图片加载(异步或者同步)高度定制图片加载的相关配置(例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置)支持图片的内存缓存,文件系统缓存或者SD卡缓存可以监听加载的过
2016-01-02 15:05:38 702
原创 Android——自动填写短信验证码
在许多的APP中会涉及到获取短信验证码的选项,如果支持验证码自动填写会帮用户节省一部分操作 下面介绍一种简单的接到短信自动获取验证码填写到验证码输入框的方法分下面几个步骤主要是利用观察者模式,向短信服务(Sms),注册一个ContentObserver 创建一个ContentObserver//可以写一个自定义的类继承自ContentObserver接口,也可以实现一个匿名ContentObse
2015-12-15 20:56:46 828
原创 Android——蓝牙通信
Android手表将采集到的数据实时的发送到手机上,选择的数据传递方式为蓝牙通信。由于暂时没有手表,所以在两台手机上进行实验
2015-12-07 15:39:17 704
原创 Linux——安装AndroidStudio错误
安装android studio 选择本地sdk时出现: Unable to run mksdcard SDK tool.装的linux版本是CentOS 7 64位版本通过各种资料得知是缺少支持库,在终端里面输入yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 li
2015-12-03 11:09:29 658
原创 Linux——安装Android Studio出现的一些问题
首先我在Android Studio 中文社区上面下载了最新的android studio for linux rpm格式,然后安装到 /opt下面由于翻不了墙的原因,不能自动安装SDK。于是手动安装SDK,然后在Andriod studio 的 SDK 设置里面选择本地的SDK 遇到最大的问题是gradle编译老是出错,于是安装gradle 1.在http://www.gradle.org/do
2015-12-02 15:02:58 959
原创 Android——SDK的安装
在使用Android的SDK Manager进行SDK安装时,由于Google网站不能访问的原因导致获取不到资源 可以通过下面这个网站获取到SDK Android SDK在线更新镜像服务器以下是该网站提供的镜像地址以及相关的使用方法 提供的地址有: 中国科学院开源协会镜像站地址:IPV4/IPV6: http://mirrors.opencas.cn 端口:80IPV4/IPV6: http
2015-11-29 14:41:11 443
原创 Android——动态设置TextView CompoundDrawable的大小
现在有一个需求:想要为TextView 设置drawableLeft能够跟随TextView的高度自动缩放。
2015-11-26 15:26:54 2909
原创 Android——控制ListView滚动
在做一个模拟聊天的项目时,将聊天内容呈现在ListView中,想要达到ListView随着item的插入自动滚动,以及在页面下面有一个输入文本,点击输入文本时弹出一个软键盘,希望ListView能在弹出软键盘的自动滚动合适的距离
2015-11-25 18:43:15 1340
原创 Android——ListView的简单优化
在重写ListView的自定义Adapter时,之前一般都是通过重写getView()方法返回一个View,在里面一般是先通过LayoutInflater方法获取view,然后在获取View里面的控件,并为这些控件设置属性。这样做在数据很十分多的情况下,进行listView的上下拉动时会重新加载那些已经创建过得view,很浪费资源导致卡顿。 通过一种简单的方法可以有效的解决这个问题
2015-11-21 15:20:35 407
原创 Android——自定义ArrayAdapter
在取得网页端传回的JSON数据并封装成对象数据后,想要把对象数据的信息显示在一个ListView中,在这里使用自定义ArrayAdapter给ListView添加adapter
2015-11-20 20:44:27 1078
原创 Android——使用Handle和Message更新UI控件
最近在写一个使用Android端访问PCweb服务端的测试应用,需要在进行网络通信,而android网络通信需要异步执行,一开始是直接用AsyncTask的方法在MainActivity中写代码,一切正常,通过AsyncTask 的onPostExecute方法进行界面更新,但为了代码的可复用,采用将网络通信放到另外一个HttpUtils.java类中作为静态方法调用。此时出了一些问题: 1.不知
2015-11-20 19:20:34 5863 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人