Android日常笔记

布局管理器
    常用的布局管理器有:
        线性布局管理器(LinearLayout)
            将组件按照水平方向或者垂直方向排列。
            orientation 方向
                vertical 垂直
                horizontal 水平
            gravity 组件的对齐方式
                垂直布局 left center right
                水平布局 top center bottom
            layout_width 宽度
            layout_height 高度
                wrap_content 包裹内容
                match_parent 与父组件一样
                dp 固定大小
            layout_weight 权重(比例)
            text 文本内容
            textSize 文本字体大小

        相对布局管理器(RelativeLayout)
            参照物:
            1.以父布局为参照 属性值是true或false
                layout_alignParentTop 与父布局的顶部对齐
                layout_alignParentLeft 与父布局的左部对齐
                layout_alignParentRight 与父布局的右部对齐
                layout_alignParentBottom 与父布局的底部对齐
                layout_centerInParent 位于父布局的正中心
                layout_centerHorizontal 位于父布局的水平居中
                layout_centerVertical 位于父布局的垂直居中
            2.以某个组件为参照 属性值是id
                layout_toRightOf 位于某组件的右边
                layout_toLeftOf 位于某组件的左边
                layout_above 位于某组件的上方
                layout_below 位于某组件的下方

                layout_alignRight 与某组件右对齐
                layout_alignLeft 与某组件左对齐
                layout_alignTop 与某组件上对齐
                layout_alignBottom 与某组件下对齐
                layout_alignBaseLine 与某组件水平线对齐

        帧布局管理器(FrameLayout)
            foreground  前景图片
            foregroundGravity 前景图片的对齐方式
        表格布局管理器(TableLayout)
            <TableRow />  表格的行
            表格布局的属性:
                collapseColumns  需要被隐藏的序列号
                shrinkColumns 允许被收缩的列号
                stretchColumns 允许被拉伸的列号
            单元格的属性:
                layout_column 组件位于的列数 ,默认从0开始
                layout_span 合并的列数 
        网格布局管理器(GridLayout)
            orientation 方向 
            columnCount 网格布局的列数
            rowCount 网格布局的行数
            layout_column 组件位于第几列
            layout_raw 组件位于第几行
            layout_columnSpan 合并列
            layout_rowSpan 合并行
            layout_columnWeight 列权重
            layout_rowWeight 行权重
        约束布局管理器(ConstraintLayout)

常用的UI组件
    一、文本类组件
        文本框TextView
            属性:
                text 文本内容
                textSize 文本字体大小
                textColor 文本颜色
                maxLength 文本最大长度
        编辑框EditText
            inputType 输入类型
            hint 提示文本
            drawableLeft 在左方放入图片
    消息提示框
        Toast.makeText(当前的上下文(MainActivity.this),输出的文本,提示的时间).show();

    二、按钮类组件
        普通按钮Button
        

    按钮的点击事件
    button.setOnClickListener(new new View.OnClickListener(){...});

    <Button
        android:onClick="clickMethod"
        android:text="一键登录"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    //定义点击事件
    public void clickMethod(View v){
        Button button = (Button) v;
        Toast.makeText(MainActivity.this,button.getText().toString(),Toast.LENGTH_LONG).show();
    }

    更改按钮的外观:
        1、先在drawable文件--》创建.xml文件
        <?xml version="1.0" encoding="utf-8"?>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <!--填充的颜色-->
            <!--<solid android:color="#80AABD"/>-->
            <!-- 设置4个角的弧形半径-->
            <corners android:radius="10dp"/>
            <!-- 设置文字与按钮边界的间隔-->
            <padding android:bottom="10dp"
                android:top="10dp"
                />
            <!-- 渐变-->
            <gradient android:endColor="#729F3E" android:startColor="#C7D6B6"/>
        </shape>

        2、在布局文件中通过背景引用进来
            <Button
                android:background="@drawable/btn_shape"
                />

    图片按钮ImageButton
         <ImageButton 
             src="图片路径"
             scaleType="图片缩放方式">
        若想要图片按钮周围没有自带的按钮颜色,需设置
        android:background="#0000" 或
        android:background="@null"

    单选按钮
        <RadioGroup>
        <RadioButton>
    获取单选按钮的选中的值:
        在改变单选按钮组的值时获取:
        //方式一:在改变单选按钮组的值时获取:
        /*//1.根据id找到单选按钮组对象
        RadioGroup group = findViewById(R.id.question);
        //给按钮组对象设置监听事件
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                //根据被选中的id找到单选按钮
                RadioButton button = findViewById(i);
                //获取单选按钮的文本
                String answer = button.getText().toString();

                Toast.makeText(MainActivity.this,answer,Toast.LENGTH_LONG).show();
            }
        });*/
        单击第三方按钮时获取:
        //方式二:单击第三方按钮时获取
        //1.根据id找到单选按钮组对象
        RadioGroup group = findViewById(R.id.question);
        //根据id找到按钮
        Button button = findViewById(R.id.confirm);
        //给按钮设置点击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                for (int i=0;i<group.getChildCount();i++){//getChildCount()获取单选按钮组中单选按钮的总个数
                    //此时的i代表每一个单选按钮的下标
                    RadioButton radio = (RadioButton)group.getChildAt(i);//根据下标获取每一个单选按钮
                    //判断当前单选按钮是否被选中
                    if (radio.isChecked()){
                        //获取文本
                        String answer = radio.getText().toString();
                        if (answer.equals("100年")){
                            Toast.makeText(MainActivity.this,"回答正确",Toast.LENGTH_LONG).show();
                        }else{
                            Toast.makeText(MainActivity.this,"回答错误",Toast.LENGTH_LONG).show();
                        }
                    }
                }
            }
        });


    复选按钮
        CheckBox

