美文网首页
android基础-01-入门

android基础-01-入门

作者: 西海岸虎皮猫大人 | 来源:发表于2020-08-08 00:55 被阅读0次

1 环境搭建

工具

https://pan.baidu.com/s/1hnYlCHKNrVY8B3aks3yYog
提取码:5pri
本教程参考了比较老的视频教程,学习原理没有必要追求最新的工具

android studio环境搭建

直接下一步,代理推荐使用本地VPN工具,gradle构建时亦会弹出选择即可

eclipse环境搭建

不推荐,eclipse已退出历史舞台

  1. 安装jdk
  2. 安装eclipse
  3. 安装installer_r17-windows.exe
  4. 修改环境变量
    Android SDK中的tools绝对路径添加到系统PATH中
  5. 修改hosts
    c:\windows\system32\drivers\etc\HOSTS
    文件末尾添加:
74.125.237.1 dl-ssl.google.com
  1. 安装adt
    help -> install New SoftWare... -> 点击add
    点击Archives... 选择adt zip文件 名称随便填
    勾选Contract all... -> 点下一步直到完成
  2. 安装模拟器
    sdk-64位.rar解压到installer_r17-windows.exe 安装的目录android-sdk中,重复的替换
    启动SDK Manager.exe
    配置镜像: tools -> options
    server: mirrors.neusoft.edu.cn
    port: 80
    勾选force...
    注意当前4.3之前的模拟器已被删除,故选择4.3版本
  3. 启动eclipse
    window -> preferences -> android
    选择sdk目录位置
    新建android项目,启动后可以看到模拟器输出hello world
注意,这里sdk下载页空白,配置国内镜像亦未能解决,TODO

2 框架介绍

src java代码
assets 资源目录
res 图片\布局文件\字符串\菜单等
bin 输出文件夹,如apk文件
project.properties 工程属性配置
gen 系统自动生成的源代码目录
R.java 是系统自动生成的文件,重要.默认有attr,drawable,layout,string4个静态内部类.

拖动一图片到res/drawable-hdpi,可以看到R.java drawable多了一个属性;
values/strings.xml新建一个字符串

<string name="button">提交按钮</string>

可以看到R.java string多了一个属性button

清单文件介绍

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- 
package 包名
versionCode apk版本号,1开始2\3\4不断升级
android:installLocation="auto" 自动寻找安装位置
versionName 版本名称
internalOnly 仅安装在ROM上
preferExternal 直接安装在sdcard中
 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hello"
    android:versionCode="1"
    android:versionName="1.0" >
    <!-- sdk版本号 -->
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <!-- 用户授权 访问网络等 -->
    <uses-permission />
    <!-- 
    icon 应用程序logo
    label 应用工程文字说明
     -->
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!-- 
        android:name 主程序名称
        intent-filter 意图过滤器,过滤用户的动作
        android.intent.action.MAIN 表示当前程序是整个程序的入口程序
        category android:name 表示决定应用程序是否在程序列表中显示
         -->
        <activity
            android:name="com.example.hello.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>
    </application>

</manifest>

3 生命周期

Activity

布满整个窗口后者悬浮的操作界面,清单文件配置主Activity
栈,先进后出
7个方法
onCreate\onStart\onRestart\onResume\onPause\onStop\onDestroy

4 全局变量传递

使用全局静态变量

TextView接收变量

<!--res/layout/other.xml-->
    <TextView
        android:id="@+id/msg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </TextView>
<!--res/layout/activity_main.xml-->
    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="使用Application传递数据" />
//MainActivity.java
public class MainActivity extends Activity {
    // 声明按钮
    private Button button;
    // 声明myApp属性,用于传递变量 
    private MyApp myApp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取按钮
        button = (Button)this.findViewById(R.id.button);
        // 绑定点击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                myApp = (MyApp) getApplication();
                // 设置变量值
                myApp.setName("jack");
                // 意图,页面切换
                Intent intent = new Intent(MainActivity.this, OtherActivity.class);
                startActivity(intent);
            }
        });
    }
...
// OtherActivity.java
public class OtherActivity extends Activity {
    // 声明myApp用于接收变量
    private MyApp myApp;
    // 声明TextView组件
    private TextView textView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other);
        textView = (TextView)this.findViewById(R.id.msg);
        myApp = (MyApp)getApplication();
        // 接收变量,设置到textView文本
        textView.setText("-app-->>" + myApp.getName());
    }
// 新建MyApp类继承Application,添加name属性
public class MyApp extends Application {
    private String name;

getter/setter
    
    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        setName("张三");
    }

}
<!--  AndroidManifest.xml -->
<!--  指定android:name -->
    <application
        android:name=".MyApp"
       ...
        <!-- OtherActivity注册 -->
        <activity
            android:name=".OtherActivity">
        </activity>
    </application>
使用剪切板 - 传递字符串
<!--  activity_main.xml -->
    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="使用剪切板传递数据" />
<!--  other.xml -->
    <TextView
        android:id="@+id/msg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
// MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)this.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // 从android系统中调用剪切板的服务
                ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
                String name = "jack";
                clipboardManager.setText(name);
                Intent intent = new Intent(MainActivity.this, OtherActivity.class);
                startActivity(intent);
            }
        });
    }
// OtherActivity.java
public class OtherActivity extends Activity {
    private TextView textView;
    
    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other);
        textView = (TextView)this.findViewById(R.id.msg);
        ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
        String msgString = clipboardManager.getText().toString();
        textView.setText(msgString );
    }

}
使用剪切板 - 传递复杂数据(java对象)
// MyData.java
// 定义传递数据类
public class MyData implements Serializable {
    private String name;
    private int age;
getter/setter/constructor/toString
}
//MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)this.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                MyData myData = new MyData("jack", 18);
                // 将对象转换成字符串
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                String base64String = "";
                try {
                    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
                    objectOutputStream.writeObject(myData);
                    base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
                    objectOutputStream.close();
                    ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
                    clipboardManager.setText(base64String);
                    Intent intent = new Intent(MainActivity.this, OtherActivity.class);
                    startActivity(intent);
                } catch(Exception e) {
                    
                }
            }
        });
    }
//OtherActivity.java
protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other);
        textView = (TextView)this.findViewById(R.id.msg);
        ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
        String msgString = clipboardManager.getText().toString();
        
        byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT);
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte);
        try {
            ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
            MyData myData = (MyData)objectInputStream.readObject();
            textView.setText(myData.toString());
        } catch (Exception e) {
            // TODO: handle exception
        }   
    }

相关文章

网友评论

      本文标题:android基础-01-入门

      本文链接:https://www.haomeiwen.com/subject/wvbqdktx.html