资讯详情

Android Studio Notes/学习笔记

学习视频来源:https://www.bilibili.com/video/BV1jW411375J?from=search&seid=16068849106535436916

文章目录

  • 小知识
  • 参考资料
  • 一、关于安卓应用
    • P2 Module
    • P3 项目结构
    • P4 模拟器
    • P8 新建module
  • 二、用户界面设计基础
    • p10 View类
    • ==内边距==
    • p11 ViewGroup类
    • ==外边距==
    • p12 控制UI界面
    • P20 布局管理器简介
    • ==P相对布局管理器==
    • ==P23线性布局管理器==
    • ==P25帧布局管理器==
    • ==p27表格布局管理器==
    • ==p29网格布局管理器==
    • p31布局管理器嵌套
  • 三、基本UI组件
    • p34文本框组件
    • p36编辑框组件
    • p38普通按钮组件
    • p40图片按钮
    • p42单选按钮
    • p44复选框
    • p46日期选择器
    • p47时间选择器
    • p48计时器
  • 四、高级UI组件
    • p50进度条语法
    • p52拖动条语法
    • p54星级评分条语法
    • p56图像视图
    • p58图像切换器
    • ==适配器==
    • p60网格视图
    • p62下拉列表框
    • p64列表视图
    • p66滚动视图
    • p68选项卡

小知识

    • 提示:Alt 回车

    • 注释或取消注释当前或选定的代码块,以双斜杠的形式称为//:Ctrl 斜杠

    • 以/……方式注释:Ctrl shift 斜杠

    • 复制行:ctrl D

    • 重命名:shift F6 相关内容可以更改

    • setings(设置) :ctrl Alt S

      查找类:ctrl N

      自动代码:Ctrl J

      运行:Alt Shift X

      自己在setings新建快捷键设置在中间F10

      提取局部变量:Ctrl Alt V

      提取全局变量:Ctrl Alt F

      提取方法:Shit Alt M

      矩形选区 Alt 左键

    • Alt+Insert构造器/Getter/Setter

      快速将字符串变成常量windows快捷键是Ctrl Alt C

      成为全球变量windows/linux下面的快捷键是Ctrl Alt F

    • 修改版本号:在build.gradle中修改

    img

    • 修改应用图标和名称:Manifest中修改

    红色是修改图标,黄色是修改应用程序名称

    • 设置屏幕方向:在Manifest中添加 android:screenOrientation=“landscape”

      <activity android:name=".MainActivity"     android:screenOrientation="landscape">     <intent-filter>         <action android:name="android.intent.action.MAIN" />          <category android:name="android.intent.category.LAUNCHER" />     </intent-filter> </activity> 
  • 启动Android Studio,菜单"File"-“Setting…”,“Editor”-“Font” 。

参考资料

https://www.jianshu.com/u/0a61c9729dbc

一、关于安卓应用

P2 Module

  • 一个对应多个,一个对应一个

  • :应用名称

    :包名(无中文、数字、空格)

  • SDK版本越低适配性越强

  • 左侧工程结构栏:

    app:一个Module,默认创建的应用程序

  • xml没有应用名预览怎么办?点击小眼睛数第二个打钩

P3 项目结构

P4 模拟器

借助AVD看模拟器

P8 新建module

.file \new \new module

二、用户界面设计基础

p10 View类

    • 位于***android.view***包中 如:android.view.View
  • View类的子类一般位于***android.widget***包中 如:android.widget.TextView

  • View类常用属性:

    android:id = "@+id/user"     //唯一标识
    android:background = "@mipmap/bg"     //设置背景 图片资源
    android:background = "#FF00FF"     //设置背景 颜色值
    

内边距

android:padding = "16dp"    //设置上下左右内边距组件
android:padding = "@dimen/activity_margin"
    //细分:android:paddingLeft = android:paddingStart
    // android:paddingTop 
    // android:paddingRight = android:paddingEnd
    // android:paddingBottom

p11 ViewGroup类

    • 控制View的摆放
  • 继承View类,抽象类,使用子类作为容器

  • 控制其子组件分布时依赖的内部类

    • 设置布局宽度、高度
android:layout_width="100dp"
android:layout_height="100dp"
//FILL_PARENT:与父容器相同
//MATCH_PARENT:与父容器相同
//WRAP_CONTENT:根据自身内容确定

外边距

android:layout_marginLeft //=android:layout_marginStart 
android:layout_marginTop
android:layout_marginRight //=android:layout_marginEnd
android:layout_marginBottom

p12 控制UI界面

建议使用xml布局文件控制UI界面

P20 布局管理器简介

    • :相对布局管理器 (相对其它组件的布局方式)
    • :线性布局管理器 (按照垂直或者水平方向布局的组件)
    • :帧布局管理器 (组件从屏幕左上方布局组件)
    • :表格布局管理器 (按照行列方式布局组件)
    • :绝对布局管理器 (按照绝对坐标来布局组件)
    • :网格布局管理器

