安卓开发入门

2017-09-02  本文已影响56人  一二三是五六十

1.1 活动

活动是什么

活动的用法

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.jianshudemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>
Toast.makeText(this, "hello world", Toast.LENGTH_SHORT).show();
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add_item"
          android:title="Add"
          />

    <item android:id="@+id/remove_item"
          android:title="Remove"/>
</menu>
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(this, "ADD", Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this, "REMOVE", Toast.LENGTH_SHORT).show();
                break;
        }
        
        return true;
    }
finish()  

Intent

显示Intent

明确的告知启动的是哪个目标
MainActivity.this 当前类的对象
SecondActivity.class 目录类对象

   button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });

隐式Intent

不明确指出启动哪个目录
com.example.jianshudemo.ACTION_START 用来指定动作
intent.addCategory("com.example.jianshudemo.MY_CATEGORY"); 用来指定目录
只有actioncategory匹配才能响应Intent
一个Intent只能添加一个action,却可以指定多个category


 button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.jianshudemo.ACTION_START");
                intent.addCategory("com.example.jianshudemo.MY_CATEGORY");
                startActivity(intent);
            }
        });

向下一活动传递数据

 intent.putExtra("key","value");

下一活动取数据 ,getXxxExtra 根据数据类型不同传入指定的类型获取数据

getIntent().getStringExtra("key");

返回数据给上一个活动

  1. 上一活动使用startActivity 并设置请求码
  2. 下一活动使用setResult 并设置返回码
  3. 上一活动重写父类的OnActivityResult方法, 判断请求码和返码是否一致,取数据
intent.png

活动的生命周期

1.2 UI

 button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               new AlertDialog.Builder(MainActivity.this)
                       .setTitle("这是一个对话框")
                       .setMessage("这里展示很重要的信息")
                       .setCancelable(false)
                       .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                           @Override
                           public void onClick(DialogInterface dialog, int which) {

                           }
                       })
                       .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                           @Override
                           public void onClick(DialogInterface dialog, int which) {

                           }

                       })
                       .show();
            }
        });

引入布局

引入布局可以实现布局的重用

<include layout="@layout/title"/>

RecyclerView

  1. 引入依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
  1. 加入布局文件
 <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
  1. 创建适配器
public class FruitAdapter extends RecyclerView.Adapter {
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }
}
  1. 创建ViewHolder静态内嵌类
public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }

    static class ViewHolder extends RecyclerView.ViewHolder{

        public ViewHolder(View itemView) {
            super(itemView);
        }
    }
}
  1. 设置布局管理器
recyclerView.setLayoutManger(new LinearLayoutManger(this));
  1. 填充数据
recyclerView.setAdater(new FruitAdapter(mDatas));
上一篇下一篇

猜你喜欢

热点阅读