Androidc学习笔记二之四大布局及碎片理解用法

本文介绍了Android开发中的四大布局概念,讲解了ListView的使用,包括如何通过适配器展示数据,并提到了RecycleView作为替代选项,解释了其更复杂的事件监听机制。此外,文章还深入探讨了Fragment,强调了它在不同屏幕尺寸设备上的优势,以及如何静态和动态地添加Fragment到活动中。
摘要由CSDN通过智能技术生成

android中四大布局、ListView的用法和理解、RecyclerView的用法和理解、android中碎片的理解和用法

android中的四大布局;

LinearLayout(流式布局)  其中学到layout_weight权重值概念权重值概念
relativeLayout(相对布局) 其中layout_alignParentTop/right/left/botton="true"....
                         layout_above/below="@id/button1"  layout_toright/left="@id/button1"
FrameLayout(帧布局) 应用场景太少,基本就是固定模式主要用到gravity(定重心即可)
PercentFrameLayout(百分比布局) 为了解决百分比占用布局的问题而开发出来的,
 首先这个需要引库在app/build.gradle文件,dependencies比包下添加内容compile'com.android.support:percent:24.2.1'即可,需要同步一下(Sync Now)
用到layout_gravity、layout_width/heightPercent="40%"来运用百分比。
TableLayout表格布局  AbsoluteLayout绝对布局


可以发现我们再android中使用的空间基本都是直接或者间接继承View的,当然除了自定义控件。


ListView控件:最常用也是最难的控件,主要用于数据的显示(主要是android的屏幕空间能够显示的内容太少了)
 ListView用户允许用户上下滑动来展示数据。
 通过构建适配器Adapter来构建索要显示的内容最后将适配器设置(ListView.setAdapter(adapter))到listview上去就搭建成功了。

例子:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.ldp.com.uicustomerviews.MainActivity">
    <!--  <include layout="@layout/title"/> -->

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>


fruit_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/fruit_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/fruit_name"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

FruitBean.class
package com.example.ldp.com.bean;

/**
 * Created by Administrator on 2017/3/6.
 */

public class FruitBean {
    private String name;
    private int imageid;

    public String getName() {
        return name;
    }

    public FruitBean(String name,int imageid){
        this.name = name;
        this.imageid = imageid;
    }

    public int getImageid() {
        return imageid;
    }

}

FruitAdapter.class
package com.example.ldp.com.bean;

import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.ldp.com.uicustomerviews.R;

import java.util.List;

/**
 * Created by Administrator on 2017/3/6.
 */

public class FruitAdapter extends ArrayAdapter<FruitBean> {
    private int resourceId;
    public FruitAdapter(Context context, int textViewResourceId, List<FruitBean> objects) {
        super(context, textViewResourceId, objects);
        resourceId = textViewResourceId;
    }


    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    //convertView用于将之前加载好的布局进行缓存,以便可以重用

        FruitBean fruit = getItem(position);//获取当前项的fruit实例

        View view;
        ViewHolder viewholder;
        if(convertView==null){
            view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
            viewholder = new ViewHolder();
            viewholder.fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
            viewholder.fruitName = (TextView)view.findViewById(R.id.fruit_name);
            view.setTag(viewholder);//将viewHolder存储在View中
        }else{
            view = convertView;//所以当不为空的时候就重用,深化性能
            viewholder = (ViewHolder) view.getTag();//重新获取ViewHolder
        }

        viewholder.fruitImage.setImageResource(fruit.getImageid());
        viewholder.fruitName.setText(fruit.getName());
        return view;
    }

    class ViewHolder{
        /*第一步是缓存布局converView,第二步是缓存控件,当这个布局存在的情况下
        ,自然其中的控件也存在就不用每次都通过findViewById来找实例了,通过这两步实现这个ListView性能优化*/
        ImageView fruitImage;
        TextView fruitName;
    }
}

MainActivity.class
package com.example.ldp.com.uicustomerviews;

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值