自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用WindowLayoutParams要注意的地方

WindowManager.LayoutParams(int _type, int _flags),而ViewGroup.LayoutParams(int width, int height);还有uses-permission和permission是不一样的,在设置权限的时候要分清了。

2016-11-30 21:40:40 598

原创 Service小结

Service生命周期:单纯startService:onCreate  onstart ondestroy。每次调用startService就调用一次onstart。调用stopService或stopSelf会回调ondestroy,service将被撤销。单纯调用bindService:onCreate   onBind  onUnbind   onDestroy。所有绑定者都调

2016-11-30 18:32:13 319

原创 LongScreenshot代码流程概述

首先静态注册ScreenShotReceiver,通过这个receiver启动ScreenShotService,在ScreenshotService中动态注册上图中3个Receiver。先通过在ScreenShotService中初始化窗口,为View添加监听器。事件的处理就从监听器入手。主要是滚动和保存单个截屏,最后拼接成一个长截屏图片。保存单个截屏和计算滚动的一些参数的工作主要由Ne

2016-11-30 17:57:01 1268 1

原创 Context小结

这个Context主要的继承关系。这是使用了典型的装饰者模式。context是个抽象类,ContextImpl是实际的实现者,而ContextWrapper是装饰者。Context中有很多重要的方法,如startActivity(...)、startService(...)、sendBroadcast(....)、getResources()、registerService(...)、ge

2016-11-29 22:34:38 264

原创 在服务器上编译apk

各个选项介绍:App Name:就是要编译的APP的名字,和下载的代码文件名一致。有的名字是以amigo开头,有些是以GN开头的。AppURL:就是在这个apk是在哪个流的,就是你想编译的代码是被上传到哪个流去d就是哪个流。因为服务器编译就是首先是把修改好的代码上传到服务器上对应的流(URL),然后再让服务器去编译。Env Name:一般都上图所示Env Url:和App Ur

2016-11-29 15:01:55 1086

原创 在项目中配置apk

拿长截屏模块示例:1.在/home/zhangjinbiao/other/mild/SharingDoc/code/7521/alps/android_mtk_m_6753_65t_mp1/gn_project路径下的mk文件中配置一个宏:GN_APK_LONGSCREENSHOT_SUPPORT = yes2.在/home/zhangjinbiao/other/mild/Sharin

2016-11-29 14:37:06 353

原创 非源码apk的编译和安装

1.下载build_apk_env工具(一个文件夹的形式)在http://19.9.0.146上的"Projects"选项的”list”子项下,可以用git clone命令下载。2.把这个文件夹放到跟apk源码文件夹同一个目录下,就是该文件夹和apk整个文件夹并列。3.在build_apk_env文件下打开终端。4.切流,看海外软件各ROM模块分支文档中,要编译的apk使用哪个流,就切

2016-11-29 09:51:36 471

原创 Canvas和其绘制目标小结

       Canvas是一个绘制的工具,分为硬件Canvas和软件Canvas,通过使用Canvas的方法可以将点(图形)绘制到指定目标中(即通常所说的画布,canvas中持有画布的引用),绘制目标有几种,待会介绍。       Canvas的绘制指令:这些最常用的指令由一系列名为drawXXX()的方法提供。它们用来实现实际的绘制行为,例如绘制点、线、面,文字。       Canv...

2016-11-28 17:52:03 369

原创 ArrayAdapter作为ListView适配器,ListView作为LinearLayout子控件时,ListView的item不可点击

知道处于何种原因,如题所述。解决方法:1. 将RelativeLayout作为ListView的父控件。2.用baseAdapter作为ListView的适配器。其中使用了各种使ListView的Item获得焦点的方法都无济于事,包括如下:1.listView.setItemsCanFocus(true); //设置item项的子控件能够获得焦点(默认为false,即默认item项的子

2016-11-28 16:27:55 786

原创 截屏应注意的细节和尝试(导出的图片一片黑色)