P21相对布局管理器

  • (这个是在布局管理器上设置的属性)

    android:gravity    //设置布局管理器中各组件的摆放方式
    android:ignoreGravity   //指定哪一个组件不受上一个属性影响
    
  • (这个是在组件上设置的属性)

     android:layout_above  //指定组件相对于参考组件相对位置
    android:layout_below
    android:layout_toLeftof
    android:layout_toRightof
    
    android:layout_alignParentBottom  //设置组件与布局管理器哪边对齐 bool类型 true对齐
    android:layout_alignParentLeft
    android:layout_alignParentRight
    android:layout_alignParentTop
    
    android:layout_alignBottom  //设置组件与哪个组件的哪边对齐
    android:layout_alignLeft
    android:layout_alignRight
    android:layout_alignTop
    
    android:layout_centerHorizontal  //设置组件位于布局管理器哪个位置
    android:layout_centerInParent
    android:layout_centervertical
    

P23线性布局管理器

  • android:orientation:        //设置布局的方向
    
    • 竖直:

      一行只能放一个组件,组件不会换行

      组件一个一个排到边缘时,剩下的组件不会显示出来

    • 水平:

      一列只能放一个组件

      组件一个一个排到边缘时,剩下的组件不会显示出来

  • android:gravity:        //控制组件的对齐方式
    

    center:居中

    right:居右

    right|bottom:居右下角

  • 子组件属性

    • android:layout_weight:    //设置组件所占权重,组件在父容器 剩余空间 的比例,默认值0
      

      如:在水平布局的LinearLayout中有两个Button,一个占80,一个占120,总宽度为320,则剩余空间120:如果这两个Button的layout_weight属性值都为0,那么这两个按钮都会按原大小显示;如果layout_weight都为1,则一个占140,一个占180。

    • android:layout_gravity        //设置组件位置
      

P25帧布局管理器

  • 组件重叠

android:foreground    //设置前景图像(始终位于最上层的图像)
android:foregroundGravity    //设置前景图像的位置,原尺寸显示,可以只盖住一部分

p27表格布局管理器

  • android:collapseColumns    //设置哪些列被隐藏,列序号从0开始,多个列用“,”表示
    android:stretchColumns    //允许哪些列被拉伸,即自动拉伸适应屏幕剩余空间,列序号同上
    android:shrinkColumns    //允许哪些列被收缩,即当一行内容超出屏幕宽度时,收缩某一列宽度使其它内容显示出来,列序号同上
    
  • **TableRow:**表格行 一个组件占一列

    <TableRow
       android:paddingTop="200dp"> 
    

p29网格布局管理器

  • android:columnCout      //指定网格最大列数
    android:orientation      //当没有为组件分配行和列时,为其设置排列方式,水平或垂直
    android:rowCount      //指定网格的最大行数
    
  • android:layout_column      //指定组件位于网格第几列
    android:layout_columnSpan      //指定组件横向跨几列
    android:layout_columnWeight      //指定组件在水平方向的权重,即分配水平空间的比例
    android:layout_gravity      //设置组件用什么方式占据网格空间
    android:layout_row      //指定组件位于网格第几行
    android:layout_rowSpan      //指定组件纵向跨几列
    android:layout_rowWeight      //指定组件在垂直方向的权重
    

p31布局管理器的嵌套

  • 根布局管理器必须包含xmlns属性
  • 在一个布局文件中,最多只能有一个根布局管理器
  • 不能嵌套太深,太深会影响性能

三、基本UI组件

  • 包括:文本类组件、按钮类组件、日期时间类组件

p34文本框组件

  • 文本框

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:text="@string/name"
        android:textSize="36sp" 
        android:textColor="FFFFFF"/>
    
  • 设置颜色时,可以用RGB,也可以直接用ARGB调透明度

  • 设置单行文本框: (多余字用省略号显示)

    android:singleLine="true"
    

p36编辑框组件

  • 编辑框(文本框组件的子类,文本框的属性都适用)

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/hint_text"/>
    
  • 指定提示信息:

    android:hint="请输入账号"
    
  • 输入密码变成小黑点,即密码框:

    android:inputType="textPassword"    //密码框
    android:inputType="number"    //只能输入数字
    
  • 在编辑框内绘制图像属性

    android:drawableLeft="@mipmap/mc"
        //相当于android:drawableStart
        //类似的有android:drawableBottom
        //android:drawableEnd=android:drawableRight
        //android:drawableTop
    
    • 图片与文字的间距调整:

      android:drawablePadding
      
  • 设置编辑框组件的行数:

    android:lines="5"
    

    输入第六行时第一行不见了,可以滚动鼠标显示

  • :到java咯!

    xml里编辑框id设为et1

    EditText et=(EditText)findViewById(R.id.et1);
    et.getText();
    

