Android学习笔记


下篇: https://blog.csdn.net/wang342626/article/details/87917342


Android studio安装步骤

https://blog.csdn.net/siwuxie095/article/details/53431818

真机运行步骤

Android Studio 使用USB真机调试教程教程:
https://blog.csdn.net/fubo1990/article/details/79798328
no target device found 问题解决链接:
https://blog.csdn.net/aaa1050070637/article/details/82146281

一.LinearLayout线性布局

    //宽度高度单位使用dp,不是px. 字体使用sp单位
    layout_width:match_parent 和父亲一样宽
    gravity:center ...//内部元素排列方式

View是所有其他的父类

均分宽度
使用weight

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:background="#00FF00"
    android:layout_marginTop="10dp"

    <view
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"> //均分宽度
    </view>

    <view
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="#FF0000"
        android:layout_weight="1">
    </view>
</LinearLayout>

均分宽度

宽度占五分之二

weight权重,减掉占用的,剩下的平分

二. RelativeLayout 相对布局

android:layout_alignParentBottom="true"  //靠近父亲的底部对
android:layout_toRightOf="@+id/view_1"> // 靠view_1的右边

android:layout_below="@id/view_1"> // 放view_1的下边

更多 https://www.cnblogs.com/tinyphp/p/3787994.html

三: TextView

新手全部流程:

  1. 打开app->src->main->res->layout->activity_main.xml 写入代码
<!--创建一个Button-->
<Button
        android:id="@+id/btn_textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"/>

  1. 打开app->src->main->java->com.*.myApplication->MainActivity.java写入代码
package com.example.qing.myapplication2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

//有的人使用的是 extends AppCompatActivity 与我不一样
public class MainActivity extends Activity {

    //代码1: 首先声明全局的Button
    private Button mBtnTextview;

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

            // 代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
            mBtnTextview = findViewById(R.id.btn_textview);
            // 代码3: 添加Button的点击事件
            mBtnTextview.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    //代码4: 跳转到TextView界面
                    Intent intent =  new Intent(MainActivity.this,TextViewActivity.class);
                    //注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
                    startActivity(intent);
                }
            });
    }
}

  1. 建立一个Activity
     在左侧栏,MainActivity.java处右击, new->Activity->EmptyActivity, 然后起个名字叫TextViewActivity,确定后, 将会自动产生 TextViewActivity.java 和 activity_text_view.xml 这两个文件, 后一个文件在 src->main->res->layout下面
     并且打开 AndroidManifest.xml (app->src->main文件夹下面)看看有没有自动创建下面的代码
<activity android:name=".TextViewActivity" />

 没有自动创建,那就手动添加

  1. 打开activity_text_view.xml, 修改android.support.constraint.ConstraintLayout为
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
android:orientation="vertical"
    tools:context="com.example.qing.myapplication2.TextViewActivity">
<!--android:orientation="vertical"设置为竖行显示-->


    <TextView
        android:id="@+id/tv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     android:text="@string/tv_text1"/>
     <!--@string/tv_text1表示引用strings.xml  ( app->src->main->res->values->strings.xml )
        中的名称为tv_text1的文本,
        需要在那里添加代码<string name="tv_text1">天哥在奔跑</string>  -->
     <!--字体大小单位用sp-->

</LinearLayout

并且编辑 app->src->main->res->values->strings.xml, 添加一个string
<string name="tv_text1">天哥在奔跑</string> 给上面的来引用。
还有最简单的方法就是 直接写
android:text="天哥在奔跑" 简单方便。这样子预览效果为
效果1

5.为了实现文本缩写的效果
在这里插入图片描述
继续添加下面的代码即可

<TextView
        android:id="@+id/tv_2"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
    android:maxLines="1"
    android:ellipsize="end"
        android:textColor="#000000"
        android:textSize="24sp"
        android:layout_marginTop="10dp"
        android:text="天哥在奔跑"/>
   <!--maxLines强制设置为1行文字-->
   <!--ellipsize设置末尾显示不全修改为...-->
   <!--android:text="天哥在奔跑" 等价于上面的引用 --
  1. 为了完成带图标的文本的效果

在这里插入图片描述
写入代码

<TextView
        android:id="@+id/tv_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textSize="24sp"
        android:layout_marginTop="10dp"
        android:text="筛选"
   android:drawableRight="@drawable/icon_arrow_off"
    android:drawablePadding="5dp"
        />
   <!--android:drawableRight="@drawable/icon_arrow_off"表示引用drawable文件夹下面的.png图片,放在文字的右边-->
   <!--android:drawablePadding="5dp"表示离文字距离5单位-->

