山东大学项目实训-地图圈系统-APP(2)

安卓开发中的常见控件

1.EditText—输入文本

​ 常见属性

android:hint="提示输入的内容"
android:textColorHint="设置提示hint信息的颜色"
android:maxLength="输入最长的长度"
android:maxLines="输入最长的行数"
android:minLength="输入最短的长度"
android:inputType="输入数据类型"//文章过滤设置
    android:inputType="text"//输入文本
    android:inputType="textPassword"//输入密码
    android:inputType="textVisiblePassword"//输入可见的密码
    android:inputType="number"//输入数字
    android:inputType="phone"//拨号键盘

​ 实例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <EditText
        android:id="@+id/editText_one"
        android:inputType="number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLength="11"
        android:hint="请在此输入手机号码"
        android:textColorHint="	#4B0082"/>

    <EditText
        android:id="@+id/editText_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLength="8"
        android:hint="输入密码"
        android:textColorHint="	#87CEFA"
        android:inputType="textPassword"/>

</LinearLayout>

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

2.TextView

​ 常见属性

android:textColor="文本颜色"
android:textSize="文本大小"//sp为单位
android:background="背景颜色 || 图片地址"
android:text="文本内容"
 
 
//设置文本位置
android:gravity="center_vertical" //设置垂直居中
android:gravity="right" //设置居右
android:gravity="center_vertical|center_horizontal" //设置垂直水平居中
 
 
//设置链接
android:autoLink="all"     //设置自动识别链接所有
android:autoLink="phone"     //设置自动识别链接,phone为链接到电话簿
android:autoLink="email"     //设置自动识别链接,phone为链接到邮箱
android:autoLink="web"     //设置自动识别链接,phone为链接到web网址
 
 
//文本过长处理
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
android:ellipsize="marquee"设置跑马灯效果

 
//设置字形
android:textStyle="bold|italic"

​ 实例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <TextView
        android:id="@+id/textView0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#FF0000"
        android:textSize="18sp"
        android:background="#FFFFFF"
        android:text="拨打手机:186621422541"
        android:gravity="center_vertical"
        android:autoLink="phone" />
    
    
</LinearLayout>

​ 效果图:

在这里插入图片描述

3.Button

​ 常见属性

android:textAllCaps="false"//大写
android:background="#00ffff"//颜色
android:onClick="goClick"//点击监听
android:text="Button"//按钮上显示的内容

​ 监听

//匿名内部类方式建立的监听器
Button.OnClickListener anonymousListener=new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        System.out.println("匿名内部类方式定义的的Button监听器!");
        Toast.makeText(MainActivity.this, "匿名内部类方式定义的的Button监听器!", Toast.LENGTH_SHORT).show();
    }
};

Button btn=(Button)findViewById(R.id.btnForth);
btn.setOnClickListener(anonymousListener);
//利用Activity类实现监听接口