1.在手机的图片查看器是没有颜色背景的(没有黑色就显示为黑色)。而画笔的颜色是默认黑色的,所以需要一个非黑色的背景才能够看到黑色的字体。下面是截屏的关键代码:是从顶层View绘制,所以contentView为根的子控件树不加背景也是可以看到黑色字体的,因为顶层View应该是绘制了白色背景的static Bitmap getListViewScreenShot(Activity a){

2016-11-28 16:04:29 4651

原创 控件树绘制完整流程概述

上面就是控件树绘制的流程。下面介绍一下上面的各个方法:说说最特殊的顶层View,就是ViewRootImpl#mView,他没有所谓的父控件也就没人调用dispatchDraw()去绘制他,也就不会嗲用他的draw(ViewGroup,Canvas,long)去帮他处理变换坐标。这些事都在ViewRootImpl#drawSoftware()中帮mView做了,然后再其中调用mView.dra

2016-11-27 00:53:13 637

原创 Android绘制时的坐标系变换

坐标系的变换就是变换前后的映射关系。只要理清这个变换关系就什么都明白了。现在从屏幕坐标系开始(即以屏幕左上角为原点的坐标系)变换到窗口坐标系:假如窗口左上角的坐标(下面都是指当前坐标系中的坐标)为(0, 20)如:坐标系平移:Canvas#translate(0, 20);则Canvas当前的坐标系是窗口坐标系(即以窗口左上角为原点)。变换的意义何在,方便我们在绘图时更加方便,如我

2016-11-26 17:03:12 3555

原创 写代码的一些小细节,养成好习惯

1.如果一个成员变量(基本类型的)在某个方法中引用较多,则在方法中定义一个局部变量。这样引用效率就高了,但是如果引用的是对象成员,那就在定义局部变量也没有用了,因为对象并不可以保存在栈中。2.如果一个变量是在接下来的使用中是不改变的,那么就用final去修饰。

2016-11-26 16:01:52 504

转载 Android 系统名字、版本、API level的对应关系

http://www.bubuko.com/infodetail-832097.html

2016-11-23 16:02:59 281

原创 Ubuntu常用命令

F3:文件分屏;ctrl+1/2:图标显示切换

2016-11-23 15:01:23 207

原创 review和关闭待review的提交

在上面的页面点开那些项,如下:

2016-11-23 14:48:12 485

原创 控件树的触摸事件派发小结

当一个触摸事件产生后,它的传递过程遵循如下顺序:Activity→Window→View。所以Activity的rootView收到一个触摸事件后,就会按照控件树的触摸事件派发流程,而事件的派发流程由ViewGroup(View)的dispatchTouchEvent(MotionEvent ev),其实dispatchTouchEvent方法在执行事件派发前,还控制确定派发目标的逻辑,在这里

2016-11-22 21:34:04 358

原创 解决ListView与ScrollView的滑动冲突(非自定义View方案)

在介绍解决冲突关键点前,先介绍AbsListView.OnScrollListener,该类用于监听AbsListView类及其子类的滑动。(注意:点击Item并不会引起任何该监听器的回调,因为没有滑动状态改变或滑动)先介绍AbsListView.OnScrollListener#onScrollStateChanged(AbsListView view, int scrollStat

2016-11-22 19:40:46 1051

原创 ListView在ScrollView中只显示一行浅析

因为在代码中调试的时候,跟源码的行不匹配,乱了,所以没从源码找到什么原因。但是从以下测试代码可以知道,是ScrollView在给ListView传MeasureSpec的时候给SpecSize是有问题的,即ScrollView给的heightSpecSize是ListView一行的高度。我继承了ListView,重写了他的onMeasure方法,目的是改掉ScrollView传入的MeasureS

2016-11-22 14:06:42 656

转载 CSDN插入图片

http://blog.csdn.net/truong/article/details/199930371、点击在文章正文上的图片按钮2、上传本地图片,本地图片会在自己空间相册中3、在相册中,打开图片后右击,单击复制图片地址(不要选择输入栏中的地址,那个地址不对)4、点击在文章正文上的图片按钮,复制图片链接地址,设置图片高宽等5、祝你成功

2016-11-22 11:09:35 543

原创 新建CR

填完红色内容

2016-11-22 10:44:43 609

原创 svn同步代码

首先,在存放代码的文件夹下打开终端然后用(svn co http://19.9.0.130/svn/android_mtk_l6580_we_mp6/branches/branch_oversea_wbw5615_wbw5616_wbw5617_t5363_rel ./)把代码同步到当前文件夹。

2016-11-22 10:05:26 1480

原创 git的使用

git教程git branch [local_branch]:基于当前分支创建一个本地分支,该分支没有和任何远程分支对应上git branch -D [local_branch]:删除本地分支git checkout -b [local_branch] [remotename]/[branch]:创建一个与远程分支对应的本地分支git checkout -b [local_bran...

2016-11-22 09:58:06 1280

原创 Android studio 条件断点

右击断点处会出现如下图在condition中输入如:this instanceof  ListView          此时当该实例是ListView时则在断点停下(上图中是View类,但实例不一定是View,有可能是其子类)。输入的条件中涉及到的变量必须要是断点处可获得的。还可以输入:event.getX() > 0     等等。

2016-11-21 20:03:10 2265 1

原创 Android studio中查找指定API的源码

用ctrl+n,可以搜索代码,但只能看到一个AP levelI的源码,就是project structrue中compile sdk version中的那个API。所以要看某个API,需要去设置compile sdk version。

2016-11-21 19:54:22 1826

原创 自定义简(粗)易(暴)SlidingMenu

这个代码只能配本文的布局文件使用,因为在代码中写死了是SlidingMenu里是两个TextView。大家可以参考里面的滑动实现,还有测量和布局的实现。这里采用了一个很笨的实现方案:即在整个ViewGroup向右滑动,为了保持MainView不动,我让MainView在ViewGroup向右滑动使Menu滑出时向左移动。其实可以采用只让MenuView(mSubView)动的方式去实现,只是想

2016-11-21 11:21:58 257

原创 关于触摸事件处理的一些辅助类和回调方法(下)

关于触摸事件处理的一些辅助类和回调方法(上):VelocityTrackerGestureDetector:手势检测,用于辅助检测用户的单击,滑动,长按,双击等行为。下面是使用过程:可以使用该GestureDetector来接管onTouchEvent。在自定义View中,使用GestureDetector可以这样:public MyView extends View{

2016-11-20 23:18:40 834

原创 关于触摸事件处理的一些辅助类和回调方法(上)

VelocityTracker类:速度追踪,用于追踪手指在滑动过程中的速度,包括水平速度和竖直方向的速度,使用方法的代码如下关于对象池设计模式看我这篇文章http://blog.csdn.net/b1480521874/article/details/53241417//VelocityTracker类使用了对象池的设计模式。从VelocityTracker对象池中获取对象Vel

2016-11-20 17:06:56 1023

原创 recycle设计模式的使用

概括一下:调用recycle()不是为让系统去回收这个对象,而是让对象池(所以类中要有一个对象池静态成员,如:SynchronizedPool<VelocityTracker> sPool)回收这个对象(就是做了隐藏该对象,避免被系统回收的机制),在调用recycle()前需要调用clear(),用于将对象重置到初始化状态。得到这类对象一般通过obtain方法获取,obtain()0一...

2016-11-20 16:22:15 548

原创 View的位置参数及坐标

在一个View会有各种变量是描述坐标的,如:mLeft,mTop,mRight,mBottom。getX()和getY()的返回值,mScrollX, mScrollY,getLocationOnScreen(int[]),getLocationInWindow()。MotionEvent.getX()。MotionEvent.getRawX()。mLeft,mTop,mRight,mBott

2016-11-20 15:37:05 441

原创 滑动和弹性滑动小结

涉及到了变量和方法有(其实滑动除了这些方法,还有动画和改变LayoutParams来实现,但是这里先不说):View#mScrollX,View#mSrollY,View#scrollTo(int x, int y), View#scrollBy(int dx, int dy), Scroller, Scroller#startScroll(int startX, int startY, in

2016-11-17 22:18:10 789

原创 自定义ViewGroup应如何去使用setMeasuredDimsion(int,int)和计算其参数

protected final void setMeasuredDimension(int measuredWidth, int measuredHeight) { boolean optical = isLayoutModeOptical(this); if (optical != isLayoutModeOptical(mParent)) {

2016-11-16 23:10:56 506

原创 在自定义ViewGroup应该怎样去考虑padding和margin

padding:需要在给子控件计算measureSpec时,应把ViewGroup 的padding属性考虑进去,即计算parentSize(可用最大尺寸)时减去ViewGroup的padding部分。在计算ViewGroup的尺寸时,除了把child.getMeasuredWidth/Height 加起来,还要把padding加上margin:protected void m

2016-11-16 22:04:33 1753

原创 在哪里如何生成view的measureSpec

答案是在onMeasure(int,int)中onMeasure(int,int){ ...... int widthMeasureSpec = getChildMeasureSpec(int parentSpec, int padding, int childParamWidth) ...... child.measure(widthMeasu

2016-11-16 21:03:39 456

原创 从下载源码到编译版本再到编译apk流程和将apkpush进手机

下载源码新建一个为项目名的文件夹,如:7519GX1.下载Android系统相关部分:新建一个名为alps的文件夹,在该文件夹下打开终端,右键→open in terminal先执行第一条命令,再执行第二条命令repo_19.9.0.151 init -u ssh://zhangjinbiao@19.9.0.151:29418/manifest.git -b android

2016-11-16 17:35:30 2757

原创 在onMeasure中获取已测量的子控件的宽高

不能使用child.getWidth();因为这个用right - left得到的,在onMeasure中都还没布局控件树,那些位置参数都为0.只能通过child.getMeasureWidth();

2016-11-16 15:52:38 2499

原创 不能在viewgroup及其子类的构造函数中中获取child

在构造时,即使运行完父类的构造函数,mChildren成员变量只是被初始化了,但是没有元素在里面,getChildAt(int index)是从mChildren中获取的。我也不清楚在哪里child才被添加进去。反正在onMeasure里可以了。

2016-11-16 15:37:02 435

原创 关于Android project的各种version设置小结

compile sdk version:就是使用这个版本的sdk来编译,就是说源码中的类等sources都使用用这个版本API的sources去编译。所以这个应该是这个软件能运行的最高版本设备了。就是说这个软件最多能在这个version的系统上运行,因为该应用是使用这个API,但是新的API可能取消了某些功能或者没有某些类,就是运行出错。build tool version:就是build

2016-11-15 17:30:13 1146

原创 Android版本特性及其变化的官方文档

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?utm_campaign=adp_series_sdkversion_010616&utm_source=medium&utm_medium=blogAndroid版本特性及其变化的官方文档

2016-11-15 16:51:26 306

转载 使用自定义控件报错:Error inflate class

自定义View时,必须要有这个三个构造函数。View(Context context)     //Simple constructor to use when creating a view from code    View(Context context, AttributeSet attrs)     //Constructor that is called when inflat

2016-11-15 16:07:22 1756

android-all-9-robolectric-4913185-2.jar

单元测试使用robolectric框架时需要下载的依赖,但是使用Android Studio下载太慢了,下载该资源直接放在C盘用户根目录下的相对路径.m2\repository\org\robolectric\android-all\9-robolectric-4913185-2下, 那么在build.gradle声明testImplementation 'org.robolectric:robolectric:4.3',则会跳过下载该资源

2019-11-03

SourceInsight.rar

里面包含SourceInsight4安装包及license的lic文件

2019-08-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除