并且在左侧栏app->src->main->res->drawable文件夹下面添加icon_arrow_off.png即可, 图标可以去阿里巴巴图标库下载 , 注意图标尺寸大小

  1. 为了完成删除线的效果
    删除线效果图
    先在 activity_text_view.xml 文本中创建TextView, 设好id名字
    然后打开 TextView.java 写入代码
package com.example.qing.myapplication2;

import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.widget.TextView;

public class TextViewActivity extends Activity {

    //代码1: 声明全局变量
    private TextView mTv4;

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

        //代码2: 通过id获取TextView
        mTv4 = findViewById(R.id.tv_4);
        //代码3.1: 画一个穿过去的线
        mTv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
        //代码3.2: 去掉锯齿
        mTv4.getPaint().setAntiAlias(true);
    }
}
  1. 为了实现文本加下划线的效果
    下划线效果图

先在 activity_text_view.xml 文本中创建TextView, 设好id名字
然后打开 TextView.java 写入代码

package com.example.qing.myapplication2;

import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;

public class TextViewActivity extends Activity {

    //代码1: 声明全局变量
    private TextView mTv5;

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

        //代码2: 通过id获取TextView
        mTv5 = findViewById(R.id.tv_5);
        //代码3: 画一个下划线
        mTv5.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
    }
}

  1. 实现文本加下划线的另一种方法(HTML代码实现的方法)
    下划线效果图

先在 activity_text_view.xml 文本中创建TextView, 设好id名字,注意这里的text是空文本 android:text="" 这样子
然后打开 TextView.java 写入代码

package com.example.qing.myapplication2;

import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;

public class TextViewActivity extends Activity {

    //代码1: 声明全局变量
    private TextView mTv6;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_view);

        //代码2: 通过id获取TextView
        mTv6 = findViewById(R.id.tv_6);
        //代码3: 设置文本为HTML代码, u表示HTML代码中加了下划线
        mTv6.setText(Html.fromHtml("<u>天哥在奔跑</u>"));
        
    }
}

  1. 为了实现文本跑马灯的效果
<TextView
        android:id="@+id/tv_7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:textSize="24sp"

     android:text="天哥在奔跑天哥在奔跑天哥在奔跑天哥在奔跑"
     android:singleLine="true"
     android:ellipsize="marquee"
     android:marqueeRepeatLimit="marquee_forever"
     android:focusable="true"
     android:focusableInTouchMode="true" />
    <!--文本字多一点,单行显示,滚动方式,永远滚动,并且获得焦点才行-->

四. Button

  1. 打开app->src->main->res->layout->activity_main.xml ,写入代码来创建一个Button, 需要注意父元素的布局如果是LinearLayout则要加上 android:orientation="vertical"
<!--创建一个Button-->
    <Button
        android:id="@+id/btn_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"/>
  1. 建立一个Activity
     在左侧栏,MainActivity.java处右击, new->Activity->EmptyActivity, 然后起个名字叫ButtonActivity,确定后, 将会自动产生 ButtonActivity.java 和 activity_button.xml 这两个文件, 后一个文件在 src->main->res->layout下面
     并且打开 AndroidManifest.xml (app->src->main文件夹下面)看看有没有自动创建下面的代码
<activity android:name=".ButtonActivity"></activity>

 没有自动创建,那就手动添加

  1. 打开 MainActivity.java 写入代码
package com.example.qing.myapplication2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    //代码1: 声明全局的Button
    private Button mBtnButton;

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

            //代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
            mBtnButton = findViewById(R.id.btn_button);
            //代码3: 添加Button点击事件
            mBtnButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    //代码4: 跳转到ButtonAvtivity界面
                    Intent intent = new Intent(MainActivity.this,ButtonActivity.class);
                    //注意这个ButtonActivity.class名称要与上面步骤2创建的ButtonActivity.java名称相匹配
                    startActivity(intent);
                }
            });
    }
}

  1. 打开 activity_button.xml 修改为RelativeLayout布局, 并且写入代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context="com.example.qing.myapplication2.ButtonActivity">

	<!--创建按钮1-->
    <Button
        android:id="@+id/btn_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮1"
        android:textSize="20sp"
        android:textColor="#0066FF"
        android:background="#FF0000"/>

</RelativeLayout>
  1. 为了创建圆角矩形的按钮2
  • 先左侧栏res->drawable右击, new->Drawable resource file,
    在这里插入图片描述
  • 打开bg_btn2.xml 写入代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!--实心橙色-->
    <solid android:color="#FF9900" />

    <!--圆角10dp-->
    <corners android:radius="10dp" />

