• Android的UI设计


    一、Android控件

    1、TextView

      属性:id、width、height、gravity(对齐方式)、textSize(文字大小)、textColor(文字颜色)

    2、Button

      属性:id、width、height...

      监听器:setOnClickListener()

    3、EditText

      属性:id、width、height、hint、android.maxLines(超出部分)

      方法:getText()

    4、ImageView

      属性:id、width、height、src()

      方法:setImageResource()

    5、ProgressBar

      属性:id、width、height、style、max(最大值)

      方法:控件可见与不可见:setVisibility(visible、invisible、gone)

    6、AlertDialog

      方法:setTitle()、setMessage()、setCancelable(false)(不能通过back键取消)、setPositiveButton()、setNegatiButton()、show()

    7、ProgressDialog

      方法:setTitle()、setMessage()、setCancelable()、show()

    二、布局

    1、LinerLayout

      属性:orientation(当设置为方向是horizontal时,控件宽度不能为match_parent)、layout_gravity、layout_weight

    2、RelativeLayout

      属性:layout_alignParentLeft/Top/Right/bottom、layout_centerInParent

    3、FrameLayout

      所有控件都在布局的左上角

    4、TableLayout

      表格的方式排列控件

      属性:layout_span(占据的空间)、stretchColumns(自动适应屏幕宽度)

    三、自定义控件

    自定义布局

      步骤:1、创建布局

         2、在activity_main.xml中插入<include layout="@layout/布局名">即可引入自己创建的布局

         3、隐藏原系统中自带的布局

    自定义控件

      加载布局title

    public class TitleLayout extends LinearLayout{
      public TitleLayout(Context context,AttributeSet attrs){
        super(context,attrs);
        LayoutInflater.from(context).inflate(R.layout.title,this);  //动态加载布局title
      } }

      修改activity_main.xml

    <com.example.uicustomviews.TitleLayout
      amdroid:layout_width="match_parent"
      android:layout_height="wrap_parent"
      ></com.example.uicustomvices.TitleLayout>

    四、ListView

      数据、构建适配器、控件对象、设置适配器  

    自定义ListView

      1、构建实体类

      2、自定义布局

      3、自定义适配器,extends ArrayAdapter,传递参数包括context、子项布局textViewResource和数据data

      4、重写getView(),在getView()方法中调用getItem()获得当前实体的实例,然后用LayoutInflater将子项加载到布局,获取控件对象,并调用setImageResource()和setText()显示图片和文字。

    优化ListView

      1、避免重复加载布局

      convertView将加载好的布局进行缓存,便于以后重用。

    public View getView(int position,View convertView,ViewGroup parent){
      Fruit fruit = getItem(positiong);
      View view;
      if(convertView == null){
        view = Layoutflater.from(getContext()).inflate(resourceId,null);
      }else{
        viwe = convertView;
      }
      ...... }

      2、避免重复调用findViewById()

      借助ViewHolder

    ......
        ViewHolder viewHolder;
      if(convertView == null){
      view = LayoutInflater.from(getContext()).inflate(resourceId,null);
      viewHolder = new ViewHolder();
      viewHolder.fruitImage = (ImageView)findViewById(R.id.fruit_image);
      
    viewHolder.fruitName= (TextView)findViewById(R.id.fruit_name);
      view.setTag(viewHolder);  //将viewHolder存储都view中。
    }else{
      view = convertView;
      viewHolder = (ViewHolder)view.getTag();  //重获viewHolder
    }
    viewHolder.fruitImage.setImageResuource(fruit.getImageId());
    viewHolder.fruitName.setText(fruit.getName());
    ruturn view;
    }
    class ViewHolder{
      ImageView fruitImage;
      TextView fruitName;
    }

    事件监听

      调用setOnItemClickListener()方法,重写onItemClick(AdapterView<?>parent,View view,int position,long id)方法,通过position来判断点击的是哪个item。

  • 相关阅读:
    关于git 拉取的时候一直弹输入密码的问题
    开始日期结束日期check问题
    关于boostrap 排版问题
    【DP_树形DP专题】题单总结
    【DP_背包专题】 背包九讲
    Ubuntu不卸载ibus前提下安装搜狗输入法
    Ubuntu下Java环境配置
    Ubuntu下gcc及g++环境配置
    Ubuntu下VIM(GVIM)环境配置
    PAT 1065 A+B and C (64bit) (20)
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6051599.html
Copyright © 2020-2023  润新知