public class MainActivity extends Activity implements View.OnClickListener{
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layoutbutton);

        //设立由Activity实现OnClickListener接口的共同的监听器,多次设置会覆盖以前的值
        btnFirst.setOnClickListener(this);
        btnSecond.setOnClickListener(this);
    }
  
    //利用Activity类实现监听接口
    @Override
    public void onClick(View v) {
        switch (v.getId()) {//区分哪个按钮的事件
            case R.id.btnFirst:
                System.out.println("First Button");
                Toast.makeText(MainActivity.this, "First Button", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btnSecond:
                System.out.println("Second Button");
                Toast.makeText(MainActivity.this, "Second Button", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

4.CheckBox—复选框

​ 常见属性

android:text="美术"
android:id="@+id/like3"
android:checked="true"//是否选中

​ 监听:

public class MainActivity extends AppCompatActivity {
    EditText editText;
    private CompoundButton.OnCheckedChangeListener checkBox_listener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkBox_listener=new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    Log.i("check", "选中了["+buttonView.getText().toString()+"]");
                    Toast.makeText(MainActivity.this, buttonView.getText().toString()+"]", Toast.LENGTH_SHORT).show();
                }

            }
        };

        final CheckBox like1=(CheckBox)findViewById(R.id.like1);
        final CheckBox like2=(CheckBox)findViewById(R.id.like2);
        final CheckBox like3=(CheckBox)findViewById(R.id.like3);
        like1.setOnCheckedChangeListener(checkBox_listener);
        like2.setOnCheckedChangeListener(checkBox_listener);
        like3.setOnCheckedChangeListener(checkBox_listener);
        
        Button button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String like="";//保存选中的值
                if(like1.isChecked()){
                    like+=like1.getText().toString()+"";//当第一个复选框被选中
                }
                if(like2.isChecked()){
                    like+=like2.getText().toString()+"";//当第二个复选框被选中
                }
                if(like3.isChecked()){
                    like+=like3.getText().toString()+"";//当第三个复选框被选中
                }
                //显示被选中的复选框
                Toast.makeText(MainActivity.this, like, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

5.RadioButton—单选按钮

RadioButton需要放在RadioGroup中

​ 常见属性

android:text="男"

​ 实例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <RadioGroup
        android:id="@+id/sex"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioButton
            android:id="@+id/male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="" />
        <RadioButton
            android:id="@+id/female"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            />
    </RadioGroup>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="选择"/>


</LinearLayout>

​ 监听:

public class MainActivity extends AppCompatActivity {
    EditText editText;
    private CompoundButton.OnCheckedChangeListener checkBox_listener;
    Button button;
    RadioGroup radioGroup;
    RadioButton radioButton1;
    RadioButton radioButton2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        radioGroup=findViewById(R.id.sex);
        radioButton1=findViewById(R.id.male);
        radioButton2=findViewById(R.id.female);
        button=findViewById(R.id.button);

        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.male:
                        Boolean flag=radioButton1.isChecked();
                        if(radioButton1.isChecked()) {
                            Log.i("sex", "你是: " + radioButton1.getText().toString());
                        }
                        break;
                    case R.id.female:
                        if(radioButton2.isChecked()) {
                            Log.i("sex", "你是: " + radioButton2.getText().toString());
                        }
                        break;
                }
            }
        });

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String sex="";
                if(radioButton1.isChecked()){
                    sex=radioButton1.getText().toString();
                }
                if(radioButton2.isChecked()){
                    sex=radioButton2.getText().toString();
                }
                Log.i("hhh",sex);
            }
        });

    }
}

6.ProgressBar

​ 常见属性

//设置进度条类型
style="?android:attr/progressBarStyleHorizontal"  //水平直线进度条
style="?android:attr/progressBarStyleLarge"       //大的环形进度条
style="?android:attr/progressBarStyleSmall"       //小的环形进度条
 
 
//设置第一进度和第二进度
android:progress="第一进度的当前值"
android:secondaryProgress="第二进度的当前值"
 
 
//设置进度的最大值
android:max="100"
 
 
//设置进度条的显示状态
android:visibility="gone"

7.ImageView

​ 常见属性

android:adjustViewBounds="true"    //是否按比例缩小
android:maxWidth="150dp"
android:maxHeight="150dp"
android:src="@drawable/second" //图片地址
android:scaleType=
	center//按图片的原来 size 居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
	centerCrop//按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
	centerInside//将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
	fitCenter//把图片按比例扩大/缩小到View的宽度,居中显示
	fitStart//把图片按比例扩大/缩小到View的宽度,置于顶部显示
	fitEnd//把图片按比例扩大/缩小到View的宽度,置于底部显示
	fitXY//不按比例缩放图片,目标是把图片塞满整个View
	matrix//从ImageView左上角开始直接显示,显示不全时,裁剪

8.ListView

​ 首先需要了解适配器,适配器就是在安卓中,把数据变成符合界面风格的形式,并且通过ListView显示出来

​ 三种常见的适配器:

(1)ArrayAdapter:简单的数据映射,只包含文字数据。

(2)SimpleAdapter:文字和图片映射,内容相对丰富。

(3)自定义的Adapter