</shape>
  • 打开 activity_button.xml 写入代码
<!--创建实心圆角矩形按钮2-->
    <Button
        android:id="@+id/btn_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮2"
        android:textSize="20sp"
        android:textColor="#0066FF"
        android:layout_below="@id/btn_1"
        android:layout_marginTop="10dp"
        android:background="@drawable/bg_btn2"/>
    <!--背景调用drawable的实心圆角矩形-->

  • 效果图
    实心圆角矩形效果图
  1. 为了实现按钮3只有边框的效果, 太丑,有待改进
    在这里插入图片描述
  • 先在activity_button.xml中写入代码, 来添加一个button3
<Button
        android:id="@+id/btn_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮3"
        android:textSize="20sp"
        android:textColor="#0066FF"
        android:layout_below="@id/btn_2"
        android:layout_marginTop="10dp"
        android:background="@drawable/bg_btn3"/>
    <!--背景调用drawable的圆角边框矩形-->
  • 然后新建一个Drawable
    在这里插入图片描述

写入代码

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <!--橙色边框 ,一定要有宽度为1dp-->
    <stroke android:width="1dp" android:color="#FF9900"/>

    <!--圆角10dp-->
    <corners android:radius="10dp"/>
</shape>
  1. 为了实现按钮4按压变色的效果
  • 先写入代码,创建一个Button4
<!--按压的效果-->
    <Button
        android:id="@+id/btn_4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮4"
        android:textSize="20sp"
        android:textColor="#0066FF"
        android:layout_below="@id/btn_3"
        android:layout_marginTop="10dp"
        android:background="@drawable/bg_btn4"/>

  • 然后创建一个Drawable
    在这里插入图片描述
    写入代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按压的时候-->
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#CC7A00" />
            <corners android:radius="10dp" />
        </shape>
    </item>

    <!--没有按压时的效果-->
    <item android:state_pressed="false">
        <shape>
            <solid android:color="#FF9900" />
            <corners android:radius="10dp" />
        </shape>
    </item>

</selector>
  1. 为了实现按钮4点击弹出提示信息的效果
    在这里插入图片描述
  • 打开activity_button.xml添加点击事件
<Button
        android:id="@+id/btn_4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮4"
        android:textSize="20sp"
        android:textColor="#0066FF"
        android:layout_below="@id/btn_3"
        android:layout_marginTop="10dp"
        android:background="@drawable/bg_btn4"
        android:onClick="showToast"/>
	<!--onClick事件-->

  • 打开ButtonActivity.java,添加一个函数,代码如下:
    //显示提示信息的函数
    public void showToast(View view){
        Toast.makeText(this,"我被点击了",Toast.LENGTH_SHORT).show();
    }
  1. 为按钮3添加点击事件的另一种方法
    (这是常用的方法,这方法也可以为TextView设置点击事件)
    打开ButtonActivity.java写入代码:
package com.example.qing.myapplication2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class ButtonActivity extends AppCompatActivity {

    //代码1: 声明全局变量
    private Button mBtn3;


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

        //代码2: 通过id获取Button
        mBtn3 = (Button) findViewById(R.id.btn_3);
        //代码3: 添加点击事件
        mBtn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(ButtonActivity.this,"按钮3被点击了,这是最常用的点击事件",Toast.LENGTH_LONG).show();
            }
        });

    }
}


五. EditText 来实现登录

  1. 打开activity_main.xml 添加一个按钮 btn_edittext ,用来点击跳到新的页面来演示
  2. 打开MainActivity.java,为刚才的按钮添加点击事件,跳到新的页面来演示
package com.example.qing.myapplication2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    //代码1: 首先声明全局的Button
    private Button mBtnTextview;
    private Button mBtnButton;
    private Button mBtnEditText;

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

            // 代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
            mBtnTextview = findViewById(R.id.btn_textview);
            // 代码3: 添加Button的点击事件
            mBtnTextview.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    //代码4: 跳转到TextView界面
                    Intent intent =  new Intent(MainActivity.this,TextViewActivity.class);
                    //注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
                    startActivity(intent);
                }
            });

            //代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
            mBtnButton = findViewById(R.id.btn_button);
            //代码3: 添加Button点击事件
            mBtnButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    //代码4: 跳转到ButtonAvtivity界面
                    Intent intent = new Intent(MainActivity.this,ButtonActivity.class);
                    //注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
                    startActivity(intent);
                }
            });

            //代码2: 通过id获取EditText
            mBtnEditText = findViewById(R.id.btn_edittext);
            //代码3: 添加点击事件
            mBtnEditText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //代码4: 跳转到EditTextAvtivity界面
                    Intent intent = new Intent(MainActivity.this,EditTextActivity.class);
                    //注意这个TextViewActivity.class名称要与接下来步骤2创建的TextViewActivity.java名称相匹配
                    startActivity(intent);
                }
            });
    }
}

  1. 在左侧栏src->java->com.*.myapplication2下面新建一个EmptyActivity, 起名字叫EditTextActivity, 系统会自动创建 EditTextActivity.java 和 activity_edit_text.xml 并且在AndroidManifest.xml 自动帮我们添加下面的声明
