• 十、Android学习第九天——小结(转)


    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html)

    十、Android学习第九天——小结

    通过这段时间的学习,今晚上来做个小小的总结~~~

    最早之前我们就了解到,Android四个重要的部分:

    一、Activity —— 门面,就是我们看到的用户界面

    二、Intent —— 在整个应用程序间传送数据

    三、Service —— 不可见,为整个应用程序提供一个服务支持

    四、Content Provider —— 为应用程序提供数据的接口

    至此,这四个重要的部分我们都已经有了初步的认识。但是并不是每一个Android应用程序都需要这四个部分,这不是必需的。某些时候,我们只需要这四种中的几种组合成我们的应用。

    Activity

    至此,Activity我们已经很清楚了,需要注意的是Activity的使用,需要在Manifest.xml中进行注册。

    Intent

    Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、数据、附加数据进行描述,Android则根据这些Intent的描述,负责找到相应的组件,将Intent传递给调用的组件,并完成对组件的调用。

    Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起的是一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

    理解Intent的关键之一是理解Intent的两种基本用法:

    1、显式的Intent——即在构造Intent对象的时候就指定接受者

    2、隐式的Intent——在构造Intent对象时,并不知道也并不关心接受者是谁,有利于降低发送者与接受者之间的耦合。

    以下是Intent几种常用的用法:


    Intent intentOne = new Intent(IntentActivity.this,
    ResultActivity.class);
    IntentActivity.this.startActivity(intentOne);

    ------------------------------------------------------------------------


    Intent intentTwo = new Intent(IntentActivity.this,
    ResultActivity.class);

    // 把数据放到Bundle中,进行传递
    Bundle bundle = new Bundle();
    bundle.putString("name", "chenzheng");
    // intent.putExtra可以用来放键值对
    intentTwo.putExtras(bundle);
    IntentActivity.this.startActivity(intentTwo);

    ------------------------------------------------------------------------

    // ..............对于数据接收................

    Bundle resultBundle = getIntent().getExtras();
    String name = resultBundle.getString("name");

    ------------------------------------------------------------------------


    Intent resultIntent = getIntent();
    Bundle resultBundleTwo = new Bundle();
    resultBundleTwo.putString("name", "This is from ShowMsg");
    resultIntent.putExtras(resultBundleTwo);
    setResult(RESULT_OK, resultIntent);

    Service

    Service是一个应用程序组件

    Service没有图形化界面

    Service通常用来处理一些耗时比较长的操作,例如下载,播放MP3文件等操作。

    可以使用Service更新ContentProvider,发送Intent以及启动系统通知等等。

    我们要注意,Service不是一个单独的进程,也不是一个线程。

    这里别忘记写完一个Service要去Manifest.xml中进行注册。

    ContentProvider

    应用程序能够将它们的数据保存到文件中、SQL数据库中、甚至是任何有效的设备中。当你想将你的数据与其他应用共享时,Content Provider就将变的很有用了。一个Content Provider类实现了一组标准的方法,从而能够将其他的应用保存或者读取此Content Provider处理的各种数据类型。

    --------------------------------------------------------------------------

    Toast

    俺一直对这个Toast很有兴趣,所以从网上找了个例子自己练习了下,与大家分享:

    下面的例子一共有五种Toast的用法

    第一种:默认样式

    // 默认的Toast样式
    Toast.makeText(ToastActivity.this, "默认Toast样式", Toast.LENGTH_SHORT)
    .show();

    运行结果如下:

    第二种:自定义显示位置

    // 自定义位置的Toast
    Toast toast = Toast.makeText(ToastActivity.this, "自定义位置的Toast",
    Toast.LENGTH_LONG);
    // 自定义Toast的显示位置
    toast.setGravity(Gravity.CENTER, 0, 0);
    toast.show();

    运行结果如下:

    第三种:带图片的Toast

    // 带图片的Toast
    Toast toast = Toast.makeText(ToastActivity.this, "带图片的Toast",
    Toast.LENGTH_LONG);
    // 设置Toast的显示位置
    toast.setGravity(Gravity.CENTER, 0, 0);

    LinearLayout toastView = (LinearLayout) toast.getView();
    System.out.println("getApplicationContext:"
    + getApplicationContext());

    ImageView imageCodeProject = new ImageView(getApplicationContext());
    // 找到需要显示的图片文件
    imageCodeProject.setImageResource(R.drawable.mickey);
    toastView.addView(imageCodeProject, 0);
    toast.show();

    运行结果如下:

    第四种:完全自定义的Toast

    // 完全自定义的Toast,每一个选项都需要我们去手动设置
    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.custom,
    (ViewGroup) findViewById(R.id.llToast));
    ImageView image = (ImageView) layout
    .findViewById(R.id.tvImageToast);
    image.setImageResource(R.drawable.mickey);
    TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
    title.setText("Attention");
    TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
    text.setText("完全自定义Toast");
    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setView(layout);
    toast.show();

    运行结果如下:

    第五种:其他线程

    // 其他线程的Toast
    new Thread(new Runnable() {

    @Override
    public void run() {
    showToast();
    }
    }).start();

    public void showToast() {
    handler.post(new Runnable() {
    @Override
    public void run() {
    Toast.makeText(getApplicationContext(), "我来自其他线程!",
    Toast.LENGTH_SHORT).show();

    }
    });
    }

    运行结果如下:

     

  • 相关阅读:
    Icinga使用总结
    Linux入门:usermod
    JMeter入门(01)概念和样例
    英语日常词汇:living-room、dining-room vs dining hall
    安装 docker-compose
    CentOS7下安装python-pip
    JMeter入门(03)多台JMeter联合测试
    jmeter入门(02)测试报告各项指标含义
    istio入门(01)istio的优势在哪里?
    Docker学习笔记
  • 原文地址:https://www.cnblogs.com/jenson138/p/4017671.html
Copyright © 2020-2023  润新知