Android studio基础笔记

Posted www?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android studio基础笔记相关的知识,希望对你有一定的参考价值。


Android studio程序及jdk:

提取码:dfjk

Android studio常用快捷键:

一、安装后修改配置

(1)第一种修改方式:

下面两个博客可以一次性解决版本不同的问题,可以参考一下

参考1:

参考2:

(2)第二种修改方式:

*每次创建项目都要重新修改

二、用户界面基础

(1)UI界面

​ UI(User Interface)是介于用户与硬件而设计彼此之间互动沟通的相关软件。
​ 目的在于用户能够方便有效率地去操作硬件以达成双向互动,完成希望借助硬件完成的工作。
​ 在android应用中,界面是由布局和控件组成的。

(2)View视图

​ 所有的UI元素都是通过View与ViewGroup构建的。对于一个Android应用的用户界面来说,ViewGroup作为容器盛装界面中的控件,它可以包含普通的View控件,也可以包含ViewGroup。

​ Android应用的每个界面的根元素必须有且只有一个ViewGroup容器。

(3)常用资源存储

(4)Android程序结构


三、界面布局

​ Android系统提供的6种常用布局直接或者间接继承自
ViewGroup,因此它们也支持在ViewGroup中定义的属性,
这些属性可以看作是布局的通用属性。

(1)线性布局(LinearLayout)

​ 线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。

设置控件排列方式:

“vertical”控件垂直排列时,显示顺序依次为从上到下。

”horizontal“控件水平排列时,显示顺序依次为从左到右

android:orientation="vertical"

例如:(textAllCaps=“false” 设置字母小写)

(2)单帧布局(FrameLayout)

​ 帧布局(FrameLayout)用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层
所有控件都默认显示在屏幕左上角。

定义格式:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    属性 ="属性值">
</FrameLayout>

例如:

(3)表格布局(TableLayout)

​ 采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在TableLayout布局中添加TableRow布局来控制表格的行数,通过在TableRow布局中添加控件来控制表格的列数。

定义格式:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
             属性 = ”属性值”>
             <TableRow>
UI控件
             </TableRow>
                 ......
</TableLayout>


(4)相对布局(RelativeLayout)

​ 相对布局(RelativeLayout)是通过相对定位的方式指定子控件
位置,即以其它控件或父容器为参照物,摆放控件位置。

定义格式:

 <RelativeLayout   xmlns:android="http://schemas.android.com/apk/res/android"
属性 = "属性值"
......>
</RelativeLayout>

控件位置属性:

例如:

(5)坐标布局(AbsoluteLayout)

​ 坐标布局的子控件需要指定相对于此坐标布局的横、纵坐标值,
否则将会像FrameLayout那样被排在左上角。手机的应用程序需
要适用于不同的屏幕大小,而这种布局模型不能自适应屏幕尺
寸大小,因此应用的比较少

定义格式:

     <AbsoluteLayout   mlns:android="http://schemas.android.com/apk/res/android"
属性 = "属性值"
......>
</AbsoluteLayout>

例如:

(6)网格布局(GridLayout)

​ 网格布局将整个界面划分成rows*columns个网格。每个网格可
以设置一个组件。除此之外,也可以设置一个组件横跨多少列,
一个组件纵跨多少行。提供了setRowCount(int)和
setColumnCount(int)方法来控制网络的行数量和列数量。该布局
中的子控件可以不用设置宽度和高度。

定义格式:

    <GridLayout   mlns:android="http://schemas.android.com/apk/res/android"
属性 = "属性值"
......>
</GridLayout>

常用属性:

例如:

四、界面控件

(1)TextView以及子类

TextView的子类: CheckedTextView、EditText、Button。
Button的子类:CheckBox,RadioButton

1.常用属性:


*single:单行模式
*ellipsize:设置文字缩略方式
值为marquee时,需要配合marqueeRepeatLimit、focusable、focusableInTouchMode属性实现文字滚动效果
*autoLink:设置文本内容中的邮箱、电话等链接

*background:默认情况下,TextView是不带边框的,如果想设置边框,需要为TextView设置一个背景图片,该图片只是一个边框。 为文本框设置背景资源,背景图片可以使用shape资源文件作为图片使用

2.shape资源文件属性:

(1)stroke :边框效果 相当于html中的盒子模型的border
属性: android:width:描边的宽度
android:color:描边的颜色
android:dashWidth:表示边框的样式是虚线的宽度,
值为0时,表示为实线。
值大于0则为虚线。
android:dashGap :表示描边为虚线时, 虚线之间的间隔 即"- - - "

(2)padding :内部边距,即内容与边的距离
属性: android:left :左内边距
android:top :上内边距
android:right:右内边距
android:bottom :下内边距

(3)corners : 圆角
属性:android:radius:半径
android:topLeftRadius :左上角半径
android:topRightRadius :右上角半径
android:bottomLeftRadius :右下角半径
android:bottomRightRadius :左下角半径

(4)solid :内部填充
属性 android:color :填充颜色
(5)gradient : 渐变色
属性: android:startColor : 起始颜色
android:endColor :结束颜色
android:centerColor :渐变中间颜色
android:angle :渐变角度(PS:当angle=0时,渐变色是从左向右。
然后逆时针方向转,当angle=90时为从下往上。angle必须为45的
整数倍)
属性: android:type : 渐变类型(取值:linear、radial、sweep)
linear :线性渐变,这是默认设置
radial :放射性渐变,以开始色为中心。
sweep : 扫描线式的渐变。
android:gradientRadius :渐变色半径.当 android:type=“radial” 时才使用。单独使用 android:type="radial"会报错。

​ 属性 android:useLevel :如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色
​ android:centerX : 渐变中心X点坐标的相对位置
​ android:centerY : 渐变中心Y点坐标的相对位置

3.CheckedTextView:

继承了TextView,增加了check功能
属性:
*android:checked=“true” :是否被选
*android:checkMark=“?android:attr/listChoiceIndicatorMultiple”: 设置勾选状态
*android:clickable=“true”:是否可以被点击
注意:添加CheckedTextView的OnClickListener事件。
在onClick方法中调用toggle()方法:用于切换选择的状态

Toast是Android系统提供的轻量级信息提醒机制,用于向用户提示即时消息,它显示在应用程序界面的最上层,显示一段时间后自动消失不会打断当前操作,也不获得焦点。

例如:

private CheckedTextView ch_tv; 
ch_tv=findViewById(R.id.ch_tv);
        ch_tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //状态切换
                ch_tv.toggle();
                if(ch_tv.isChecked())
                    Toast.makeText(TvActivity.this,"音效已开启",Toast.LENGTH_LONG).show();
                else
                    Toast.makeText(TvActivity.this,"音效已关闭",Toast.LENGTH_LONG).show();
            }
        });
 <CheckedTextView
            android:id="@+id/ch_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            android:checkMark="?android:attr/listChoiceIndicatorMultiple"
            android:checked="false"
            android:clickable="true"
            android:text="是否打开音效"
            android:textSize="30sp"
            />

4.文本框(EditText)

–EditText:继承了TextView,可以编辑内容的文本框
–EditText组件的常用属性:

5.按钮及点击事件(Button)

–Button控件表示按钮,它继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作,当Button控件被点击时,被按下与弹起的背景会有一个动态的切换效果,这个效果就是点击效果 。
Button的4种点击事件实现方式:

6.背景选择器(selector)

Button的点击效果:

–通过background属性实现
①使用selector文件实现Button点击和释放是显示不同效果
②该属性可以是颜色,静态图片和shape的边框文件。但是这情况下单击按钮不会出现任何效果。

–selector定义的基本格式:

<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
 <item  android:state_selected=true”
 android:drawable="@color/color1"/>
<item android:state_focused="true" 
      android:drawable="@color/color2" />
<item android:state_pressed="true" 
       android:drawable="@color/color3“/>
<item android:drawable="@color/color1" /> 
</selector>

–selector使用注意事项:

①每个item对应一种状态
②在定义selector的时候,根据不同的目的,选择不同的item属性,例如,为了定义组件的背景,需要使用android:drawable
③statelist中第一个匹配当前状态的item会被使用。因此,如果第一个item没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后

7.单选框(RadioButton)

–RadioButton为单选按钮,android:checked属性指定是否选中的状态。
–RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。
–语法格式

  <RadioGroup
android:属性名称 ="属性值"
                   ......>
