Android学习笔记(八)

android中常见空间的使用方法

1.TextView

TextView主要用于在界面上显示一段文本信息,如下面代码所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="24sp"
        android:textColor="#00ff00"
        android:text="This is TextView" />

</LinearLayout>

其中,在TextView标签中:

android:id 给当前控件定义了一个唯一标识符;

android:layout_width 指定了控件的宽度,其中match_parent表示当前控件的大小和父布局的大小一样;

android:layout_height 指定了控件的高度,wrap_content表示让当前控件的大小能够刚好包含里面的内容;

android:text 指定了TextView中显示的内容。

android:gravity 来指定文字的对齐方式,可以用“|”来同时指定多个值;

android:textSize 指定TextView中文字的大小;

android:textColor 指定TextView中文字的颜色。

除了上述这些,TextView中还有很多其他的属性。

2.Button

Button是程序用于和用户进行交互的一个重要控件。例如下面的代码定义了一个Button按钮:

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

加入Button按钮后,就可以在MainActivity中为Button的点击事件注册一个监听器,代码如下所示:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                        }
          });
      }
}

注册监听器后,就会执行监听器中的onClick()方法,只需要在这个方法中加入待处理的逻辑就行了。

上面代码给按钮加入监听器中方法是使用匿名类,也可以使用实现接口的方式来注册,代码如下所示:

public class MainActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
       button.setOnclickListener(this);
    }
            public void onClick(View v) {
                 switch (v.getId()) {
                 case R.id.button:
                    //在此处添加逻辑
                    break;
                 default:
                    break;
                 }
            }
}

上述的代码也可以实现对按钮点击事件的监听。

3.EditText

EditText是程序用于和用户进行交互的一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理。

在界面中放置一个EditText控件的代码如下所示:

<EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Type something here"
        android:maxLines="2" />

Android控件的使用基本上用法类似,给控件定义一个id,在指定控件的宽度和高度,然后在加入控件的其它属性就可以了。如:

android:hint 属性是在输入框中显示一些提示性的文字,然后用户输入内容后,这些提示文字就会消失。

android:maxLines 属性是指定EditText的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动。

可以结合EditText和Button来完成一些功能,比如通过点击按钮来获取EditText中输入的内容,代码如下所示:

public class MainActivity extends Activity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.edit_text);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String inputText = editText.getText().toString();
                Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();
                        }
        });
   }
}

上面的代码中首先通过findViewById()方法得到EditText的实例,然后在按钮的点击事件里调用EditText的getText()方法

获取到输入的内容,再调用toString()方法转换成字符串,最后使用Toast方法将内容显示出来。

4.ImageView

ImageView是用于在界面上展示图片的一个控件。如下面的代码可以展示drawable文件夹下的ic_launcher.png图片:

 <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

在程序中还可以通过代码动态地更改ImageView中的图片,代码如下所示:

public class MainActivity extends Activity {

    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.image_view);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                //在Button监听器中,调用ImageView的setImageResource()方法修改显示的图片。
            imageView.setImageResource(R.drawable.icon);
                        }
       });
   }
}

上面的代码中,在按钮的点击事件里通过调用ImageView的setImageResource()方法将显示的图片该成icon。

5.ProgressBar

ProgressBar用于在界面上显示一个进度条,表示我们程序正在加载一些数据,ProgressBar的用法如下面的代码所示:

<ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100" />"

上面的代码可以在界面上显示进度条,其中style指定了进度条是水平样式的,如果不加style默认是圆形的。

当数据加载完成后,如何使进度条消失呢?这就要用到android控件的可见属性,所有的android控件都有这个属性。

可以通过android:visibility进行指定,可选三种值:

visible表示控件可见性,这个值是默认值;

invisible表示控件不可见性,但它仍然占据着原来的位置和大小;

gone则表示控件不可见性,而且不再占用任何屏幕。

空间的可见性还可以在代码中设置,使用setVisibility()方法,可以传入View.VISIBLE、ViewINVISIBLE和View.GONE。

下面的代码用来设置进度条的可见性:

public class MainActivity extends Activity {

    private ProgressBar progressBar;

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

        progressBar = (ProgressBar) findViewById(R.id.progress_bar);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                //设置进度条的可见性
                if (progressBar.getVisibility() == View.GONE){
                    progressBar.setVisibility(View.VISIBLE);
                }else {
                    progressBar.setVisibility(View.GONE);
                }

                int progress = progressBar.getProgress();
                progress = progress + 10;
                progressBar.setProgress(progress);
                         }
               });
        }
}                

上面的代码中通过getVisibility()方法来判断ProgressBar是否可见,如果可见就将ProgressBar隐藏掉;

如果不可见就将ProgressBar显示出来。

6.AlertDialog

AlertDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够

屏蔽掉其他控件的交互能力,因此AlertDialog一般用于提示一些非常重要的内容或者警告信息。

AlertDialog用法如下面的代码所示:

/**
                 * AlertDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有
                 * 界面元素之上的,能够屏蔽掉其他控件的交互能力。
    */
                //首先通过AlertDialog.Builder创建出一个AlertDialog的实例。
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                //设置标题
                dialog.setTitle("This is Dialog");
                //设置内容
                dialog.setMessage("Something important");
                //设置是否可以取消
                dialog.setCancelable(false);
                //调用setPositiveButton()方法为对话框设置确定按钮的点击事件
                dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                //调用setNegativeButton()方法为对话框设置取消按钮的点击事件
                dialog.setNegativeButton("Cancle", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                //调用show()方法将对话框显示出来
                dialog.show();
                

7.ProgressDialog

ProgressDialog和AlertDialog类似,都可以在界面上弹出一个对话框,屏蔽掉其他控件的交互能力;

不同的是,ProgressDialog会在对话框中显示一个进度条,一般表示比较耗时,让用户耐心等待。

ProgressDialog的用法如下面的代码所示:

                /**
                 * ProgressDialog和AlertDialog类似,都是在界面中显示一个对话框。
                 * 不同的是,ProgressDialog会在对话框中显示一个进度条,一般表示:
                 * 当前的操作比较耗时,让用户耐心等待。
                 */
                //首先构建出一个ProgressDialog对象。
                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                //设置对话框的标题
                progressDialog.setTitle("This is ProgressDialog");
                //设置内容消息
                progressDialog.setMessage("Loading...");
                //设置可否取消,如果在setCancelable()中传入了false,表示ProgressDialog不能通过Back键取消,
                //当数据加载完成后必须要调用ProgressDialog的dismiss()方法来关闭对话框。
                progressDialog.setCancelable(true);
                //调用show()方法将对话框显示出来
                progressDialog.show();

注意:上面的代码中在setCancelable()中传入了true,表示ProgressDialog可以通过Back键取消的;

如果传入了false,表示ProgressDialog不能通过Back取消,当数据加载完成后必须要调用

ProgressDialog的dismiss()方法来关闭对话框,否则ProgressDialog将会一直存在。

时间: 2024-10-10 09:42:34

Android学习笔记(八)的相关文章

android学习笔记八——控件

SeekBar——拖动条 拖动条(SeekBar)组件与ProgressBar水平形式的显示进度条类似,不过其最大的区别在于,拖动条可以由用户自己进行手工的调节,例如当用户需要调整播放器音量或者电影的播放速度都会使用到拖动条SeekBar类. android:thumb,指定一个Drawable对象,该对象将作为自定义滑块:为了实现程序拖动滑块位置的改变,程序可以绑定一个OnSeekBarChangeListener监听器. android:thumb,用于改变拖动条上滑块的外观. 布局文件==

Android学习笔记(十八)——使用意图筛选器和实现浏览网页(附源码)

使用意图筛选器 点击下载源码 1.创建一个Intents项目,给该项目添加一个新类,命名为MyBrowserActivity,在res/layout文件夹下新增一个browser.xml: 2.在AndroidManifest.xml文件中添加如下代码: 添加权限: <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="a

Android学习笔记(四八):提供自己的Content Provider

在上一次的学习中,采用了原生的内容提供者Contact,Contact有多层映射关系,比较复杂,并非作为小例子的好选择,在本次学习中,我们将学习如何建立Content Provider,并通过Uri进行增删改查.如果应用的数据只需自己使用,并不需要content provider,相反避免这样做,可直接访问数据:但是若希望数据可以被其他应用访问,创建content provider就是常规手段. 再谈Content Provider的Uri 在上一次学习中,我们谈到了Uri的格式.现在已cont

【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见Pro Android学习笔记(六四):安全和权限(1):签发apk,我们将对package做进一步了解. 每个apk都有一个唯一的根包名,在AndroidManifest.xml中定义,如下.开发者为包进行签发,前面和包名绑定,其他开发者不能对这个包进行更新. <?xml version="1

【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件

目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Remote Service在之前的学习笔记 Android学习笔记(五三):服务Service(下)- Remote Service中介绍过.远程服允许行其他应用调用,及允许RPC(remote procedure call).在Android中remote需要

udacity android 学习笔记: lesson 4 part b

udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八 声明:本文採用下面协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/master/Mar

Pro Android学习笔记(十):了解Intent(上)

Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Service(后台代码) 3.Broadcast receiver(处理广播消息的代码) 4.Content provider(抽象数据的代码) Intent基本含义 intent是通知平台处理(唤起)的动作.Android唤起的动作将取决于注册了什么动作.例如我们有个简单的Activity:IntentBaiscViewActivity.在AndroidManife

Android学习笔记(四二):SQLite、ListView、ContextMenu

继续上一个例子,结合ListView中对SQLite进行操作. 通过CursorAdapter在ListView中的数据呈现 在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出.在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理: public class Chapter22Test1 extends ListActivity{    private SQLiteDatabase  db = nu

Pro Android学习笔记 ActionBar(1):Home图标区

 Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ? 综合 ? 共 3256字 ? 字号 小 中 大 ? 评论关闭 ActionBar在Android 3.0 SDK中为平板引入,在4.0中也可以在phone中使用.在title中提供类似tab和菜单的效果,有三种形式:Tabbed action bar,list action bar和standard action bar,我们将在小例子中进行示范. Home Icon 在Actio

【转】Pro Android学习笔记(五):了解Content Provider(上)

Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider进行读写,需要使用URI.推荐阅读Android学习笔记(四七):Content Provider初谈和Android联系人信息.Android学习笔记(四八):提供自己的Content Provider和Android学习笔记(四九):通过Content Provider访问数据.Content