p38普通按钮组件

  • 按钮

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="text"/>
    
  • 为按钮设置一个监听器,点击按钮时会触发这个监听器,从而执行相关操作。

    • xml里按钮1的id设为button1,java代码:

      Button button=(Button)findViewById(R.id.button1);
      button.setOnClickListener(new View.OnClickListener() { 
                  
          @Override
          public void onClick(View v) { 
                  
              Toast.makeText(MainActivity.this,"单击了按钮1",Toast.LENGTH_SHORT).show();
          }
      });
      
    • xml里按钮2的id设为button2

      1. 在java的Activity中编写一个包含View类型参数的方法

        public void myClick(View view){ 
                      
            Toast.makeText(MainActivity.this,"单击了按钮2",Toast.LENGTH_SHORT).show();   //编写要执行的动作代码
        }
        
      2. 将xml里按钮2的android.onClick属性指定为步骤1中的方法名

        android.onClick="myClick"
        

p40图片按钮

    • 相同点:单击时都可以触发onClick事件
    • 不同点:ImageButton没有android.text属性,文字是在制作图片时添加的
  • 图片按钮

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/picture"/>
    
    • 去掉多余的灰色背景:

      android:background="#0000"
      

p42单选按钮

  • 单选按钮

    <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="选我"/>
    

    默认选中状态:

    android:isChecked="true"
    
  • 多个单选按钮

    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rg">
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="保密"/>
    </RadioGroup>
                
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交"
        android:id="@+id/button"/>
    
  • RadioGroup rg=(RadioGroup)findViewById(R.id.rg);
    rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
              
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) { 
              
            RadioButton r=(RadioButton)findViewById(checkedId);
            r.getText();
            Toast.makeText(MainActivity.this,"性别:"+r.getText(),Toast.LENGTH_SHORT).show();
        }
    });
    
RadioGroup rg=(RadioGroup)findViewById(R.id.rg);

Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() { 
        
    @Override
    public void onClick(View v) { 
        
        for (int i=0;i<rg.getChildCount();i++){ 
        
            RadioButton r=(RadioButton)rg.getChildAt(i);
            if(r.isChecked()){ 
        
                Toast.makeText(MainActivity.this,r.getText(),Toast.LENGTH_SHORT).show();
                break;
            }
        }
    }
});

p44复选框

  • 复选框

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="显示密码"/>
    

    默认选中状态:

    android:isChecked="true"
    
  • 多个单选按钮

  • 多个复选框

    多复制几个

    <CheckBox
        android:id="@+id/pingguo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="苹果"/>
    <CheckBox
        android:id="@+id/xiangjiao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="香蕉"/>
    <CheckBox
        android:id="@+id/mihoutao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="猕猴桃"/>
    
  • CheckBox apple=(CheckBox)findViewById(R.id.apple);
            apple.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
              
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
              
                    if(apple.isChecked()){ 
              
                        Toast.makeText(MainActivity.this,apple.getText(),Toast. LENGTH_SHORT).show();
                    }
                }
            });
    

p46日期选择器

  • 日期选择器

    <DatePicker
        android:id="@+id/data"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </DatePicker>
    

    java里把继承AppCompatActivity改成继承Activity可以使其完整显示。

  • public class MainActivity extends Activity { 
              
    
        int year,month,day;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) { 
              
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            DatePicker data=(DatePicker)findViewById(R.id.data);
            Calendar calendar=Calendar.getInstance();
            year=calendar.get(Calendar.YEAR);
            month=calendar.get(Calendar.MONTH);
            day=calendar.get(Calendar.DAY_OF_MONTH);
            data.init(year, month, day, new DatePicker.OnDateChangedListener() { 
              
                @Override
                public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
              
                    MainActivity.this.year=year;
                    MainActivity.this.month=monthOfYear;
                    MainActivity.this.day=dayOfMonth;
                    show(year,monthOfYear,dayOfMonth);
                }
            });
        }
    
        private void show(int year,int month,int day){ 
              
            String str=year+"年"+(month+1)+"月"+day+"日";
            Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
        }
    }
    

p47时间选择器

  • 时间选择器

    <TimePicker
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    
  • TimePicker time=(TimePicker)findViewById(R.id.time);
            time.setIs24HourView(true);   //采用24小时进制
            time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { 
              
                @Override
                public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
              
                    String str=hourOfDay+"时"+minute+"分";
                    Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
                }
            });
    

p48计时器

  • 计时器
<Chronometer
    android:layout_width="wrap_content"
    android:

标签: p60圆形连接器圆形连接器插p40j8p

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台