zoukankan      html  css  js  c++  java
  • 第二章、android入门

    安卓入门

    三、布局

    1、LinearLayout
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@drawable/ic_baseline_ac_unit_24"  :分割线
        android:dividerPadding="10dp"   :设置分隔线的padding
        android:gravity="center_vertical"   :控制组件所包含的子元素的对齐方式,可多个组合
        android:orientation="vertical"  :布局中组件的排列方式
        android:showDividers="middle"   :设置分隔线所在的位置,none(无),beginning(开始),end(结束),middle(每两个组件间)
        >
    
        <LinearLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center" :控制该组件在父容器里的对齐方式
            android:layout_weight="1"   :(权重)该属性是用来等比例的划分区域
            android:background="#ffff0000"  :为该组件设置一个背景图片,或者是直接用颜色覆盖
        />
    
        <LinearLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#ff00ff00" />
    
        <LinearLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#ff0000ff" />
    
    </LinearLayout>
    
    2、RelativeLayout
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp">
    
        <RelativeLayout
            android:id="@+id/layout1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentBottom="true" :对齐父容器底部
            android:layout_centerHorizontal="true"  :中间水平方向
            android:background="@color/red" 
        />
    
        <RelativeLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_above="@id/layout1"  :参照布局的上方
            android:layout_margin="10dp"
            android:layout_toRightOf="@id/layout1"  :参照布局的右边
            android:background="@color/green" 
        />
    
    </RelativeLayout>
    
    3、FrameLayout
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <FrameLayout
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@color/red"
            android:foreground="@drawable/ic_baseline_ac_unit_24"   :设置前景
            android:foregroundGravity="right|bottom"    :设置前景位置
        />
    
    </FrameLayout>
    
    4、TableLayout
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:collapseColumns="0" :设置需要被隐藏的列的序号,从0开始
        android:shrinkColumns="1"   :设置允许被拉伸的列的列序号,从0开始
        android:stretchColumns="1"  :设置允许被收缩的列的列序号,从0开始
        >
    
        <TableRow>
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="1"   :显示在第几列
                android:layout_span="2" :横向跨几列
                android:background="@color/green"
                android:text="单元格" />
        </TableRow>
    </TableLayout>
    
    5、GridLayout
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnCount="2" :设置行的显示个数
        android:orientation="vertical"  :设置水平显示还是垂直显示
        android:rowCount="2"    :设置列的显示个数
        >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_row="1"  :显示在第几行
            android:layout_rowSpan="2"  :横向跨几行
            android:layout_rowWeight="1"    :纵向剩余空间分配方式
            android:layout_column="1"   :显示在第几列
            android:layout_columnSpan="2"   :横向跨几列
            android:layout_columnWeight="1" :横向剩余空间分配方式
            android:layout_gravity="fill"   :在网格中的显示位置
            android:background="@color/green"
            android:text="单元格" />
    </GridLayout>
    

    四、列表

    1、ListView
    • activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>
    
    • list_item.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30sp" />
    
    </LinearLayout>
    
    • MainActivity
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Integer[] data = {5, 8, 3, 4, 9, 2, 7, 6, 1, 5, 8, 3, 4, 9, 2, 7, 6, 1, 5, 8, 3, 4, 9, 2, 7, 6, 1, 5, 8, 3, 4, 9, 2, 7, 6, 1};
            Context context = this;
    
            ListView listView = findViewById(R.id.lv);
            listView.setAdapter(new BaseAdapter() {
                @Override
                public int getCount() {
                    return data.length;
                }
    
                @Override
                public Object getItem(int position) {
                    return null;
                }
    
                @Override
                public long getItemId(int position) {
                    return position;
                }
    
                final class ViewHolder {
                    TextView textView;
                }
    
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    ViewHolder viewHolder;
                    if (convertView == null) {
                        viewHolder = new ViewHolder();
                        convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
                        viewHolder.textView = convertView.findViewById(R.id.tv);
                        convertView.setTag(viewHolder);
                    } else {
                        viewHolder = (ViewHolder) convertView.getTag();
                    }
                    viewHolder.textView.setText("林志玲" + data[position]);
    
                    return convertView;
                }
            });
    
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Log.e("ll", position + "");
                }
            });
        }
    }
    
    2、RecyclerView
    • build.gradle
    dependencies {
        // 添加Recyclerview依赖包
        implementation 'androidx.recyclerview:recyclerview:1.1.0'
    }
    
    • activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>
    
    • recyclerview_item.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30sp" />
    
    </LinearLayout>
    
    • MyAdapter
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    
        private Integer[] data;
        private Context context;
    
        public MyAdapter(Integer[] data, Context context) {
            this.data = data;
            this.context = context;
        }
    
        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View itemView = View.inflate(context, R.layout.recyclerview_item, null);
            return new MyViewHolder(itemView);
        }
    
        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            if (position % 4 == 0) {
                holder.tv.setText("孟美岐,黄婷婷" + data[position]);
            } else {
                holder.tv.setText("鞠婧祎" + data[position]);
            }
        }
    
        @Override
        public int getItemCount() {
            return data.length;
        }
    
        public class MyViewHolder extends RecyclerView.ViewHolder {
            private TextView tv;
    
            public MyViewHolder(@NonNull View itemView) {
                super(itemView);
                tv = itemView.findViewById(R.id.tv);
    
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (mOnItemClickListener != null) {
                            mOnItemClickListener.onRecyclerItemClick(getAdapterPosition());
                        }
                    }
                });
            }
        }
    
        private OnRecyclerItemClickListener mOnItemClickListener;
    
        public void setmOnItemClickListener(OnRecyclerItemClickListener listener) {
            mOnItemClickListener = listener;
        }
    
        public interface OnRecyclerItemClickListener {
            void onRecyclerItemClick(int position);
        }
    }
    
    • MainActivity
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Integer[] data = {5, 8, 3, 4, 9, 2, 7, 6, 1, 5, 8, 3, 4, 9, 2, 7, 6, 1, 5, 8, 3, 4, 9, 2, 7, 6, 1, 5, 8, 3, 4, 9, 2, 7, 6, 1};
    
            RecyclerView recyclerView = findViewById(R.id.rv);
    
            // 线性布局
            // LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            // recyclerView.setLayoutManager(linearLayoutManager);
    
            // 网格布局
            // GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
            // recyclerView.setLayoutManager(gridLayoutManager);
    
            // 瀑布流
            StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, LinearLayout.VERTICAL);
            recyclerView.setLayoutManager(staggeredGridLayoutManager);
    
            MyAdapter myAdapter = new MyAdapter(data, this);
            recyclerView.setAdapter(myAdapter);
    
            myAdapter.setmOnItemClickListener(new MyAdapter.OnRecyclerItemClickListener() {
                @Override
                public void onRecyclerItemClick(int position) {
                    Log.e("ll", position + "");
                }
            });
        }
    }
    
  • 相关阅读:
    C++中static修饰的静态成员函数、静态数据成员
    C++友元函数、友元类
    C++异常处理
    运行时类型识别RTTI
    AD转换
    敏捷模式下的测试用例该如何存在?
    使用Postman轻松实现接口数据关联
    接口测试Mock利器-moco runner
    python测开平台使用dockerfile构建镜像
    MySQL – 用SHOW STATUS 查看MySQL服务器状态
  • 原文地址:https://www.cnblogs.com/linding/p/15497788.html
Copyright © 2011-2022 走看看