Android第一行代码

活动

活动是什么?

是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序中可以包含零个或多个活动

活动的基本用法

Toast的使用

Toast.makeText(MainActivity.this, "hhhhhh", Toast.LENGTH_SHORT).show();

Toast的用法非常简单,通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来就可以了。这里需要注意的是,makeText()方法需要传入3个参数。第一个参数是Context,也就是Toast要求的上下文,由于活动本身就是一个Context对象,因此这里直接传入MainActivity.this即可。第二个参数是Toast显示的文本内容,第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG。

使用Menu

创建menu下的main.xml文件



    
    

将menu的main.xml文件添加到menu中

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

效果

Android第一行代码_第1张图片

添加监听事件

在onOptionsItemSelected()方法中,通过调用item.getItemId()来判断我们点击的是哪一个菜单项

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.add_item:
            Toast.makeText(this, "点击添加按钮", Toast.LENGTH_SHORT).show();
            break;
        case R.id.delete_item:
            Toast.makeText(this, "点击删除按钮", Toast.LENGTH_SHORT).show();
            break;
        default:
    }
    return true;
}

销毁一个活动

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

Intent

使用显式Intent

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);

使用隐式Intent


    
        

        
        
    
Intent intent = new Intent("com.ypf.second_layout.action_start");
intent.addCategory("com.ypf.second_layout.category_start");
startActivity(intent);

更多隐式Intent的用法

解析网址

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

调用拨号

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);

向下一个活动传递数据

String data = "data";
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra(data, data);
startActivity(intent);
String data = getIntent().getStringExtra("data");

返回数据给上一个活动

发送逻辑

@Override
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    startActivityForResult(intent, 1);
}

得到返回数据

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case 1:
            if (resultCode == RESULT_OK) {
                String returnData = data.getStringExtra("returnData");
                Log.d(TAG, "onActivityResult: " + returnData);
            }
            break;
        default:
    }
}

返回逻辑

@Override
public void onClick(View v) {
    Intent intent = new Intent();
    intent.putExtra("data", "data");
    setResult(RESULT_OK, intent);
    finish();
}

按下Back键来返回

@Override
public void onBackPressed() {
    Intent intent = new Intent();
    intent.putExtra("data", "data");
    setResult(RESULT_OK, intent);
    finish();
}

活动的启动模式

standard

在standard模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。每次启动都会创建该活动的一个新的实例

singleTop

在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。不过当FirstActivity并未处于栈顶位置时,这时再启动FirstActivity,还是会创建新的实例的


    
        

        
    

singleTask

当活动的启动模式指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

android:launchMode="singleTask"

singleInstance

指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动(其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈)。

UI

ProgressBar

进度条设置为水平样式

style="?android:attr/progressBarStyleHorizontal"

获取进度值和设置进度值

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

设置是否隐藏

设置为隐藏且不占空间
progressBar.setVisibility(View.GONE);
设置为隐藏但是占用空间
progressBar.setVisibility(View.INVISIBLE);
显示
progressBar.setVisibility(View.VISIBLE);

 

你可能感兴趣的:(Android)