<activity android:name=".EditTextActivity"></activity>
  1. 打开activity_edit_text.xml写入代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp">

    <EditText
        android:id="@+id/et_1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="16sp"
        android:textColor="#FFAD33"
        android:hint="用户名"
        android:background="@drawable/bg_username"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:drawableLeft="@drawable/icon_user"
        />
    <!--android:hint="用户名" 设置为提示符的效果-->
    <!--android:background="@drawable/bg_username" 背景设为橙色边框-->
    <!--android:drawableLeft="@drawable/icon_user" 设置左侧显示图标-->

    <EditText
        android:id="@+id/et_2"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@id/et_1"
        android:textSize="16sp"
        android:textColor="#FFAD33"
        android:hint="密码"
        android:inputType="textPassword"
        android:background="@drawable/bg_username"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_marginTop="20dp"
        android:drawableLeft="@drawable/icon_password"
        />
    <!--inputType="textPassword" 设置为看不见明文的效果-->

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="登录"
        android:layout_below="@+id/et_2"
        android:layout_marginTop="20dp"
        android:textColor="#ffffff"
        android:background="@drawable/bg_btn4"
        />
    <!--android:background="@drawable/bg_btn4" 背景设置为带有按压的效果-->
    <!--通过java代码来添加点击事件-->

</RelativeLayout>

  1. 注意上面需要引用两个icon , 和带有边框效果的背景, 还有带有按压效果的背景, 请参考前面的button章节
  2. 打开EditTextActivity.java写入代码, 来添加按钮点击事件
package com.example.qing.myapplication2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class EditTextActivity extends AppCompatActivity {

    private Button mBtnLogin;

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

        //通过id获取button,并添加点击事件
        mBtnLogin = (Button) findViewById(R.id.btn_login);
        mBtnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //弹出消息提示框
                Toast.makeText(EditTextActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

  1. EditText添加其他事件
		//声明全局的变量
		private EditText mEtUserName;
		
		//下面写到onCreate函数中
		
        mEtUserName = (EditText) findViewById(R.id.et_1);
        mEtUserName.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //最常用的函数
                //打印内容,Android Monitor里面看到输出文本
                Log.d("文本是:",charSequence.toString());
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

六.RadioButton

  1. 打开MainActivity.java, 添加一个Button跳转到RadioButtonActivity界面, 并且简化一下代码
package com.example.qing.myapplication2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    //代码1: 首先声明全局的Button
    private Button mBtnTextview;
    private Button mBtnButton;
    private Button mBtnEditText;
    private Button mBtnRadoiButton;

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


        // 代码2: 通过id获取Button,必要时需要把view强制转换为Button类型
        mBtnTextview = findViewById(R.id.btn_textview);
        //通过id获取Button,必要时需要把view强制转换为Button类型
        mBtnButton = findViewById(R.id.btn_button);
        //通过id获取EditText
        mBtnEditText = findViewById(R.id.btn_edittext);
        //通过id获取RadoiButton
        mBtnRadoiButton = findViewById(R.id.btn_radiobutton);

        //给上面几个全都添加点击事件
        setListener();
    }

    //添加监听器
    private void setListener(){
        OnClick onClick = new OnClick();
        mBtnTextview.setOnClickListener(onClick);
        mBtnButton.setOnClickListener(onClick);
        mBtnRadoiButton.setOnClickListener(onClick);
    }


    private class OnClick implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            Intent inten = null;
            switch (v.getId()){
                case R.id.btn_textview:
                    inten = new Intent(MainActivity.this,TextViewActivity.class);
                    break;
                case R.id.btn_button:
                    inten = new Intent(MainActivity.this,ButtonActivity.class);
                    break;
                case R.id.btn_edittext:
                    inten = new Intent(MainActivity.this,EditTextActivity.class);
                    break;
                case R.id.btn_radiobutton:
                    inten = new Intent(MainActivity.this,RadioButtonActivity.class);
                    break;
            }
            startActivity(inten);
        }
    }
}

  1. 新建一个EmptyActivity起名字叫 RadioButtonActivity,系统会自动完成3件事,
  2. 打开activity_radio_button.xml, 写入代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <!--设置效果1-->
    <RadioGroup
        android:id="@+id/rg_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="20dp"
        >
        <!--RadioGroup里面的RadioButton必须要设置id-->

        <RadioButton
            android:id="@+id/rb_man"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textSize="18sp"
            android:textColor="#FF6600"
            android:checked="true"
            />
        <!--android:checked="true" 设置默认是选中男-->

        <RadioButton
            android:id="@+id/rb_woman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textSize="18sp"
            android:textColor="#FF6600"
            />
    </RadioGroup>


    <!--设置效果2,更好看点-->
    <RadioGroup
        android:id="@+id/rg_2"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/rg_1"
        android:layout_marginTop="30dp"
        android:paddingLeft="20dp"
        >

        <RadioButton
            android:id="@+id/rb_male"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text=""
            android:textSize="18sp"
            android:textColor="#FF6600"
            android:checked="true"
            android:button="@null"
            android:background="@drawable/selector_orange_radiobutton"
            />
            <!--android:button="@null" 设置去掉前面的圆点-->
            <!--android:gravity="center" 设置文字居中-->

        <RadioButton
            android:id="@+id/rb_female"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:text=""
            android:gravity="center"
            android:background="@drawable/selector_orange_radiobutton"
            android:button="@null"
            android:textSize="18sp"
            android:textColor="#FF6600"
            android:layout_marginLeft="10dp"
            />
    </RadioGroup>
    
