当然可以问 android 为什么要允许读写 SD 卡上任意目录,个人觉得这是历史问题,如果现在禁止了,估计一大堆读写 SD 卡的应用程序会出现兼容性问题,为了保证这种兼容性,感觉 android 不会将读写...所以很多与系统文件无关的资源文件就只能放在sdcard中。 由于这种历史原因,虽然很多最新版的设备已经大幅提升其系统储存空间,但开发者们仍旧会将自身的资源文件放到sdcard中。...并且在最新的android4.4中,对于android程序的资源文件建议储存在/sdcard/Android/$package 中,我觉得这是一个很好的进步,规范了文件的储存位置,离它的访问权限管理还会远吗...知乎:为什么 Android 4.4 KitKat 限制第三方应用的 SD 卡读写权限?...遇到device not found等错误可以直接忽略掉,布局文件属性里面绑定点击方法,传入的参数View对象代表当前按钮,控件首先都声明在Activity的成员属性里面,在onCreate()方法里面初始化
大家好,又见面了,我是你们的朋友全栈君。...进行listview的item复用机制,但还是会出现卡顿的现象,经过分析,原来是listview的item布局嵌套太多,导致刷新的时候,重绘过多,造成卡顿的现象,以下是另一片博客的分析贴出来,大家讨论感谢这位前辈...对于ListView,当然每一个Item都会被调用measure方法,而在这个过程中getView和getCount会被调用,而且看用户的需求,可能会有很多次调用。 而为什么会有很多组次调用呢?...问题就在于在layout中的决定ListView或者它的父元素的height和width属性的定义了。...附带刚哥的listview卡顿终极解决方案原帖:刚哥的Listview卡顿终极解决方案。
大家在进行安卓开发用到NestedScrollView+Recyclerview的时候,经常出现的情况就是加载下滑的时候没有任何问题,很流畅,但是在下滑以后明显出现了卡顿的情况,小编根绝这个问题,给大家再来的解决方法...在布局文件中添加 android:nestedScrollingEnabled="false" 这一属性 或者通过代码设置也是可以的, mRecycler.setNestedScrollingEnabled...,所 以只需要在对RecylerView在带中设置不能获取焦点即可....,又发现了两种方法,大神真的是多啊,一起整理后分享给你 当ScrollView嵌套RecyclerView时,会出现滑动卡顿,不平滑的效果。...,还原了原本的惯性。
虽然xml写的很多,而且也没有什么技术难度,但是,这也往往是我们最容易忽略的地方,写xml不难,写出好的xml还是得下点功夫了。...什么算是好的xml布局呢,我认为核心有两点,一个是提升开发效率,另一个是提升app性能。围绕着这两点,我也精心整理出了17个xml布局小技巧,下面一起来看看都有哪些,你又掌握了几个呢?...而在使用ConstraintLayout的过程中,我发现有些同学总是会忽略GuideLine,尽管ConstraintLayout已经非常好用了,但是有些布局仍然显得有些「笨拙」。...,当子layout嵌入在父layout中时,只需要使用tools:showIn在子layout的根布局指定父layout,就可以实时预览在父layout中的效果了。...最后 如上,本文一共介绍了17个在日常编写xml的过程中对提升效率和提升性能的属性,如果你也有心得,欢迎评论补充。
为了编写标题复用代码,我们使用include,于是我们可以这样写: 在activity布局xml文件中添加include节点 include引用该xml文件就相当于直接嵌入到include的外层布局,忽略掉merge节点,将两个textView直接加入到布局,也就是相当于activity的布局如下.../> 使用merge+include,既实现了代码复用,又解决了布局层级问题,在简化代码的基础上提升UI布局加载。...总结,本文只是对代码复用举了一个小例子,在实际开发中要注意不仅仅是复用xml文件,activity和整个fragment等都可以复用,作为一名研发人员,在开发apk时不仅要注重功能实现,还要注重代码的设计
腾讯QQ有了更新,在自己的手机上更新了一下,试运行了一段时间,被底部的选项卡给深深的迷住了。...于是,有了去做做它的原始冲动与欲望,在历经一个早上的琢磨,终于实现了,贴上来,作为给大家的春节祝福吧,在此,小编给大家拜年了,祝大家在新的一年马上有车,马上有房,马上有钱,马上有对象,同时也对浏览我文章的看客表示深深的谢意..." android:layout_height="wrap_content" android:text="我的音乐"..." android:layout_height="wrap_content" android:text="我的最爱".../android.support.v4.view.ViewPager> 很简单的了,就不解释了。
为什么推荐使用ConstraintLayout ConstraintLayout(约束布局)在2016年的Google I/O大会上就推出来了,经历这两年的迭代,功能已经非常的成熟了。...一次偶然的机会,在项目中尝试了使用约束布局,从此被它的功能所深深折服。它能很轻易的将你从使用层层的嵌套去实现复杂的布局中解放出来。...(与RelativeLayout相似的属性toRightOf等一整套的属性): 如果你想使用RelativeLayout中的toLeftOf或者toRightOf等属性,约束布局同样提供了一套类似的属性...referenced_ids中申明的控件组的可见性了。...据统计,使用约束布局替代以前的嵌套结构可以提升40%的速度。如果你嵌套的层次越多,提升的效果越明显。
Android侧滑框架 前两天看到一篇文章介绍了一些开源框架,其中无意间看到了这个SmartSwipe的侧滑框架,根据上面的介绍及演示的动态效果,使用起来确实很不错,于是自己做了个Demo后,发现效果确实不错...SmartSwipe简价 微卡智享 这里我贴上原作者的博客地址:https://qibilly.com/SmartSwipe-tutorial/ SmartSwipe这个侧滑框架确实像他介绍的一样,侧滑手势在...实现效果 代码实现 微卡智享 我们新建一个Android的项目SmartSwipe,在build.gradle中加入SmartSwipe的引用。...,可以看到我们在滑动后根据滑动的方向在原来的文本中显示了出来 ?...百叶窗返回效果 这里我们用滑动方式打开新的Test的那个Activity,然后在TestActivity中也加入滑动效果用于关闭时使用。
catch(Exception e) { Toast.makeText(getApplicationContext(), "保存SD卡中的短信失败...service4.ReadfileToSD(filename)); Toast.makeText(getApplicationContext(), "读取SD卡中的短信成功...catch(Exception e) { Toast.makeText(getApplicationContext(), "读取SD卡中的短信失败...file.delete(); Toast.makeText(getApplicationContext(), "删除SD卡中的短信成功...catch(Exception e) { Toast.makeText(getApplicationContext(), "删除SD卡中的短信失败
大家好,又见面了,我是你们的朋友全栈君。 最近做了一款Android应用需要输入大量的数据,为了提高体验我想了很多种输入数据的方式,最终采用了两种:二维码扫描和图片识别。...(我只下载了中文和英语包)下载链接:点击打开链接,需要放到手机SD卡根目录,我的应用中直接打包进apk中,免得需要拷贝的麻烦,但是造成的结果就是apk体积变得非常大,各位根据各自的情况做取舍,后面我会贴出打包进...isDirExist("tessdata")){ Toast.makeText(getApplicationContext(), "SD卡缺少语言包,复制中。。。"...=2) Toast.makeText(getApplicationContext(), "复制失败",Toast.LENGTH_LONG).show(); } }; 对SD卡进行文件操作我编辑了一个...try { FileOutputStream out = new FileOutputStream(file1); // 文件输出流、用于将文件写到SD卡中
引言: 在我们每天使用的手机设备中,无时无刻都在进行着数据的存和取。...下面以一个例子说明这两个接口的使用。我们经常会有这样的经历,正发短信了别人来了个电话,接了个电话,返回发信息窗口,前面编写的内容还在,本实例就模拟实现这个功能。...2、File 我们可以将一些数据直接以文件的形式保存在设备中,下面的例子分别举例说明了对文件的读取和从Sd卡中读写文件。...Sd卡中操作,需要在AndroidManifest.xml文件中添加一下许可:
实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果。...之后再Eclipse的Devices中即可看到介入设备。前提是android系统需要Root。如下图: ? 设计实现 创建项目(此过程不做赘述) 在activity_main.xml中设置布局。...,每个文件中只显示简单的文本内容,用做演示。...加载3个Fragment到Activity中。...//int i = currIndex + 1; // Toast.makeText(MainActivity.this, "您选择了第"+i+"个页卡", Toast.LENGTH_SHORT
| 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 ) 博客中讲解了布局文件中的背景如何处理 , 自定义组件在 GPU 渲染过程中过度绘制如何进行处理 ; 还有 Android...系统针对 CPU 传递数据到 GPU 进行的优化 ; 耗时操作总结 : 在 【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析...| 渲染过程与优化 ) 博客中分析了图像渲染的 16 毫秒过程中 CPU 渲染 CPU 传递数据到 GPU GPU 渲染 是三大耗时操作 , 之前的两篇博客针对 GPU 渲染中的过度绘制 , 如何调试...主要是提升 CPU 渲染的速度 , 即减少布局的嵌套 ; 上述优化过程中 , 需求是第一位的 , 不能为了优化而优化 , 假如需求就是这种要求 , 那只能尽最大可能进行 GPU 渲染优化 , 不要盲目追求...- 手机界面窗口 : DecorView 是手机界面布局中的根布局 , 代表了手机屏幕窗口 ; ① 界面内容 : LinearLayout 代表了显示的内容 ; ② 导航栏 : id/navigationBarBackground
="wrap_content" android:layout_height="wrap_content" android:text="张文欣老师回答了您的问题...比如说在一个listView下有个button,listView高度不确定,想让button始终显示,就给listView设置个权重。 为什么这么用会有这样的效果呢?...还有的时候我们布局中不仅一个权重,比如说为了屏幕适配,给布局中的所有子组件都设置权重,那么子组件就会占据权重响应的比例。...上述代码中我们将2个按钮的宽度都设为wrap_content,假设他俩宽度都是2,整个布局宽度为10....这就解释了为什么有时候weight值大,占有的权重反而小。 权重所占的比例与对应的宽度、高度有关,视情况而定,不可死记硬背。 不过要理解的就是分配的是剩下的空间,优先级最低。
" / </LinearLayout </LinearLayout 在这个布局文件中,首先是放置了一个 VideoView,稍后的视频就将在这里显示。...然后在 VideoView 的下面又放置了三个按钮,分别用于控制视频的播放、暂停和重新播放。...首先在 onCreate()方法中仍然是去获取一些控件的实例,然后调用了 initVideoPath()方法来设置视频 文件的路径,这里我们需要事先在 SD 卡的根目录下放置一个名为 movie.3gp...最后在 onDestroy()方法中,我们还需要调用一下 suspend()方法,将 VideoView 所占用的 资源释放掉。...不过,为什么它的用法 和 MediaPlayer 这么相似呢?其实 VideoView 只是帮我们做了一个很好的封装而已,它的背 后仍然是使用 MediaPlayer 来对视频文件进行控制的。
TabHost介绍 TabHost组件可以在界面中存放多个选项卡, 很多软件都使用了改组件进行设计; 1....TabHost常用组件 TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡; TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到..., 那么将TabWidget放到下面, 可能不会显示按钮; 设置权重 : 设置了Fragment组件的权重之后, 就可以成功显示该选项卡按钮; 二....FrameLayout组件 组件作用 : 该组件中定义的子组件是TabHost中每个页面显示的选项卡, 可以将TabHost选项卡显示的视图定义在其中; 设置android自带id : 这个组件的id要设置成...获取TabHost 获取方法 : getHost(); 前提 : 调用getHost()方法获取TabHost组件的方法的前提是在布局文件中, 设置了android自带的id android:id="@
Android提供了对常用音频和视频格式的支持,它所支持的音频格式有MP3(.mp3)、3GPP(.3gp)、Ogg(.ogg)和WAVE(.ave)等,支持的视频格式有3GPP(.3gp)和MPEG-...通过AndroidAPI提供的相关方法,在Android中可以实现音频与视频的播放。 下面介绍使用MediaPlayer播放音频 在Android中,提供了MediaPlayer类来播放音频。...在使用setDataSource()方法装载音频文件后,实际上MediaPlayer并为真正装载该音频文件,需要调用MediaPlayer的prepare()方法去真正装载音频文件。...、暂停/继续和停止功能的简易音乐播放器 将要播放的音频文件上传到SD卡的Music目录中,这里要播放的音频文件为Whistle.mp3 目录如图 布局文件,包括一个文本信息显示控件和三个按钮(播放、..." android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="
怎么样这个够形象了吧,不看效果炫不炫,只看用户用着你的APP满意不满意。大体就是这样,就这样,小编追赶着时代的潮流也设计了一个属于自己的APP。...,所以就用了Bmob,还不错挺容易上手的,就依赖了它的两个库而已,网络请求和模型都是封装好的,我们直接调用就可以。...小编主界面的滑动选项卡用的是PagerSlidingTabStrip+viewpager管理fragment,详细用法大家可以看一下小编的这边博客:Android源码解析-仿今日头条PagerSlidingTabStrip...4.商品详细界面上下滑动头像回到actionbar上 这个效果是小编一直都想实现的,因为技术、时间、能力有限,所以一直没去搞,在网上搜了好多相关的帖子,博客,终于让我找到一个类似的,做了一下改动实现了。...CollapsingAvatarToolbar这个组件实现了这一效果,当然并不是小编写的,只是小编改的,但是能改出来小编也已经很高兴了。给大家看一下布局: <?
中增加activity的申明,如: 3、为什么我找不到 startSubActivity...) 这里三个都不用解释了,与上文对应的东西。...7、无法下载文件到SD卡中 在manifest文件中加上:<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE...=”wrap_content” Android:layout_height=”wrap_content” Android:layout_marginLeft=”10px”...解决办法: 在此工程的androidMainfest.xml文件中对应的Activity中写入 android:windowSoftInputMode=”adjustPan” 或者在配置文件中把布局文件的大小写死
本文实例为大家分享了Android设置控件阴影的方法,供大家参考,具体内容如下 第一种方式:elevation View的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个z值就是View的高度...第二种方式:CardView 今天有空学习了下CardView的使用,既然是使用,不凡使用一个实例操作一下 CardView是Android5.0的新控件,所以我们需要在dependencies中添加支持...card_view:cardPreventConrerOverlap 在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠 我们看一下今天要实现的效果图: ?...有兴趣的朋友可以尝试使用ViewPager+CardView实现卡片画廊的效果 其实CardView的使用相当于加了一个布局使用,其CardView里面内容的实现,还是在布局中设计 银行卡布局: <..." android:layout_height="wrap_content" android:text="储蓄卡" android:textColor
领取专属 10元无门槛券
手把手带您无忧上云