三、进度条类组件
     进度条ProgressBar
     <ProgressBar
        android:max="200"
        android:progress="100"
        android:progressDrawable="@drawable/img"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
     max:进度的最大值
     progress:当前进度值
     progressDrawable:进度条的图片
     style:进度条的样式
         @style/Widget.AppCompat.ProgressBar.Horizontal
         水平长条
         ?android:attr/progressBarStyleLarge
         圆圈
     拖动条SeekBar
         <SeekBar
        android:id="@+id/seekBar"
        android:max="360"
        android:progress="0"
        android:thumb="@mipmap/ic_launcher"
        android:progressDrawable="@drawable/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

        max 拖动条的最大值
        progress 当前值
        thumb 拖动按钮的样式
        progressDrawable 拖动条的样式

        设置监听事件
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                //当拖动条的值更改时
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                //开始触摸拖动条时
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //停止触摸拖动条时
            }
        });
     星级评分条RatingBar
     <RatingBar
        android:id="@+id/rating"
        android:isIndicator="false"
        android:numStars="5"
        android:rating="5"
        android:stepSize="1"
        android:progressDrawable="@drawable/bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

        isIndicator 是否允许用户进行更改(true禁止更改,false可以更改)
        numStars 星星的总个数
        rating 默认星星数
        stepSize 星星每次更改的个数
        progressDrawable 星星的样式
        
四、图像视图
    <ImageView 
        src="图片路径"
        adjustViewBounds="true"
        maxWidth="最大的宽度"
        maxHeight="最大的高度"
        tint="着色"
        scaleType="缩放方式"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

五、列表类组件
    1.下拉列表
        <Spinner 
        entries="文字数组" />

        通过Java代码加载数组
        Spinner spinner = findViewById(R.id.spinner);
        //数据
        String[] type = new String[]{"全部","推荐","电视剧","电影","综艺","动漫"};
        //数组适配器
        ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,type);
        //给下拉列表设置适配器
        spinner.setAdapter(adapter);

    2.列表视图
        <ListView
        android:divider="@drawable/hr"
        android:dividerHeight="10dp"
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

        divider分割线的样式
        dividerHeight 分割线的高度

    步骤:
        第一:先在主界面编写ListView视图
        第二:新建layout布局,实现每一行的模板界面
        第三:在Java代码中使用简单适配器SimpleAdapter加载数据
    参考代码:
        //根据id找到ListView
        ListView listView = findViewById(R.id.listView);
        //数据
        String[] type = new String[]{"全部","推荐","电视剧","电影","新闻","动漫"};
        //图片的路径
        int[] imgId = new int[]{R.drawable.all,R.drawable.like,
                R.drawable.tv,R.drawable.movies,
                R.drawable.news,R.drawable.dongman};
        //将数组数据转换到List数据  泛型 Map映射
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        for (int i=0;i<type.length;i++){
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("img",imgId[i]);
            map.put("name",type[i]);
            list.add(map);
        }
        //简单适配器
        SimpleAdapter adapter = new SimpleAdapter(this,list,
                R.layout.main,new String[]{"img","name"},
                new int[]{R.id.img,R.id.tv});

        //给列表视图设置适配器
        listView.setAdapter(adapter);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ListView实现的GridView效果,其中每个子元素可以设置自己的占位,比如当前元素占几行几列(rowSpan 和columnSpan),所以看起来就像一个不规则的随机的网格布局。项目地址:https://github.com/felipecsl/AsymmetricGridView 效果图:使用说明:xml<com.felipecsl.asymmetricgridview.library.widget.AsymmetricGridView     xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@ id/listView"     android:layout_width="match_parent"     android:layout_height="match_parent"/>activity中:@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     listView = (AsymmetricGridView) findViewById(R.id.listView);     // Choose your own preferred column width     listView.setRequestedColumnWidth(Utils.dpToPx(this, 120));     final List<AsymmetricItem> items = new ArrayList<>();     // initialize your items array     adapter = new ListAdapter(this, listView, items);     listView.setAdapter(adapter); }支持追加更多的元素:// Will append more items at the end of the adapter. listView.getAdapter().appendItems(moreItems); // resetting the adapter items. Will clear the adapter // and add the new items. listView.getAdapter().setItems(items);设置是否重新排列达到更好的显示效果:// Setting to true will move items up and down to better use the space // Defaults to false. listView.setAllowReordering(true); listView.isAllowReordering(); // true设置item的占位:item 一般这样定义:public DemoItem(final int columnSpan, final int rowSpan, int position) {     this.columnSpan = columnSpan;     this.rowSpan = rowSpan;     this.position = position; }columnSpan 和rowSpan分别代表列占位和行占位。说明:目前当item的rowSpan = 2 columnSpan = 2时可以达到最佳的状态。这个后续会继续改进。item的大小越统一,效率越高,特殊大小的元素少于20%是比较理想的状态。不然没法在不预留很多空位的情况下,合理的显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值