第一行代码Android学习(十二)

原创 2016年08月30日 11:26:53

第一行代码Android学习:第十二部分主要涉及到全局获取context的技巧、使用Intent传递对象、定制自己的日志工具

  • AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dyhdm_12_00test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:name="com.example.dyhdm_12_00test.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.dyhdm_12_00test.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.dyhdm_12_00test.Main2Activity"
            android:label="@string/title_activity_main2" >
        </activity>
    </application>

</manifest>
  • activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/bt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

</RelativeLayout>
  • activity_main2.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main2Activity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world2" />

</RelativeLayout>
  • MyApplication.java
/*
 * @Title:  MyApplication.java
 * @Description:  TODO 
 * @author:  张志安
 * @date:  2016-8-30 上午10:12:46
 * 
 */
package com.example.dyhdm_12_00test;

import android.app.Application;
import android.content.Context;

/**
 * TODO 定制一个自己的Application,为了个在项目的任何地方都能获取到Context.
 *      注意要修改AndroidManifest.xml
 *      获取Context:MyApplication.getContext()
 * @author  张志安
 * @date:  2016-8-30 上午10:12:46
 */
public class MyApplication extends Application {
    public static Context context;

    @Override
    public void onCreate() {
        context = getApplicationContext();
    }

    public static Context getContext(){
        return context;
    }
}
  • Person.java
/*
 * @Title:  Person.java
 * @Description:  TODO 
 * @author:  张志安
 * @date:  2016-8-30 上午10:25:06
 * 
 */
package com.example.dyhdm_12_00test;

import java.io.Serializable;

/**
 * TODO 实现序列化接口的Person类 所有的Person对象都可以序列化
 * 
 * @author 张志安
 * @date: 2016-8-30 上午10:25:06
 */
public class Person implements Serializable {

    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

}
  • LogUtil.java
/*
 * @Title:  LogUtil.java
 * @Description:  TODO 
 * @author:  张志安
 * @date:  2016-8-30 上午10:34:55
 * 
 */
package com.example.dyhdm_12_00test;

import android.util.Log;

/**
 * TODO 定制自己的日志工具
 *      打印一行DEBUG级别的日志可以写成LogUtil.d("zza","123")
 *      只需要修改LEVEL的值就可以自由控制打印行为
 * 
 * @author 张志安
 * @date: 2016-8-30 上午10:34:55
 */
public class LogUtil {

    public static final int VERBOSE = 1;

    public static final int DEBUG = 2;

    public static final int INFO = 3;

    public static final int WARN = 4;

    public static final int ERROR = 5;

    public static final int NOTHING = 6;

    public static final int LEVEL = VERBOSE;

    public static void v(String tag, String msg) {
        if (LEVEL <= VERBOSE) {
            Log.v(tag, msg);
        }
    }

    public static void d(String tag, String msg) {
        if (LEVEL <= DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void i(String tag, String msg) {
        if (LEVEL <= INFO) {
            Log.i(tag, msg);
        }
    }

    public static void w(String tag, String msg) {
        if (LEVEL <= WARN) {
            Log.w(tag, msg);
        }
    }

    public static void e(String tag, String msg) {
        if (LEVEL <= ERROR) {
            Log.e(tag, msg);
        }
    }
}
  • MainActivity.java
package com.example.dyhdm_12_00test;

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

public class MainActivity extends Activity {

    private Button bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 测试MyApplication.getContext()
        Toast.makeText(MyApplication.getContext(), "Test", Toast.LENGTH_SHORT)
                .show();
        // 测试使用Intent传递对象
        bt = (Button) findViewById(R.id.bt);
        bt.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Person p = new Person();
                p.setAge("21");
                p.setName("zza");
                Intent intent = new Intent(MyApplication.getContext(),
                        Main2Activity.class);
                intent.putExtra("data", p);
                startActivity(intent);
            }
        });
        // 测试定制的日志工具
        LogUtil.i("zza", "123");
    }

}
  • Main2Activity.java
package com.example.dyhdm_12_00test;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;

public class Main2Activity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 获取通过intent传递的对象
        Person p = (Person) getIntent().getSerializableExtra("data");
        setContentView(R.layout.activity_main2);
        Toast.makeText(MyApplication.getContext(),
                "Name:" + p.getName() + " Age:" + p.getAge(),
                Toast.LENGTH_SHORT).show();
    }
}

代码下载地址

版权声明:本文为博主原创文章,未经博主允许不得转载。

对系统学习与写博客的看法——学完《第一行代码》有感

笔者如今学习android有近8个月,此时才真正地学完一本书也甚是惭愧。 在此分享一下自己大概的学习经历。(笔者在大一下就开始学android了,学的时候只有c与c++的基础,一个学期+寒假在OJ...
  • Double2hao
  • Double2hao
  • 2015年11月27日 08:57
  • 3972

第一行代码Android学习(十)

第一行代码Android学习:第十部分主要涉及到Android多线程编程和Service的用法
  • baidu_32237719
  • baidu_32237719
  • 2016年08月23日 09:44
  • 394

Android第一行代码学习笔记

1.隐藏标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);注意这句代码必须要在setContentView之前调用 2.隐式Intent 声明: ...
  • chenzheng8975
  • chenzheng8975
  • 2016年12月16日 14:36
  • 403

《第一行代码-Android》学习笔记(十二)

1.android虽然提供了持久化的技术,但是还有一种情况需要考虑,就是一个应用如何去访问另一个应用的数据,在4.2版本以前,文件和Sharedpreferences可以供其他应用访问,但是后来被摒弃...
  • u011771755
  • u011771755
  • 2015年02月14日 23:36
  • 330

《第一行代码》作者郭霖大神安卓问题解答

列举了几个郭霖大神解答的问题
  • jinhuoxingkong
  • jinhuoxingkong
  • 2016年06月14日 19:24
  • 2109

历时一年,我的著作《第一行代码——Android》已出版!

其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年了,总应该要留下点什么。既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发者们,毕竟我也从前辈们的博客那里受...
  • sinyu890807
  • sinyu890807
  • 2014年07月17日 09:13
  • 123205

《第一行代码——Android》pdf

下载地址:网盘下载 目录: 编辑 第1章 ----------- 开始启程,你的第一行Android代码   1.1 了解全貌,Android王国简介2   1.1.1 ...
  • cf406061841
  • cf406061841
  • 2017年05月14日 00:09
  • 1764

Android 播放视频 VideoView 《第一行代码》学习笔记

视频播放需要使用VideoView类来实现,以下是一些VideoView的常用方法: 方法名 功能描述 setVideoPath() 设置要播放的视频文件位置 start() 开始...
  • htwhtw123
  • htwhtw123
  • 2016年09月23日 12:56
  • 1006

第一行代码Android学习(十一)

第一行代码Android学习:第十一部分主要涉及到WebView、Http协议访问网络、解析JSON格式数据、LocationManager的基本用法...
  • baidu_32237719
  • baidu_32237719
  • 2016年08月29日 08:58
  • 754

网络---《第一行代码Android》笔记

WebView的用法 使用HttpURLConnection连接网络 使用OkHttp工具连接网络 WebView的用法用于展示一个网页,相当于一个嵌入式的浏览器。 添加权限package com....
  • zlxtk
  • zlxtk
  • 2017年07月14日 11:09
  • 289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一行代码Android学习(十二)
举报原因:
原因补充:

(最多只允许输入30个字)