关于android textview,edittext,导致界面的卡顿

我们在平时使用textview和edittextview的时候总是很随意的编写它相应的xml,但是当你的界面中存在滑动之类的效果的时候如果你不注意,你可能会发现你的界面居然有时候会有很卡的感觉,具体为什么卡,卡在哪里我们往往摸不着头脑,明明一点耗时的操作都没有,界面就多了一句,textview的settex函数,怎么就卡的不成样了,我们有时候会去怀疑android 的机制没苹果的好。其实具体原因还在于我们对控件不够了解。

当一个界面里面存着类似scrollview或者listview这种控件的时候,我们需要滑动界面,而有时候滑动的界面都有相应的textview做说明,但是一滑动就发现界面特别卡。如果出现这种情况注意下你的xml对textview的宽高做设置的时候是不是设置成了wrapcontent,这个时候把他设置成fillparent就好了。当然有时候fillparent也不好用,因为如果你的textview的父view的长宽也是一个变化的值的话,也有可能导致卡顿。

为什么使用wrapcontent后就会出现卡顿呢。思索后发现,滑动的时候其实listview或者scrollview都在对他的子view进行重绘。而在这个时候textview如果进行滑动的时候进行设置,比如利用textview进行修改内容。这个时候textview因为设置的内容长度发生了变化,所以导致跟父view的重绘,计算长宽发生了冲突。所以,为了避免这种冲突,textview的长宽必须是父view可计算的。所以要不你设置成fillparent要不你就固定一个长宽,这些都可以解决textview设置内容的时候导致界面的卡顿。总之在你没法查找到卡顿的根源的时候,去看看父view的长宽是不是收到了子view的影响。

其实在网上很多关于listview滑动发生卡顿,其实总结的不是很完善,大部分是对listview设置成fillparent之类的说法,很多说getview不断的重复调用,跟这个也有关系。这些其实很多都是由于textview的长宽不是一个定值或者不可测导致。不信你把他们写死成一个值,你就会发现界面顺滑无比。

时间: 2024-08-24 02:10:02

关于android textview,edittext,导致界面的卡顿的相关文章

解决android中EditText导致的内存泄漏问题

开发中用到了LeankCanary,在一个简单的页面中(例如 :仅仅 包含Edittext),也会导致内训泄漏,为此,我在网上找了大量资料,最终解决.例如一个布局:<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:focusable="true"android:focusableInTouchMode=&qu

Android App 优化之消除卡顿

转载:http://gold.xitu.io/post/582583328ac247004f3ab124 1, 感知卡顿 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI渲染性能. 如果我们的UI设计过于复杂, 或是实现不够好, 设备又不给力, 界面就会像卡住了一样, 给用户卡顿的感觉. 1.1 16ms原则 在剖析卡顿的原因之前, 我们先来了解下Android中著名的"16ms"原则: Android系统每隔16ms会发出VSYNC信号重绘我们的界面(A

Android app优化之导致app 卡顿慢的直接原因

大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验.但是Android系统很有可能无法及时完成那些复杂的界面渲染操作.Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成()时间超出16ms越多,丢的帧就越多,可以大概估计一下Android 5秒没响应抛

界面使用webview,并且webview里面有图片进行自动切换导致界面上滚动条卡顿。

最近的项目是用webview做的界面,但是在界面顶端加了android本地动画效果的横向滚动条.当webview里面的图片切换时导致滚动条动画卡顿. 1:setLayerType(View.LAYER_TYPE_SOFTWARE, null); 无论硬件加速是否打开,都会有一张Bitmap(software layer),并在上面对WebView进行软渲染. 设置LAYER_TYPE_SOFTWARE后会把当前view转为bitmap保存.这样就不能开多个webview,否则会报out of m

android listview 每一项都是edittext 导致的坑爹问题 内容的保存和焦点,光标位置的设置

activity布局:布局很简单,只有一个listview <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_

安卓出现错误: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to android.widget.EditText 该种报错信息,检查代码确定无误后,若还是出现这种错误,则可通过以下这个办法进行解决: 点中该项目-->点击Project-->clean   清理下再重新运行该项目,然后就解决了

android viewpager fragment切换时界面卡顿解决办法

目前开发的程序在切换View时界面卡顿现象比较严重,影响用户体验,当前项目共就四个View,每个View也只是按钮,所以可以同时加载,不让其它view销毁. 只需在Adapter中重载destroyItem类即可 @Override public void destroyItem(ViewGroup container, int position, Object object) { //重载该方法,防止其它视图被销毁,防止加载视图卡顿 //super.destroyItem(container,

Android 在安装完成界面,点击打开应用程序。在应用程序点击home键,再从桌面打开程序导致产生多个实例或者说程序被重复打开

Android 在安装完成界面,点击打开应用程序.在应用程序点击home键,再从桌面打开程序导致产生多个实例或者说程序被重复打开. etong_123的专栏 - 博客频道 - CSDN.NET *http://blog.csdn.net/etong_123/article/details/22897731 android:taskAffinity与android:finishOnTaskLaunch之我见 - java豆子 - 博客园 http://www.cnblogs.com/error40

Android中Edittext的属性

//此为转载别人的,挺不错的 1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 (2)在代码里设置: 通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码. editText.setTransformationMethod(PasswordTransformationMethod.getInstance()