Android基础
文章平均质量分 65
学习中呢
一个本科小生的匍匐前进之路
展开
-
Android6.0的权限机制
安卓6.0之后权限申请机制有了改变,在6.0之前,我的的权限申请只要在Manifest文件中用uses-permission写出我们需要的权限就可以了,但是6.0之后我们不仅要在Manifest中声明要使用的权限,还要在使用这些权限的时候征得用户同意,也就是会有弹窗提示我们要使用某某权限,弹窗并不是主动弹出的,是我们动态请求(requestPermission)权限弹出的,如果我们不申请直接使用在...原创 2018-04-05 11:20:10 · 185 阅读 · 0 评论 -
Path
Path工具类:用来记录线条的轨迹路径。 canvas.draw(path,paint); 贝塞尔曲线 手机充电等等效果 现实生活当中:任何的曲线和曲面都可以用贝塞尔公式来解决。比如:iPhone 2.5D屏幕曲面;奥迪A9流线型; Path工具类 Path path = new Path(); //二阶贝塞尔 path.quadTo(x1,y1,x2,y2); //三阶贝塞尔原创 2017-08-28 15:04:39 · 666 阅读 · 0 评论 -
RecyclerView Item 布局宽高无效问题探究
前言这个问题很早之前就碰到过,后来通过google找到了解决办法,也就没有去管它了,直到最近有朋友问到这个问题,感觉很熟悉却又说不出具体原因,因此,就想通过源码分析一下。顺便做个总结,避免以后出现类似的问题。问题复现为什么发现了这个问题呢?是当时要写一个列表,列表本来很简单,一行显示一个文本,实现起来也很容易,一个RecyclerView就搞定。Activity以及转载 2017-08-23 15:20:21 · 1854 阅读 · 0 评论 -
Behavior
behavior能实现viewgroup中各个view事件的相互监听。已经实现的behavior有CoordinatorLayout.Behavior/FloatingActionButton.Behavior。 继承CoordinatorLayout.Behavior可以帮助我们实现CoordinatorLayout中各子view的相互监听,那么相应的住布局也要为CoordinatorLayou原创 2017-09-05 13:12:36 · 439 阅读 · 0 评论 -
eclipse中几个库目录的解释
ADT 在project里面删除了 Android Private Libraries 之后怎么重新添加进去? 右键点击相关project目录,点击Android Tools -> Fix Project Properties 即可。当前工程的libs下的v4jar包与所包含的library工程的libs下的v4jar包会重复。而这个时候当前工程是不会将libs下面的任何jar包放到自动生成的An原创 2017-09-05 12:25:44 · 449 阅读 · 0 评论 -
如何给Android工程的libs目录下的jar包附加源码
下面有一个fastjson添加源码的例子一.在Eclipse新建Android工程,里面只有一个MainActivity,在点击按钮的时候,我们想调用fastjson把一个Person对象转化成json字符串。 二.但是,如果想查看libs目录下面的fastjson-1.1.21.jar的源码是看不了的。 三.并且也没有附加源码的按钮。如果在fastjson-1.1.21.jar上点击右转载 2017-09-05 12:19:07 · 573 阅读 · 0 评论 -
Android加载大分辨率图片到手机内存中的实例方法
如何加载一一个Bitmap,Bitmap 在Android 中指的是一张图片,可以是png格式也可以是jpg 等其他常见的图片格式。那么如何加载 个图片呢? BitmapFactory类提供了四类方法: decodeFile,decodeResource.decodeStream 和decodeByteAmay,分别用于支持从文件系统、资源、输入流以及字节数组中加载出- 一个 Bitmap对转载 2017-09-05 11:28:42 · 548 阅读 · 0 评论 -
ViewDragHelper讲解
帮我们实现各种类型的复杂手势操作。其实例通过静态工厂创建 ViewDragHelper一般用在一个自定义ViewGroup的内部 初始化操作 private ViewDragHelper mDrragHelper; public SlideViewGroup(@NonNull Context context) { this(context,null); }原创 2017-09-04 18:48:21 · 278 阅读 · 1 评论 -
取消EditText自动聚焦弹出输入框
在EditText的父类加上如下代码android:focusable="true"android:focusableInTouchMode="true"原创 2017-08-14 18:19:53 · 393 阅读 · 0 评论 -
Android Bitmap压缩图像的正确方法(compress的误区)
这两天在做的一个app需要从相册里面载入图片,踩了几个坑,这里Mark一下。现在的相机基本都是800W+像素,差一点的手机1M多,好点的手机拍出来接近3M,如果直接载入图片,那非常容易造成oom,尤其是在差的手机上面。因此就需要对图像进行压缩处理。先是在百度上搜了一把,比较多的解决方案都是使用Bitmap.compress()这个方法,那我也就跟着用了咯,使用形式如下:转载 2017-08-19 17:01:09 · 29283 阅读 · 2 评论 -
库项目引入
库项目不仅具有jar包的优势,还具有很多jar包没有的优势项目和库项目需要在同一个盘符下,Eclipse引入库项目项目右键点击properties,点击下方的add引入库项目原创 2017-08-04 17:12:31 · 317 阅读 · 0 评论 -
Canvas
Canvas画布的正确理解 往常我理解的是我们画的东西就存在一张画布上,那么我们rotate以后为什么原来画上的东西还在原位置显示上。原来当Canvas执行drawXXX的时候就会新建一个画布图层,类似于我们photoshop中的图层概念。 当我们旋转后,新建一个图层会沿用旋转后的坐标介绍一些不易理解的方法 canvas.drawLines(pts,offset,count,paint原创 2017-08-28 14:07:07 · 427 阅读 · 0 评论 -
PathMeasure
顾名思义,PathMeasure是一个用来测量Path的类,主要有以下方法: 构造方法 方法名 释义 PathMeasure() 创建一个空的PathMeasure PathMeasure(Path path, boolean forceClosed) 创建 PathMeasure 并关联一个指定的Path(Path需要已经创建完成)。公共方法 返回值 方法名原创 2017-08-28 20:26:32 · 279 阅读 · 0 评论 -
Android Java层的同步机制
java语言和c/c++语言不一样,java语言提供了同步关键字synchronized来支持线程间的同步操作。同步关键字synchronizedsynchronized关键字最常见的用法是保护一段代码,如下所示:(锁对象)class Foo implements Runnable{private String mLock; public void lockedMethod(){原创 2018-04-01 12:08:26 · 163 阅读 · 0 评论 -
AndroidStudio使用java1.8新特性需要的配置
apply plugin: 'com.android.application'android { compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId "me.circle.com.circle" minSdkVersion 14原创 2018-01-17 19:31:42 · 481 阅读 · 0 评论 -
ListView源码解析
首先说一下我们刷新数据所使用的代码为**adapter.notifyDataSetChanged()**notifyDataSetChanged是BaseAdapter中的方法其实这其中就运用了观察者模式,ListView的数据发生变化,说明ListView为观察者,Adapter为被观察者。 观察者模式中被观察者一定保留有观察者的事件,观察者必须注册在被观察者中 首先看setAdapter()转载 2017-12-18 12:05:36 · 327 阅读 · 0 评论 -
Android ViewPager+Fragment切换显示不出的问题
今天遇到一个问题,之前也有遇到过,但是没有做笔记,时间一久也就忘了,这次项目又遇到了这个问题,却没有想起之前的解决方法,所以把他写到博客记录一下,以便不再犯同样的错误,android基础学得不是很扎实,问题很简单,不要见怪啊。好了,废话少说,下面说正题。我们在使用ViewPager+Fragment做切换的时候,可能我们在编写数据适配器的时候会这样写 class MyFragmentPage转载 2017-11-26 21:45:53 · 701 阅读 · 0 评论 -
Android加载本地网页
1.Android项目如何创建assets文件夹直接上图点击finish即可然后在该文件夹下面可以创建常规的js、css、img目录。2.加载本地网页代码在assets文件夹根目录下面有index.html测试文件,那么url应该这样写:[java] view plain cop转载 2017-11-26 21:20:47 · 4921 阅读 · 0 评论 -
Android面试:主线程中的Looper.loop()一直无限循环为什么不会造成ANR?(转)
引子:正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常。造成ANR的原因一般有两种: 当前的事件没有机会得到处理(即主线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了) 当前的事件正在处理,但没有及时完成12345为了避免ANR异常,android使用了H转载 2017-11-18 12:33:51 · 769 阅读 · 0 评论 -
转场动画
屏幕左边代表-100%p,右边代表100%p 在res文件夹下新建anim文件,在anim文件夹下书写动画<!--anim_left_in--><translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="-100%p原创 2017-10-23 23:41:45 · 322 阅读 · 0 评论 -
cliptopadding和fitsSystemWindows
cliptopadding默认为true,为viewGroup的属性,是否允许在padding中绘制,true代表不允许,false代表允许fitsSystemWindows就是内同区域是否忽略actionbar title等,flase不忽略,就是整块屏幕都是你的内容区域。true代表忽略,不把actiongbar等区域算作你的绘制区域转载 2017-09-03 00:43:43 · 375 阅读 · 1 评论 -
AndroidStudio关联源码
系统盘:\Users\用户名r\.AndroidStudio2.3\config\options找到jdk.table.xml然后修改以下文件因为我的编译版本是25,所以我关联了25的源码。网上可多关联的路径并没有后面的src,这要跟你下载的源码有关,下面是我下载的源码图片所以知道什么时候加src了吧应该看源码中的目录,首先你要在androidstudio下载源原创 2017-09-09 14:16:42 · 511 阅读 · 0 评论 -
As中引用jar和so文件和assets
一、引用jar文件 1.将jar文件复制、粘贴到app的libs目录中; 2.右键点击jar文件,并点击弹出菜单中的“Add As Library”,将jar文件作为类库添加到项目中; 3.选择指定的类库。 注:如果不执行2、3步,jar文件将不起作用,并且不能使用import语句引用。 二、引用so文件 网上有很多引用so文件的转载 2017-08-31 14:59:29 · 556 阅读 · 1 评论 -
属性动画
以前的我们执行动画使用的都是补间动画和逐帧动画,但这两种动画有一定的缺点,我们移动的只是当前控件的内容,而他本身并没有真正移动,所以当我们给当前控件设置监听的时间,响应的地方并不是我们移动后的位置,而是我们没有移动前的位置,所以有了属性动画,通过改变属性来使它真正的移动。 补间动画<translate xmlns:android="http://schemas.android.com/a原创 2017-09-07 20:53:11 · 294 阅读 · 0 评论 -
打造绚丽平行空间引导页
先上图,动图太大传不上来,在项目中有动图点击查看动图首先解释下工程的主要部分。首先谷歌的百分比布局做了部分修改,因为我设置的宽高都是相对于屏幕的宽度,而谷歌的百分比布局不能实现,只需要修改一部分代码就可以实现。下面贴出修改的部分代码public static class PercentLayoutInfo { private enum BASEMO原创 2017-09-14 12:15:18 · 614 阅读 · 0 评论 -
图片的三级缓存
图片的三级缓存:内存,sd卡,网络,避免大图片造成oom(out of memory)接口类:public interface ImageCache { public Bitmap get(String url); public void put(String url,Bitmap bmp);}实现类:内存,sd和双缓存//内存缓存类public class Memory原创 2017-07-03 18:31:04 · 243 阅读 · 0 评论 -
webview中setWebChromeClient和setWebClient区别
在用webview加载html页面时候,有时候会用到setWebClient和setWebChromeClient,他们之间的不同在于:1.setWebClient就是帮助WebView处理各种通知、请求事件onLoadResource onPageStart onPageFinish onReceiveError onReceivedHttpAuthReq原创 2017-05-30 14:51:20 · 2062 阅读 · 0 评论 -
view事件分发机制
OnTouch、OnTouchEvent返回true或返回false,究竟意味着什么? 不管你在MainActivity类中所使用的xml布局文件中注册了多少个View ,也不管View是否都设置了获取焦点,只要你在 MainActivity 中重写onKeyDown()函数,Android 就会调用此函数。但是如果该类拥有一个自定义的View,那在该自定义View的构造函数转载 2017-05-30 14:48:33 · 332 阅读 · 0 评论 -
getCompoundDrawables()和获取图片宽度和高度
getCompoundDrawables()返回一个包含四个数据的数组在布局文件中设置四周图片,用getCompoundDrawables方法可以获取这4个位置的图片该方法返回包含控件左,上,右,下四个位置的Drawable的数组Drawable[] drawables=getCompoundDrawables();在ImageView中的image,可以使用getWidth()和原创 2017-05-30 14:45:28 · 2121 阅读 · 0 评论 -
pain设置字体属性
Paint.setFakeBoldText(true)//在自定义控件中给字体加粗 paint.settypeface(Typeface typeface)//参数有几个:Typeface.DEFAULT:默认字体。Typeface.DEFAULT_BOLD:加粗字体。Typeface.MONOSPACE:monospace字体。Typeface.SANS_SERIF:sans原创 2017-05-30 14:36:03 · 464 阅读 · 0 评论 -
dp和px之间的相互转换
dp和px之间的相互转化dp和px之间的相互转化//dp转化为px public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; //屏幕密度 return (in原创 2017-05-30 14:33:41 · 814 阅读 · 0 评论 -
shape的属性
solid:实心,就是填充的意思android:color指定填充的颜色gradient:渐变android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radia原创 2017-05-30 14:28:57 · 518 阅读 · 0 评论 -
service基础
service(服务),后台运行并不会默认开启子线程,默认在ui线程中。IntentService 覆写了onHandleIntent函数,(完成耗时操作),会在onHAndleIntent执行完毕后自我销毁,因此IntentService只适用于完成一些短期的耗时操作。运行在前台的service不会由于系统内存不足而被回收,还会在通知栏显示一条消息,下拉状态栏看到详细信息原创 2017-05-30 14:27:14 · 288 阅读 · 0 评论 -
弹窗popWindow
窗口背景透明,设置背景透明度 #aarrggbbaa的大小影响窗口透明度的大小 PopupWindow window;View v = this.getLayoutInflater().inflate(R.layout.popupwindow, null);window = new PopupWindow(v, 200, 300); window.se原创 2017-05-30 14:21:13 · 356 阅读 · 0 评论 -
fragment中添加fragment与activity中添加fragment的不同
activity中添加fragmentFragmentTransaction transaction=getSupportFragmentManager().beginTransaction();transaction.replace(R.id.fragment_container,rentFragment).commit();或者transaction.add(R.id.fragm原创 2017-05-30 14:17:40 · 1603 阅读 · 0 评论 -
File创建的操作
mkdir() 创建此抽象路径名指定的目录。 mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 mkdir()只能在已经存在的目录中创建创建文件夹。mkdirs()可以在不存在的目录中创建文件夹。mkdir()创建此抽象路径名称指定的目录(及只能创建一级的目录,且需要存在父目录)mkdi原创 2017-05-30 14:16:00 · 234 阅读 · 0 评论 -
sqlite查询的理解
以下记录我对sqlite查询的理解,以前只是会使用,一直不知道为什么这么用。数据库查询rawQuery()和query()Cursor cursor = db.rawQuery("select name from *** where id=?", new String[]{"1"});Cursor cursor = db.query("***", new String[]{"na原创 2017-05-30 14:10:10 · 316 阅读 · 0 评论 -
canvas画布中视图操作
Bitmap.createScaledBitmap ( Bitmap src, int dstWidth, int dstHeight, boolean filter);src The source bitmap.dstWidth The new bitmap's desired width.dstHeight The new bitmap's desired height.fi转载 2017-05-29 17:39:33 · 679 阅读 · 0 评论 -
xml写Animation动画
set xmlns:android="http://schemas.android.com/apk/res/android"> scale android:fromXScale="0.3"android:toXScale="1.0" android:fromYScale="0.3"android:toYScale="1.0" android原创 2017-05-29 17:38:23 · 612 阅读 · 0 评论 -
Android 中的DisplayMetrics类的用法
Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。手机的分辨率信息是手机的一项重要信息,很好的是,Android已经提供DisplayMetircs类可以很方便的获取分辨率。下面简要介绍 DisplayMetics类:Andorid.util 包下的DisplayMetrics类提供了一种原创 2017-05-29 17:36:31 · 368 阅读 · 0 评论