自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 关于自定义view的补充

1.为什么自定义view需要重写onMeasure方法并设置wrap-content自身大小,否则布局效果和match_parent一样?答:view在布局中使用wrap-content的话,其specMode为AT_MOST,这种情况下无论父容器是什么specMode(unspecified除外),子的specSize都是parentSize,宽高都等于父容器剩余的大小,这种效果和在布局中使用match_parent的效果一致,因此需要在onMeasure方法中给view指定一个默认的宽高,并在mod

2022-04-22 01:15:00 256

原创 自定义view及优化

参考链接:自定义View,有这一篇就够了 - 简书1.2 自定义 View | 菜鸟教程自定义view当Android系统内置的View无法实现我们的需求时,我们可以根据要求制订自己的View。自定义view大约需要这几步: 继承View类 至少重写两个构造函数 重写onMeasure(),onDraw(),onLayout()(可不写) 具体:onMeasure():@Override protected void onMeasure(int w

2022-04-22 00:30:00 636

原创 获取view宽高最佳时机

获取view宽高有两种方法: getMeasrureHeight()/getNeasureWidth() :此方法在measure是对控件进行测量,在onMeasure后得到值。 也可以在getMeasureHeight之前手动调用一下measure()方法获取高度。但手动measure需要根据View的LayoutParams来区分 int widthMeasurewSpec;int HeightMeasurewSpec;//如果是match_parent,不要使用此方法,理论上不知道

2022-04-19 15:15:00 1327

原创 Android常用布局小结

ConstraintLayout(推荐)注意: 每个视图都必须至少有两个约束条件:一个水平约束条件,一个垂直约束条件。 只能同一平面创造约束条件。视图的垂直平面只能约束在另一个垂直平面上(左右<—>左右,上下<—>上下);基准线只能约束到其他基准线上。 调整视图尺寸:(Attributes 窗口)一。大小设置 xx dp(Fixed):特定尺寸 Wrap Content:默认大小,视图仅在需要时扩展。应用此属性后,如果大小超过了某一侧的约束

2022-04-19 00:15:00 1971

原创 Android——图片与显示屏适配

通用概念 px:像素点,整数 in:英寸,平时说的5英寸通常指指屏幕的对角线尺寸,1英寸 = 2.54厘米 dpi:每英寸包含的像素个数,例如分辨率320*480,宽2英寸,长3英寸,那么该屏幕的横向纵向dpi均等于160(320/2 == 480/3 == 160),大部分屏幕使用正方向像素点因此,横向纵向的dpi一般相同。 density:屏幕密度,density = dpi/160 dp:即dip,设备独立像素。Android特有单位,1dp = density*1px(在dp..

2022-04-17 01:00:00 831

原创 Android总结------view事件分发

view分发事件之前:整个事件分发从activity->window->顶级view ->子view逐层向里传递事件,顶级view接收事件后按照相应的分发机制分发事件,期间如果一个view的onTouchEvent返回false表示他不处理这个事件,那么就会调用父容器的onTouchEvent()来处理这个事件,如果所有view都不处理,那么将返回给activity调用onTouchEvent处理。过程简单来说就是受到事件后一层一层向内(子view)分发,默认不拦截。分发到最顶层v

2022-04-16 23:00:45 257

原创 view.post到底是干嘛的

背景:在onCreate()中获取view的宽高直接调用getMeasuredWidth/height的话 会因为无法保证是不是已经测量完毕而导致获得的宽高为0,那么如何能确保在onCreate,onStart,omResume方法中获取到宽高呢?如下几种方法: Activity/view的onWindowfocusChanged()方法中获取宽高。 view.post(runnable)将runnable投到消息队列的尾部,然后等looper调用此runnable的时候,view已经初

2022-04-16 22:52:42 2129

原创 设计模式学习(一)结构型模式——外观模式

外观模式(facade)简单来说就是提供一个访问子系统的统一入口,这个类中组合其他的子系统类,涉及到的方法统一调用。日常开发中会经常不经意间使用外观模式,当涉及到两个以上的变量时我们就会习惯性的将其封装成类。 解决什么问题 当客户端要同时调用许多子系统时,可以将众多子系统组合到同一个类中,统一设计一个简单接口供外界对其他子系统进行调用。 如果你的程序需要与包含几十种功能的复杂库整合, 但真正使用的只是其中非常少的功能。可以将其封装在一个类中,在内部对涉及.

2022-04-13 16:02:58 34

原创 设计模式学习(一)结构型模式——装饰模式

(一)装饰模式(包装模式) 解决什么问题 向要对一个类进行多种组合方式的扩展,继承的话每种组合都是一个子类,而装饰者模式则可以每一个添加项是一个子类,根据需要对子类们所包含的功能进行随意的组合。 装饰品和被装饰者要继承同一个接口,不同的装饰品之间也要继承同一个抽象类,才能满足随意扩展的需求 比如说一杯奶茶(被装饰着),5种小料,包括奶盖,芋圆,珍珠,椰果和奥利奥(饰品),如果想要喝到不同种类组合的奶茶(不同结果类),且在小料种类增加时不更改原有菜单(原有代码)怎么办

2022-04-13 15:51:51 43

原创 导航栏显示隐藏

控制导航栏状态可用如下方法:getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);其中View.SYSTEM_UI_FLAG_FULLSCREEN为属性标志,属性标志共有如下几种: SYSTEM_UI_FLAG_LOW_PROFILE 用于弱化导航栏存在,一般会隐藏导航栏和状态栏中的图标或颜色变暗,具体效果分机型 SYSTEM_UI_FLAG_HIDE_NAVIGATIO

2022-04-13 15:35:23 557

原创 uml关系总结

记录自用1.依赖关系一个的变化影响着另一个,A使用B,但B不能使用Aclass B {public void doSth() {System.out.println("do sth in class b.");} }class A {public void doSthInA(B b) {b.doSth();// others } }2.实现关系A类指定某种契约,B类保证执行。B实现了A的接口(约定)。3.泛化关系继承4.关联..

2022-04-13 15:33:28 32

原创 源码依赖方法

将待依赖的代码和项目中的app放到同一目录下 在gradle.properties添加 # 是否是本地开发模式,true:连接本地代码库isLocalCode=true在settings.gradle添加 xxx 为 module名,例:mtmapunity Path 为 moudle所在距settings.gradle的相对路径,例:'./mtmap-unity-android/mtmapunity' if (isLocalCode) { include '..

2022-04-11 11:18:58 334

原创 Android——viewPager使用小结

viewpager的简单使用 如果使用viewpager来实现fragment的左右滑动的话,那么直接继承FragmentStatePagerAdapter或FragmentPagerAdapter重写其方法即可 (FragmentStatePagerAdapter:在不需要的时候会销毁fragment实例,一般用于大量数据zaifragment上显示的场景;FragmentPagerAdapter:在不需要的时候只会销毁fragment的视图,不会销毁fragment的实例,一般用于只有少量f..

2022-04-11 11:18:45 392

原创 java数据结构之ArryList,LinkList,List

ArrayList内部是一个数组,和计数的size变量,以及一系列辅助他增加容量大小的属性。初始默认的大小是空。后续添加时,原来是空的情况下,就一次扩DEFAULT_CAPACITY = 10 个大小,如果不是空的,那么就按照一定规则进行扩容。删除元素时并不会缩小数组的大小,需要通过用trimToSize()这个方法来将数组缩到size大小 private void grow(int minCapacity) { // overflow-conscious code ...

2022-04-08 11:05:35 246

原创 Android——Paint.setXfermode(Xfermode xf)相关

Android图形混合方式

2022-04-07 17:24:03 4881

原创 Android——View绘制机制小结

Android的view绘制机制

2022-01-09 13:37:42 2155

原创 我与javaweb的孽缘(一)——使用enctype="multipart/form-data"后serlvet收不到参数

众所周知,在表单中若是想上传文件的话,就应该在表头加上enctype="multipart/form-data"。&lt;form  action="/save"  method="post" enctype="multipart/form-data"&gt;但是我在用这个的时候出现了问题,就是在跳转的serlvet中,用arg0.getParameter("xxx");取不到其它参数

2018-12-09 14:35:33 613

空空如也

空空如也

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

TA关注的人

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