</RelativeLayout>

  1. 新建一个Drawable文件, 命名为selector_orange_radiobutton.xml,写入代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--选中的时候,是橙色的填充背景-->
    <item android:state_checked="true">
        <shape>
            <solid android:color="#AA6600" />
            <corners android:radius="5dp" />
        </shape>
    </item>

    <!--没有选中时,是橙色的边框-->
    <item android:state_checked="false">
        <shape>
            <stroke android:width="1dp"
                android:color="#AA6600"/>
            <corners android:radius="5dp" />
        </shape>
    </item>

</selector>
  1. 效果图
    RadioGroup1效果1
    RadioGroup2效果2

  2. 添加点击事件 , 编辑RadioButtonActivity.java

package com.example.qing.myapplication2;

import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class RadioButtonActivity extends AppCompatActivity {

    private RadioGroup mRg1;

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

        mRg1 = (RadioGroup) findViewById(R.id.rg_1);
        mRg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
                //找到被选中的RadioButton
                RadioButton radioButton = (RadioButton) radioGroup.findViewById(i);
                //输出radioButton的文本
                Toast.makeText(RadioButtonActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show();
            }
        });

    }
}

七. CheckBox复选框

  1. 创建一个EmptyActivity命名为CheckBoxActivity, 系统会自动完成3个任务
  2. activity_main.xml中添加一个按钮,点击跳转到新的演示界面, MainActivity.java添加相应的点击事件
  3. 编辑activity_check_box.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    >

    <RelativeLayout
        android:id="@+id/rl_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你会哪些编程语言:"
            android:textSize="20sp"
            />

        <CheckBox
            android:id="@+id/cb_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Java"
            android:textSize="20sp"
            android:layout_below="@id/tv_title"
            />
        <CheckBox
            android:id="@+id/cb_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C语言"
            android:textSize="20sp"
            android:layout_below="@id/cb_1"
            />
        <CheckBox
            android:id="@+id/cb_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C++"
            android:textSize="20sp"
            android:layout_below="@id/cb_2"
            />
        <CheckBox
            android:id="@+id/cb_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C#"
            android:textSize="20sp"
            android:layout_below="@id/cb_3"
            />



    </RelativeLayout>

    <!--加了背景的checkbox 更好看点-->
    <RelativeLayout
        android:id="@+id/rl_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/rl_1">

        <TextView
            android:id="@+id/tv_title2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="你的兴趣爱好是:"
            android:textSize="20sp"
            />

        <CheckBox
            android:id="@+id/cb_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="玩电脑"
            android:textSize="20sp"
            android:layout_below="@id/tv_title2"
            android:button="@drawable/bg_checkbox"
            android:paddingLeft="5dp"
            />
            <!--设置paddingLeft而不是DrawableLeft-->
            <!--设置好背景-->

        <CheckBox
            android:id="@+id/cb_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="玩手机"
            android:textSize="20sp"
            android:layout_below="@id/cb_5"
            android:button="@drawable/bg_checkbox"
            android:paddingLeft="5dp"
            />
        <CheckBox
            android:id="@+id/cb_7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="打篮球"
            android:textSize="20sp"
            android:layout_below="@id/cb_6"
            android:button="@drawable/bg_checkbox"
            android:paddingLeft="5dp"
            />
        <CheckBox
            android:id="@+id/cb_8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="听音乐"
            android:textSize="20sp"
            android:layout_below="@id/cb_7"
            android:button="@drawable/bg_checkbox"
            android:paddingLeft="5dp"
            />
    </RelativeLayout>
