Android view中的requestLayout和invalidate方法 requestLayout:当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view重新调用他的onMeasure onLayout来对重新设置自己位置. 特别的当view的layoutparameter发生改变,并且它的值还没能应用到view上,这时候适合调用这个方法. invalidate:View本身调用迫使view重画…
前言 前几篇文章中,笔者对View的三大工作流程进行了详细分析,而这篇文章则详细讲述与三大工作流程密切相关的两个方法,分别是requestLayout和invalidate,如果对Viwe的三个工作流程不熟悉的读者,可以先看看前几篇文章,以便能更容易理解这篇文章的内容. requestLayout 当我们动态移动一个View的位置,或者View的大小.形状发生了变化的时候,我们可以在view中调用这个方法,即: view.requestLayout(); 那么该方法的作用是什么呢? 从方法名字可…
Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengdd.utils; import android.graphics.Rect; import android.graphics.RectF; import android.util.Log; import android.view.View; public class Collision2DUtils…
转自:Android View中getViewTreeObserver().addOnGlobalLayoutListener() 我们知道在oncreate中View.getWidth和View.getHeight无法获得一个view的高度和宽度,这是因为View组件布局要在onResume回调后完成.所以现在需要使用getViewTreeObserver().addOnGlobalLayoutListener()来获得宽度或者高度.这是获得一个view的宽度和高度的方法之一. OnGloba…
PS:居然三天没写博客了...今天补上...东西虽多,但是都是一些基础...代码多了一些,有人可能会这样问,粘这么多代码有毛用..其实对于一个Android的初学者来说,一个完整的代码是最容易帮助理解的...我也是在一点一点的去学习...看了许多人的博客,大部分都是粘贴部分代码,说实话,刚接触的时候真的感觉不是很好理解...不知道其他地方如何去实现..只能自己慢慢的去摸索..我写的这东西也不是给大神们去看的...大神一看就能明白怎么回事..因此我是站在初学者的立场上,才贴了这么多的代码...好了…
我要做的一个东西是在一个页面的中间嵌入浏览器,一开始不知道从哪里开始,因为以前用的都是Textveiw或者editVeiw之类的控件,而它们并不能用来显示网页的内容,怎么办呢? 首先想到的是:是不是有一个用来显示网页的View呢,于是我就在eclipse里xml编辑器里输入<web,哈哈,果然下面有个提示是webVeiw,那么能不能用它呢?于是到网上搜一下它的资料,果然可以的,下面就开始吧. 先在xml里把webview建好,在代码里用findViewById()将其取出来.我的代码是: Web…
转载 http://www.toutiao.com/i6362292864885457410/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=6611409663&utm_medium=toutiao_android getParent().requestDisallowInterceptTouchEvent(true); 解释:一次点击事件…
1.某个控件要放在Linearlayout布局的底部(底部导航条) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_w…
方法   scrollTo: (内容的左上角)达到某个地点 scrollBy: 根据当前位置,再移动多少 属性:   mScrollX, 以下是文档解释   The offset, in pixels, by which the content of this view is scrolled horizontally.   mScrollY, 以下是文档解释   The offset, in pixels, by which the content of this view is scroll…
下面是一段自定义适配器中的getView方法,其中使用了view的一个setTag和getTag方法 View中的setTag(Onbect)表示给View添加一个格外的数据(相当于缓存),以后可以用getTag()将这个数据取出来. 下面是继承BaseAdapter的一个自定义适配器中的getView方法的内容,其中就用到了setTag和getTag方法 public View getView(int arg0, View arg1, ViewGroup arg2) { // #A 加载 Lo…
在网上看到很多Android初入门的童鞋都在问Parcelable接口的使用方法,小编参考了相关Android教程,看到里面介绍的序列化方法主要有两种分别是实现Serializable接口和实现Parcelable接口,通过具体试验,和大家分享一下Parcelable接口的用法,希望对大家有帮助. Serializable接口与Parcelable接口的区别 在将Parcelable接口的使用前,我们先来看看Serializable接口和Parcelable接口有什么区别: 1.Serializ…
这个就好像是 activity 的生命周期一样,如果我们要使用自定义的 view,那么就很有必要了解一下 view 的那些能够被重写的函数的执行顺序.废话不多讲,以常用的5个函数为例子,见下文: package com.example.pulltorefreshtest; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.…
bug:应用出现了 不幸运的,应用已停止的错误提示 排除问题: 1.intent接收数据的字符串不匹配 2.java常见的NullPointerException(空指针错误),可能由三个原因引起,字符串变量未初始化:接口类型的对象没有用具体的类初始化:没有判断是否为空 所谓的指针,就是java中的对象的引用.比如String s;这个s就是指针.若是直接引用s就会出现空指针错误 再比如: List lt; 会报错 List lt = new ArrayList(); 则不会报错了 3.接收的类…
之前使用了Android Studio的插件直接为button绑定了监听器,并实现onClick方法(我的onClick方法无论点击哪一个都是要实现setcontentview这个方法设置layout),之后,在onClick方法执行(也就是设置了一个新的layout)之后,点击新layout中的按钮,会弹出一个Toast,我把这个按钮先在onCreate方法中通过findviewbyid获取,之后为此按钮绑定监听器,但是,就是这一步绑定监听器的方法导致了我在点击设置新的layout之前的onC…
四种方法,使view创建好里面就有东西:[1.init  2.initWithFrame使用代码创建的时候.(从文件创建的时候不一定调用:1.init  2.initWithFrame这两个方法) 3.initWithCoder(通过文件,xib stroyBoard 创建的控件一定会调这个方法)  4.awakeFromNib(如果是xib或者storyBoard创建的一定会调awakeFromNib这个方法,然后是initWithCoder)]…
1. file.listFiles 空指针异常 最近在弄个小项目,类似一个文件管理器,需要获得手机存储里的目录之后显示,但是运行过程中出现错误,搜索了资料,得出了以下的解决办法 问题产生的原因: android6.0以上需要动态申请权限,确保自己有读取和写入SD卡的权限 以往版本的话,写入SD卡的权限其实是包含了读取SD卡的权限,但是android6.0有所改变,所以得声明读取和写入SD卡的权限,两个权限 存在有隐藏文件,在获取列表的时候出现空指针问题 解决方法: 针对第三个问题,我们只需要添加…
bug 1: bug描述: 无法成功地将edittext中的内容传入数据库中 bug动图: 经过: 最近写了个项目,项目要使用到SQL数据库,由于没有相关知识,便是找到了各种资料开始了自学之旅,在demo测试可以,但是,移植到实际项目就是失败,弹出应用已经停止的错误提示,花了两个星期,对比资料,一次一次的尝试,一直在寻找bug. 终于,功夫不负有心人,终于是被我找到了,原来是edittext中有留空了,我的项目就是要得到edittext中所输入的内容,并将得到的内容转入指定的数据库中,由于测试,…
1. 导入依赖库出现错误 因为使用的sdk版本不同,使用下列代码强制使用最低版本,25.3.1就是我当前使用的版本号,根据自己的情况修改 configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:25.3.1' resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested…
初学Android,最近在使用zxing开发一个条码扫描解析的安卓项目中,遇到以下几个问题.贴出来以供参考. 1.Http请求错误    Android4.0以上要求不能把网络请求的操作放在主线程里操作.使用多线程. 2.java.lang.IllegalStateException: Target host must not be null, or set in parameters.     原因: 连接地址不完整,必须加上"http://". 3.android java.net…
1.给一个Activity添加了一个Dialog主题,结果出现了下面的问题,在eclipse却没有出错 <activity android:name=".DialogActivity" android:label="@string/title_activity_dialog" android:theme="@android:style/Theme.Dialog" > </activity> 出错信息: java.lang.…
最近一个 App 中用到了 startActivityForResult() 方法,使用的时候却出现了一些问题,比如我在 Activity A 中调用该方法向 Activity B 中跳转,如果 B 中完成一系列操作之后用 setResult(resultcode, intent); finish(); 跳转到 A ,A 在 onActivityResult() 中进行处理没什么问题,但是如果,用户取消了操作,比如在B中按下返回键,这样就会造成一个情况,就是当 Activity B 结束,Act…
Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标.   public static class FontMetrics {               public float   top;               public float   ascent;               public float   descent;               public float   bottom;               public float  …
强调一点的就是,在onMeasure(),onLayout(),onDraw()这三个流程中,Google已经帮我们把draw()过程框架已经写好了,自定义的ViewGroup只需要实现 measure()过程和layout()过程即可 . 这三种情况,最终会直接或间接调用到三个函数,分别为invalidate(),requsetLaytout()以及requestFocus() ,接着这三个函数最终会调用到ViewRoot中的schedulTraversale()方法,该函数然后发起一个异步消…
  转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 . 同一时候真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到很多其它的知识 . 整个View树的画图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的运行过程可简单概况为 根据之前设置的状态,推断是否须要又一次计算…
PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念   view是什么呢?我们已经知道一个Activity是Android的显示层,但是Activity是不能直接显示在屏幕上的,它也像JSP那样,显示的东西是html,那么Android也不例外,Activity是一个抽象的壳子,而显示的东西就是view或者是viewgroup(图形用户组件)....   有了这个概念,我们就清楚view是如何…
最近的项目中给ListView 加入了一个Header View之后,发现Header View的下方也有了分割线,很难看,UI要求将Header View的分割器去掉,好吧.现在就来说一说如何如何去除ListView中Header View中的分割线. Header View中带分割线 Header View中不带分割线 Header View中要去掉的分割线 方法1 ListView的部分布局代码如下所示 <ListView android:id="@+id/ll_channel_li…
转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52180375 测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程 MeasureSpec SpecMode MeasureSpec和LayoutParams RootMeasureSpec 测量/布局/绘制顺序 View什么时候测量/布局/绘制? Invalidate,requestLayout…
View和Activity的区别 android的四大组件,Activity是四大组件中唯一一个用来和用户进行交互的组件.可以说Activity就是android的视图层. 如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View的,真正用来显示和处理事件的实际上是View. 每个Activity内部都有一个Window对象, Window对象包含了一个DecorView(实际上就是FrameLayout),我们通过setContentView给Activity设置显示的Vi…
还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系: 看见没有,如上图中id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递归的实现. 前面<Android触摸屏事件派发机制详解与源码分析一(View篇)>文章的3-1小节说过Android中的任何一个布局.任何一个控件其实都…
尊重原创: http://blog.csdn.net/sk719887916/article/details/48464035 上篇<Android View 中invalidate() 你所不知道的那些事>主要了解了view重绘的整个流程,通过从源码的学习大家了解了view整个invalidate的整个流程,但是上篇中view的另一个重要方法 requestLayout()没做细说,本篇继续分析requestLayout(). 上文中细说了从view.invalidate()开始到view.…