<RadioButton
        android:属性名称 ="属性值"
                          ....../>
......
          <RadioGroup/>

例:

xml文件:

 <RadioGroup
            android:id="@+id/radioGroup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"
                android:textSize="25sp"
                />

            <RadioButton
                android:id="@+id/women"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女"
                android:textSize="25sp" />
        </RadioGroup>

单选点击事件:

private RadioGroup radioGroup;
 radioGroup=findViewById(R.id.radioGroup);
      radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId==R.id.man)
                    Toast.makeText(TvActivity.this,"你选择的性别为:男",Toast.LENGTH_LONG).show();
                if(checkedId==R.id.women)
                    Toast.makeText(TvActivity.this,"你选择的性别为:女",Toast.LENGTH_LONG).show();
            }
        });

8.复选框(CheckBox)

–CheckBox表示复选框,它是Button的子类,用于实现多选功能,通过android:checked属性指定CheckBox控件是否选中的状态。

private CheckBox checkBox1;
final Set<String>  hoppy = new HashSet<String>();


checkBox1= findViewById(R.id.yu);
        checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked)
                    hoppy.add("羽毛球");
                else
                    hoppy.remove("羽毛球");
                Toast.makeText(TvActivity.this,"你的爱好是:"+hoppy,Toast.LENGTH_LONG).show();
            }
        });

xml文件:

<CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:text="羽毛球"
            android:id="@+id/yu"/>

换种写法:

 private String hobbys;
    private TextView hobby;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_checkbox);
        CheckBox checkBox1 = findViewById(R.id.checkbox1);
        CheckBox checkBox2 = findViewById(R.id.checkbox2);
        CheckBox checkBox3 = findViewById(R.id.checkbox3);
        hobby = findViewById(R.id.hobby);
        checkBox1.setOnCheckedChangeListener(this);
        checkBox2.setOnCheckedChangeListener(this);
        checkBox3.setOnCheckedChangeListener(this);
        hobbys = new String();
    }

    @Override
    public void onCheckedChanged(CompoundButton bottonView, boolean b) {
        String text = bottonView.getText().toString();
        if (b) {
            if (!hobbys.contains(text)) {
                hobbys = hobbys + text;
                hobby.setText(hobbys);
            }
        } else {

            if(hobbys.contains(text)){
                hobbys = hobbys.replace(text,"");
                hobby.setText(hobbys);
            }
        }
    }

xml文件:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择兴趣爱好"
        android:textColor="#FF8000"
        android:textSize="18sp"/>
   <CheckBox
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/checkbox1"
       android:text="羽毛球"
       android:textSize="18sp"/>
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/checkbox2"
        android:text="篮球"
        android:textSize="18sp"/>
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/checkbox3"
        android:text="乒乓球"
        android:textSize="18sp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FF8000"
        android:textSize="22sp"
        android:text="您选择的兴趣爱好为:"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/hobby"
        android:textSize="18sp"
        />

(2)ImageView以及子类

​ ImageView表示图片,它继承自View,可以加载各种图片资
源。

1.ImageButton

​ ImageButton显示图片,它继承自ImageView,拥有
ImageView的属性和方法,不过ImageButton有默认的按钮
外观。

​ 在ImageButton中载入图片后,图片周围有白边,影响到美观。解决这个问题的方法有两种:
•一种方法是将ImageButton的背景改为所需要的图片。
​ 如:android:background="@drawable/XXX"
•第二种方法就是将ImageButton背景改为透明, 这个方法更常用。在XML里;
<ImageButton android:background="#00000000" …/>

例如:

private ImageButton imageButton;
    private ImageView imageView;
    private int[] images={R.drawable.dog4,R.drawable.dog3,R.drawable.dog2,R.drawable.dog1};
    private int count = -1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_image);

        imageButton = findViewById(R.id.Image_button);
        imageView = findViewById(R.id.Image_View);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(count==3) count = -1;
                imageView.setImageResource(images[++count]);
            }
        });
    }

xml:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/dog1"
        android:id="@+id/Image_View"
        以上是关于Android studio基础笔记的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

在Android Studio片段之间切换时地图片段不隐藏

Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段

如何在android studio中用另一个片段替换一个片段

Android studio基础笔记