android开发全屏切换代码,记录一下

privatevoidtryFullScreen(booleanfullScreen){  if(activityinstanceofAppCompatActivity){    ActionBarsupportActionBar=((AppCompatActivity)activity).getSupportActionBar();    if(supportActionBar!=null){      if(fullScreen){        supportActionBar.hide();      }else{        supportActionBar.show();      }    }  }  setFullScreen(fullScreen);}privatevoidsetFullScreen(booleanfullScreen){  if(activity!=null){    WindowManager.LayoutParamsattrs=activity.getWindow().getAttributes();    if(fullScreen){   ...

OpenGLES以及shader开发调试工具

1.shader开发编辑器kodelife,地址:https://hexler.net/products/kodelife2.shader调试工具GAPID,google开源的一个项目,地址:https://github.com/google/gapid3.shader调试工具RenderDoc,地址:https://renderdoc.org/ ...

android开发使用TextView显示html富文本、markdown文本的强大框架记录一下

android开发时,有时我们想灵活修改样式灵活,所以想使用富文本显示方式展示,一般我们有以下两种方式:1.使用TextView显示,使用textView.setText(Html.from(html))显示富文本内容2.使用WebView加载,使用webView.loadData()或者webView.loadDataWithBaseURL()加载富文本内容但是以上两个方法都不够完美,TextView显示的富文本样式支持非常有限;WebView性能损耗比较大而且容易造成内容泄露,整个页面单独进程使用WebView还可以,页面某部分特别是列表页面嵌入WebView不太可能吧。所以下面就介绍一个比较有名好用的开源框架Markwon,它的原理是解析对应标签为Spanned,然后再显示到TextView上面。好用性能又好,太牛逼了。下面介绍基本使用:  框架地址:https://noties.io/Markwon/以及github:https://github.com/noties/Markwon  android项目里引入:    allprojects{repositories{mave...

android开发过程使用的依赖库的具体地址到底是啥?记录一下

android开发过程使用的依赖库的具体地址到底是啥?比如项目里面使用了bugly库,我们添加的依赖如下:  api'com.tencent.bugly:crashreport:latest.release'  上面的latest.release表示使用最新的版本,也可以使用具体的数字,比如api'com.tencent.bugly:crashreport:3.2.1'但是我们要理解的是,androidstudio从哪里去下载这个库的呢,具体路径又是什么呢?  默认androidstudio从jcenter下载,在项目的根build.gradle文件下配置的jcenter(),其实也是对呀地址https://jcenter.bintray.com,  如果这个库不是发布jcenter而是其他地方,那就得指定发布在哪里了,使用maven指定,语法:maven{url'url'}  注意不一定是https://jcenter.bintray.com哦,有可能是其他地方比如https://jitpack.io等等,具体要看这个库发布在那里,知道从哪里下载依赖库了,那具体的路径是什么呢?  其...

android开发聊天输入框at某人的分隔符选取

android开发时,一些需求要实现@某人,比如说聊天输入框里要实现@某人的高亮效果。实现的一个关键点据说@某人和正常输入的内容的分隔,这个分隔符就是一个重点了。记录一些我实现的时候使用的分隔符。Stringsep=" ";//注意:不是空格,一个编码为8197的空白字符。看起来像空格,但unicode不一样那怎么得到这个空白字符呢,看下面方法:valsep=8197LogUtils.d("sep==1${sep.toChar()}2==")打印结果:LogUtils:sep==1 2==,看一下打印结果,1和2之间那个空白就是我们需要的分隔符了。那为什么我们需要使用这个分隔符呢,因为这个分隔符用户输入不了,也就无法干扰到我们分隔了。听说微信、钉钉这些聊天里的@某人分隔符就是使用这个unicode值的空白字符。 ...

android开发使用setOnClickListener点击事件实现双击事件的解决方法

android没有提供给我们直接设置双击事件的方法,当然可以使用setOnTouchListener使用,这里提供一种简洁的实现方法使用kotlin实现代码如下:privatevarlastClickTime=0LtextView.setOnClickListener{valclickTime=System.currentTimeMillis()lastClickTime=if(lastClickTime>0L&&clickTime-lastClickTime<500){LogUtils.e("doubleclick:${clickTime-lastClickTime}")0L}else{clickTime}} ...

android开发fragment里面使用百度地图黑屏错位的解决方法

最近使用百度地图开发,在fragment里面使用百度地图,切换tab的时候,fragment里面的百度地图黑屏、错位导致显示mark不准确。解决方法就是将MapView换为TextureMapView即可 ...

android开发FontMetrics的理解

p.p1{margin:0;font:12px"HelveticaNeue"}p.p1{margin:0;font:12px"HelveticaNeue"}Paint.FontMetrics.top:基准位置上方最大高度Paint.FontMetrics.ascent:基准位置上方推荐高度Paint.FontMetrics.baseline基准位置,为0Paint.FontMetrics.descent基准位置下方推荐高度Paint.FontMetrics.bottom基准位置下方最大高度Paint.FontMetrics.leading行间距大小理解如图所示:获取文本高度方法:文本宽度:paint.measureText(text)文本高度:paint.descent()-paint.ascent() p.p1{margin:0;font:12px"HelveticaNeue"}p.p1{margin:0;font:12px"HelveticaNeue"}...

android开发使用MAT工具检测查看内存泄露

1.下载MAT工具https://www.eclipse.org/mat/downloads.php2.右键打开mat.app,打开MAT工具,mac下打开可能出错,解决方法如下:  编辑mat.app/Contents/Eclipse下的MemoryAnalyzer.ini文件,  在--launcher.library前添加日志输出目录  -data  /Users/xx/log  我的修改如下:    3.使用AndroidStudio的Profiler导出原始hprof文件  4.使用androidsdk自带的platform-tools下的hprof-conv工具转换原始hprof文件,命令如下:  hprof-conv./原始文件.hprof./目标文件.hprof5.mat工具打开目标hprof文件  右键打开mat.app打开mat工具,接着点击工作台(Workspace)下打开堆文件按钮(OpenaHeapDump),选择并打开目标文件。6.分析目标hprof文件      如果对应的Objects列上大于1,可能是出现内容泄露了。接着往下看是谁引用导致的内存泄露: ...

android开发File文件储存目录介绍

 Android文件目录储存结构说明。注:别人的图,画得不错,借用一下...

android开发重写equals方法和hashCode方法的通用写法记录

实际开发我们有时需要判断比较两个对象是否相同,通常做法是重写对象的equals方法。但重写equals方法时,一般我们也会重写hashCode方法。其实如果该对象不会当作Map里的key,不重写hashCode方法也是没啥影响的。想重写hashCode方法不知道该怎么写?下面是重写equals方法时,也重写hashCode方法的通用写法:finalclassResourceCacheKeyimplementsKey{privatefinalKeysourceKey;privatefinalKeysignature;privatefinalintwidth;privatefinalintheight;privatefinalOptionsoptions;@Overridepublicbooleanequals(Objecto){if(oinstanceofResourceCacheKey){ResourceCacheKeyother=(ResourceCacheKey)o;returnheight==other.height&&width==other.width&...

android开发自定义View实现圆角进度条、圆形百分比进度

android项目开发常见的一个需求就是文件下载进度,或者做其他后台操作要求显示一个进度,这样用户体验更加好友。github地址:https://github.com/yongfengnice/CircleProgress下面是项目常用的自定义View实现圆角进度条、圆形百分比进度,效果如下:   ...

android开发ExpandableListView展开分组时不滚动不顶上去的解决方法

//给ExpandableListView设置分组点击事件binding.elvContactGroup.setOnGroupClickListener{parent,_,groupPosition,_->if(parent.isGroupExpanded(groupPosition)){parent.collapseGroup(groupPosition)}else{parent.expandGroup(groupPosition,false)//第二个参数传递false,不产生动画}true //返回true表示事件已经消费,告诉系统不再产生默认动作。} ...

android开发去掉TextView使用html.from里面的a链接的下划线的方法

classClickURLSpan(url:String):URLSpan(url){companionobject{funstripUnderline(textView:TextView){textView.movementMethod=LinkMovementMethod.getInstance()if(textView.textisSpannable){valspannable=textView.textasSpannablevalallSpans=spannable.getSpans(0,spannable.length,URLSpan::class.java)//查找<a></a>对应的URLSpanfor(spaninallSpans){valstart=spannable.getSpanStart(span)valend=spannable.getSpanEnd(span)spannable.removeSpan(span)spannable.setSpan(ClickURLSpan(span.url),start,end,0)//替换为自定义的C...

android开发报错JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 12548628)

报错原因:使用Intent传递Bitmap等大数据,传递的parcelsize超出了限制,binder事务报错了 ...
首页上一页...7891011...下一页尾页