zoukankan      html  css  js  c++  java
  • UI的设计,适配器,以及RecyclerView无法加载的解决办法

    这本书里讲到的界面设计都是用最基本的方式实现的,即编写xml文件

    所有的控件都具有宽度和高度属性,即android:layout_width和android:layout_height,这两个属性对应的值有三个,分别为wrap_content和match_parent和fill_parent,后两个的意义相同,都表示和父类控件的属性相同,前面那个则表示控件刚好包好里面的内容,即内容决定控件大小.

    常用控件

    TextView,是最简单的一种控件,用于界面上显示一些信息

    Button,顾名思义,表示按钮,属性与TextView基本相同,可以利用textAllCaps来对按钮上的字的字母大小写进行设置

    EditText,用于输入和编辑内容,比如QQ发信息,是用户交互中一个很重要的控件,重要属性:maxlines,通过他来限制输入的最大行数,防止不断被拉长

    ImageView,展示图片的控件,图片通常放在drawable目录当中,属性跟前面大致相同

    ProgressBar,在界面上展示一个进度条,用来表示程序加载进度,可以通过android:visibility来控制其可见性,有visible,invisible,gone三个值

    AlertDialog,用于弹出对话框,并且这个框可以屏蔽屏幕上各个控件的交互能力,一般用于提示警告信息

    ProcessDialog,跟上面AlertDialog类似,都是弹出对话框并屏蔽其他控件,不同的是它显示的是进度条

    自定义控件

    自定义控件其实也就是重写一个类,继承已有的类,然后再继续编写,这样就能减少重复的代码,这里着重

    要说的应该是适配器的使用,这里是镶嵌在ListView里面讲的,为什么讲ListView要说适配器.ListView

    是用来展示大量数据的,但是例如一个数组,里面的数据是不能直接传递给ListView我们需要借助适配器来完成

    我简单理解为一个盒子,这样我们就可以将东西装在盒子里面然后装上货车,而不是把东西直接放上货车


    ListView性能优化,ListView很难用的原因之一就是它有很多地方可以优化,就例如在这个方法中


    这里每次调用这个函数的时候,不管他里面有没有元素,都会讲布局重新加载一遍,这样,当布局的数量逐渐多起来

    并且快速滑动的时候,时间复杂度也会跟着上来,所以这里还有优化的空间,而切入点就从加载布局这里下手,我们设置

    一个判断条件,如果调用这个函数的时候,convertView这个外部变量里面没有元素,则加载布局,否则不加载,这样就在

    一定程度上提高了性能


    书中还讲到的一个优化的地方便是建一个缓存了,用来存放加载完成的控件的实例,放在我们自己

    定义的ViewHolder类里面,这样在convertView不为空的时候,通过getTag取出,避免每次都用

    findViewById()来找布局了

    最后说一说

    RecyclerView

    不详细讲用法什么的了,讲一讲需要注意的地方,之前做那个聊天界面的时候,我的程序程序总是只能显示输入框,然而却没

    没有出来信息,我找遍了整个程序,好吧再强的大脑也不能媲美编译器,最后缴械投降,我再自定义布局的函数里都加了一句Log.d("#####","####"),来看着部分代码有没有执行,类似这样

    点一下按钮就看一下日志,最后发现是onCreateVieHolder那个函数压根没有调用,最后各种找教程我找到了几个原因

    onCreateViewHolder没有加载有以下四种可能
    1,没有用layoutManager
    2,没有用scrollView嵌套RecyclerView,这个其实问题不大,但听网上大牛说在某些版本里面不嵌套不行
    3,getItemCount这个函数返回非正数,返回负数和0是不能显示出的
    4,最外层的LinearLayout的属性里没有设置orientation,并且要定为"vertical",这样才能加载出来

  • 相关阅读:
    A simple class to play sound on netcf
    NETCF运行平台检测
    [翻译]XNA 3.0 Game Programming Recipes之thirtynine
    [翻译]XNA 3.0 Game Programming Recipes之thirtyfour
    [翻译]XNA 3.0 Game Programming Recipes之thirtyseven
    [翻译]XNA 3.0 Game Programming Recipes之thirtysix
    [翻译]XNA 3.0 Game Programming Recipes之thirtyfive
    [翻译]XNA 3.0 Game Programming Recipes之forty
    [翻译]XNA 3.0 Game Programming Recipes之thirtyeight
    [翻译]XNA 3.0 Game Programming Recipes之fortyone
  • 原文地址:https://www.cnblogs.com/Yintianhao/p/9157402.html
Copyright © 2011-2022 走看看