</RelativeLayout>
  1. 找到两个icon,还要新建一个Drawable文件,命名为bg_checkbox.xml,写入代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--checkbox未选中时,使用icon_checkbox_false.png-->
    <item android:state_checked="false" android:drawable="@drawable/icon_checkbox_false" />
    <!--checkbox选中时,使用icon_checkbox_true.png-->
    <item android:state_checked="true" android:drawable="@drawable/icon_checkbox_true" />
</selector>

  1. 效果图
    在这里插入图片描述

  2. 为checkbox添加点击事件,编辑CheckBoxActivity.java

package com.example.qing.myapplication2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

public class CheckBoxActivity extends AppCompatActivity {

    private CheckBox mCb5,mCb6;

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

        mCb5 = (CheckBox) findViewById(R.id.cb_5);
        mCb6 = (CheckBox) findViewById(R.id.cb_6);

        mCb5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                Toast.makeText(CheckBoxActivity.this,isChecked?"5被选中":"5未被选中",Toast.LENGTH_SHORT).show();
            }
        });

        mCb6.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                Toast.makeText(CheckBoxActivity.this,isChecked?"6被选中":"6未被选中",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

八. ImageView

  1. 新建EmptyActivity, 命名为ImageViewActivity,系统会自动完成3个任务
  2. 编辑Activity_main.xml,添加一个按钮,并添加点击事件,跳转到新的页面来演示
  3. 编辑activity_image_view.xml, 添加3个ImageView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.qing.myapplication2.ImageViewActivity">

    <ImageView
        android:id="@+id/iv_1"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:background="#FF9900"
        android:src="@drawable/bg_img1"
        android:scaleType="fitXY"
        />
        <!--android:scaleType="fitXY" 设置为拉伸填满-->
        <!--android:scaleType="fitCenter" 设置为拉伸居中,不填满-->
        <!--android:scaleType="centerCrop" 设置为裁剪居中-->

    <ImageView
        android:id="@+id/iv_2"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:background="#FF9900"
        android:src="@drawable/bg_img1"
        android:layout_below="@id/iv_1"
        android:layout_marginTop="10dp"
        android:scaleType="fitCenter"
        />

	<!--这里演示一下加载网络图片-->
    <ImageView
        android:id="@+id/iv_4"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:background="#FF9900"
        android:layout_below="@id/iv_2"
        android:layout_marginTop="10dp"
        android:scaleType="fitCenter"
        />
</RelativeLayout>
  1. 效果图
    在这里插入图片描述

  2. 为了给ImageView4加载网络上的图片,需要引用github上面的Glide
    我导入失败了,后续更新…
    编辑build.gradle文件,添加代码,可能细微之间还须修改,我出错了很多次才成功的

//引用图片
repositories {
    mavenCentral()
   // google()
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.0', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:25.3.1'

    //引用图片
    compile 'com.github.bumptech.glide:glide:4.0.0'
    //compile 'com.android.suppor:support-v4:25.3.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
}
  1. 编辑ImageViewActivity.java
package com.example.qing.myapplication2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class ImageViewActivity extends AppCompatActivity {

    private ImageView mIv4;

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

        mIv4 = (ImageView) findViewById(R.id.iv_4);
        //Glide加载网络上的图片到mIv4中去
        Glide.with(this).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1547022866640&di=d1dcdffcf4735c63741ac9bbcc8d15d4&imgtype=0&src=http%3A%2F%2Fe.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F83025aafa40f4bfb0f815ad60e4f78f0f63618db.jpg")
                .into(mIv4);
    }
}
  1. 还需要编辑AndroidManifest.xml添加网络权限
	<!--加载网络权限,添加在application的前面-->
    <uses-permission android:name="android.permission.INTERNET" />
  1. 预览效果
    成功加载网络上的图片

九.ListView