ArrayAdapter:

第一步:编写activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ArrayAdapter ListView" />

    <ListView
        android:id="@+id/simpleListViewControll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

第二步:在Activity中写数据

//用已有的样式
public class MainActivity extends AppCompatActivity {

    //定义ListView对象变量---View
    private ListView listview;

    //存放数据的List<String>对象---Model
    private List<String> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取ListView对象
        listview=(ListView)findViewById(R.id.simpleListViewControll);

        //定义List变量(提供数据)--ArrayList是List的具体实现
        list=new ArrayList<String>();
        //添加数据内容
        list.add("测试数据--1");
        list.add("测试数据--2");
        list.add("测试数据--3");
        list.add("测试数据--4");
        list.add("测试数据--5");
        list.add("测试数据--6");
        list.add("测试数据--7");
        list.add("测试数据--8");
        list.add("测试数据--9");

        //定义ArrayAdapter,衔接ListView和List---Controller
        //参数-----上下文环境, ListView的每一行的布局,  List<String>对象
        //如果要使用自定义的布局,必须指明TextView的ID--布局中也可以包含除TextView之外的其它控件
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
        
        //设置ListView的Adapter对象
        listview.setAdapter(adapter);

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                
                String info=list.get(position) + "  was clicked!"; //取出点击的行的内容
                Toast.makeText(MainActivity.this, info+"--"+id, Toast.LENGTH_SHORT).show();
            }
        });

    }
}

//用自定义的样式,只需要自定义一个test.xml文件,把Java中的适配器改成如下代码
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.layout.test, R.id._id, list);
<!--test.xml-->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#3CB371"
        android:textSize="50sp"/>

</LinearLayout>
系统有的xml自定义的xml
在这里插入图片描述
在这里插入图片描述
SimpleAdapter:

第一步:编写布局文件activity_main.xml,然后添加ListView控件

<?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">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF000000"
            android:textSize="28sp" />
        <TextView
            android:id="@+id/info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FF000000"
            android:textSize="18sp" />
    </LinearLayout>

</LinearLayout>

第二步:在Activity中修改

//使用ListActivity--内部仅含有一个ListView
public class MainActivity extends ListActivity {

    //数据线性表--List实际上是一个线性表的接口
    List<Map<String,Object>> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //创建Adapter对象
        SimpleAdapter adapter = new SimpleAdapter(this, //上下文对象
                getData(),               //存放数据的List对象
                R.layout.activity_main,         //每行的布局
                new String[]{"title","info"},  //数据对象Map中的列名--键
                new int[]{R.id.title,R.id.info});  //列内容--Listview中的控件ID,对应控件用于显示Map对象中的值

        //为ListActivity中的ListView设置Adapter
        setListAdapter(adapter);
    }

    //获取List数据对象
    private List<Map<String,Object>> getData(){
        //建立List对象--具体的ArrayList对象
        list=new ArrayList<Map<String,Object>>();

        //List中存放的Map对象,由多个<键,值>对构成--一个Map对象对应ListView中的一行
        Map<String, Object> map;

        map=new HashMap<String,Object>();
        map.put("title", "牛");
        map.put("info", "食草动物,家畜");
        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "孔雀");
        map.put("info", "鸟类,开屏很好看");

        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "熊猫");
        map.put("info", "珍稀,国宝");
        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "恐龙");
        map.put("info", "爬行类,已灭绝");

        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "神龙");
        map.put("info", "神话中的动物");

        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "北极熊");
        map.put("info", "生活在极寒之地");

        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "牛-2");
        map.put("info", "食草动物,家畜");

        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "孔雀-2");
        map.put("info", "鸟类,开屏很好看");

        list.add(map);

        map=new HashMap<String,Object>();
        map.put("title", "熊猫-2");
        map.put("info", "珍稀,国宝");

        list.add(map);

        return list;
    }

    //重写此方法---点击一行时的回调函数--参数含义同前
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        String s=list.get(position).get("title").toString(); //获取该行的Map对象的指定属性的数据内容
        Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
    }
}


结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值