先来演示手动创建一个ListViewActivity,不用系统自动生成
9. java下面新建一个包ListViewActivity,新建一个类ListViewActivity.java继承Activity
10. 编辑ListViewActivity.java

package com.example.qing.myapplication2.listViewActivity;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.ListView;

import com.example.qing.myapplication2.R;


public class ListViewActivity extends Activity {

   private ListView mLv1;

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

       //获取activity_listview.xml中的ListView,id是lv_1
       mLv1 = (ListView) findViewById(R.id.lv);
       //添加一个自制的监听器
       mLv1.setAdapter(new MyListAdapter(ListViewActivity.this));
   }
}

  1. 左侧栏新建一个MyListAdapter.java
package com.example.qing.myapplication2.listViewActivity;


import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.qing.myapplication2.R;

public class MyListAdapter extends BaseAdapter {

    private Context context;
    private LayoutInflater mLayoutInflater;

    MyListAdapter(Context context){
        this.context = context;
        mLayoutInflater = LayoutInflater.from(context);
    }

    //设置item的数量
    @Override
    public int getCount() {
        return 20;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    //静态类
    static class ViewHolder{
        public ImageView imageView;
        public TextView tvTile,tvTime,tvContent;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if(convertView==null){
            convertView = mLayoutInflater.inflate(R.layout.layout_list_item,null);
            holder = new ViewHolder();
            holder.imageView = convertView.findViewById(R.id.iv);
            holder.tvTile = convertView.findViewById(R.id.tv_title);
            holder.tvTime = convertView.findViewById(R.id.tv_time);
            holder.tvContent = convertView.findViewById(R.id.tv_content);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        holder.tvTile.setText("这是标题");
        holder.tvTime.setText("2088-08-08");
        holder.tvContent.setText("这是新的内容");
        //Glide
        //Glide.with(mContext).load("https://...").into(mIv4);
        return convertView;
    }
}

  1. 左侧栏layout右击,新建一个layout resource file,命名为activity_listview, 这里与上面java代码中R.layout.activity_listview相照应, 编辑 activity_listview.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:paddingLeft="15dp"
    android:paddingRight="15dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:orientation="vertical">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
        
</LinearLayout>
  1. 左侧栏layout新建一个layout_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="horizontal">


    <ImageView
        android:id="@+id/iv"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#000"
        android:scaleType="centerCrop"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="10dp"
        >
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"
            android:textSize="20sp"
            android:textColor="@color/colorBlack"
            />
        <!--android:textColor="@color/colorBlack" 顏色引用values下面的colors.xml中的資源-->

        <TextView
            android:id="@+id/tv_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="2019-1-8"
            android:textSize="18sp"
            android:textColor="@color/colorGrayDark"
            />

        <TextView
            android:id="@+id/tv_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="这是内容"
            android:textSize="18sp"
            />

    </LinearLayout>

</LinearLayout>
  1. 在AndroidManifest.xml中手动声明一下,如果自动创建系统会自动声明
<activity android:name=".listViewActivity.ListViewActivity"></activity>

或者这样子

<activity android:name="com.example.qing.myapplication2.listViewActivity.ListViewActivity"></activity>
  1. 为每一项添加点击事件, 编辑ListViewActivity.java,在设定自制监听器下面继续添加代码
//为每一项添加点击事件
        mLv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(ListViewActivity.this,"你点击了第"+position+"项",Toast.LENGTH_SHORT).show();
                //后面可以添加跳转新页面的事件
            }
        });

        //为每一项添加长按事件
        mLv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(ListViewActivity.this,"你长按了第"+position+"项",Toast.LENGTH_SHORT).show();
                //后面还可以添加编辑删除的功能
                //true表示我已经处理完了,不需要上面的点击事件再来处理一次
                return true;
            }
        });
  1. 效果图
    在这里插入图片描述

十. GridView

这个控件与上面的ListView类似
9. activity_main.xml下面添加一个按钮, 并且MainActivity.java下面添加点击事件,点击跳转到新的演示界面
10. 左侧栏java下面新建一个包gridView, 下面建立一个类GridViewActivity.java

package com.example.qing.myapplication2.gridView;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.GridView;

import com.example.qing.myapplication2.R;
import com.example.qing.myapplication2.listViewActivity.MyListAdapter;


public class GridViewActivity extends AppCompatActivity {

    private GridView mGv;

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

        //获取Activity_gridview.xml中的GridView,id是gv
        mGv = (GridView) findViewById(R.id.gv);
        //添加一个自制的监听器
        mGv.setAdapter(new MyGridViewAdapter(GridViewActivity.this));
    }
}

  1. layout下面新建一个activity_gridview.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">

    <GridView
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="3"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        />
    <!--android:numColumns="3" 列数-->
    <!--android:horizontalSpacing="10dp" 水平间距-->


</LinearLayout>
  1. gridview包下面新建一个类, MyGridViewAdapter.java
package com.example.qing.myapplication2.gridView;

import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.qing.myapplication2.R;
import com.example.qing.myapplication2.listViewActivity.MyListAdapter;


public class MyGridViewAdapter extends BaseAdapter {

    private Context mcontext;
    private LayoutInflater mLayoutInflater;

    public MyGridViewAdapter(Context context){
        this.mcontext = context;
        mLayoutInflater = LayoutInflater.from(context);
    }

    //控制所有的item数量
    @Override
    public int getCount() {
        return 10;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    static class ViewHolder{
        public ImageView imageView;
        public TextView textView;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if(convertView==null){
            convertView = mLayoutInflater.inflate(R.layout.layout_grid_item,null);
            holder = new ViewHolder();
            holder.imageView = convertView.findViewById(R.id.btn_imageview);
            holder.textView = convertView.findViewById(R.id.tv_title);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        //赋值
        holder.textView.setText("花");
        //Glide
        //Glid.with(mcontext),load("http://...").into(holder.imageView);
        return convertView;
    }
}

  1. layout下面新建一个layout_grid_item.xml, 表示每一个item的样子
<?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/iv_grid"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:scaleType="fitCenter"
        android:background="@color/colorBlack"
        />

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textColor="@color/colorAccent"
        android:gravity="center"
        android:layout_marginTop="10dp"
        />


</LinearLayout>
  1. 在AndroidManifest.xml 里面添加声明
<activity android:name=".gridView.GridViewActivity"></activity>
  1. 最后给每一项添加点击事件,编辑 GridViewActivity.java,代码添加在自制的监听器下面

//添加每一项点击事件
        mGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(GridViewActivity.this,"你点击了第"+position+"项",Toast.LENGTH_SHORT).show();
            }
        });

        //添加每一项长按事件
        mGv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(GridViewActivity.this,"你长按第"+position+"项",Toast.LENGTH_SHORT).show();
                //true表示这件事我处理完了,不需要上面的点击事件再来处理一次
                return true;
            }
        });
  1. 效果图
    在这里插入图片描述

十一.滚动视图ScrollView
编辑activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:background="#00FF00">

    <!--ScrollView 下面只能包含一个子元素,所以要用LinearLayout包含所有的Button-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

        <Button
            android:id="@+id/btn_textview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textAllCaps="false"/>
        <!--android:textAllCaps="false"关闭默认的所有文字大写-->

        <Button
            android:id="@+id/btn_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btn_edittext"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="EditText"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btn_radiobutton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="RadioButton"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btn_checkbox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="CheckBox"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btn_imageview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="imageview"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/btn_listview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="ListView"
            android:textAllCaps="false"/>
        <!--android:textAllCaps="false"关闭默认的所有文字大写-->

        <Button
            android:id="@+id/btn_gridview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="GridView"
            android:textAllCaps="false"/>

        <HorizontalScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <!--同样的HorizontalScrollView子元素只能有一个,所以用LinearLayout把所有的Button包起来-->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                >
                <Button
                    android:layout_width="200dp"
                    android:layout_height="300dp"
                    android:text="text HorizontalScrollView"
                    android:textAllCaps="false"
                    />
                <Button
                    android:layout_width="200dp"
                    android:layout_height="300dp"
                    android:text="text HorizontalScrollView"
                    android:textAllCaps="false"
                    />
                <Button
                    android:layout_width="200dp"
                    android:layout_height="300dp"
                    android:text="text HorizontalScrollView"
                    android:textAllCaps="false"
                    />
                <Button
                    android:layout_width="200dp"
                    android:layout_height="300dp"
                    android:text="text HorizontalScrollView"
                    android:textAllCaps="false"
                    />
                <Button
                    android:layout_width="200dp"
                    android:layout_height="300dp"
                    android:text="text HorizontalScrollView"
                    android:textAllCaps="false"
                    />
            </LinearLayout>
        </HorizontalScrollView>


        <!--测试滚动视图-->
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="测试滚动视图"
            android:textAllCaps="false"
            android:layout_marginTop="300dp"
            />
    </LinearLayout>
</ScrollView>

效果图
在这里插入图片描述

在这里插入图片描述

下接博客: https://blog.csdn.net/wang342626/article/details/87917342

  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值