zoukankan      html  css  js  c++  java
  • androidDay01

    Android开发环境

    Android Studio + Genymotion

    Button事件

    1. 新建一个Empty项目
    2. 把默认的Hello word删掉,建立一个Button
      activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <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"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity">
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:id="@+id/button"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    </RelativeLayout>
    
    1. 添加事件,并增加Toast提醒
      MainActivity.java
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "You chicked the button", Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    
    1. 销毁一个活动用finish()
    button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
    

    添加菜单

    1. 在res目录下建一个menu文件夹:
      main_menu.xml
    <?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>
    
    1. 添加菜单事件
      MainActivity.java
    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main_menu, menu);
            return true;
        }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.add_item:
                    Toast.makeText(this, "You chicked Add", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.remove_item:
                    Toast.makeText(this, "You chicked Remove", Toast.LENGTH_SHORT).show();
                    break;
                default:
            }
            return super.onOptionsItemSelected(item);
        }
    

    使用Intent

    显式的Intent

    1. 新建一个second_layout.xml和SecondActivity.java
      second_layout.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button2"
            android:id="@+id/button2"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    </RelativeLayout>
    

    SecondActivity.java

    public class SecondActivity extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second_layout);
        }
    }
    
    1. 在AndroidManifest.xml中为SecondActivity进行注册
     <activity android:name=".SecondActivity"></activity>
    
    1. 修改MainActivity.java中的按钮点击事件
     button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                    startActivity(intent);
                }
            });
    

    隐式的Intent

    1. 修改AndroidManifest.xml
    <activity android:name=".SecondActivity">
                <intent-filter>
                    <action android:name="com.MY_ACTION1"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <category android:name="android.intent.category.MY_CATEGORY"/>
                </intent-filter>
            </activity>
    
    1. 修改MainActivity.java
    button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent("com.MY_ACTION1");
                    intent.addCategory("android.intent.category.MY_CATEGORY");
                    startActivity(intent);
                }
            });
    

    更多的隐式Intent用法

    可以在标签中再配置一个标签,用于更精确地指 定当前活动能够响应什么类型的数据。标签中主要可以配置以下内容。

    1. android:scheme用于指定数据的协议部分。
    2. android:host用于指定数据的主机名部分。
    3. android:port用于指定数据的端口部分,一般紧随在主机名之后。
    4. android:path用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
    5. android:mimeType用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

    android:scheme

    1. 建立一个button
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main); 
            Button intentHttp = (Button) findViewById(R.id.intent1);
            intentHttp.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse("http://www.qq.com"));
                    startActivity(intent);
                }
            });
        }
    
    1. 建立一个空的layout
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent">
    </RelativeLayout>
    
    1. 新建立一个活动
    public class IntentActivity extends AppCompatActivity{
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.intent_layout);
        }
    }
    
    1. 注册活动
            <activity android:name=".IntentActivity">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:scheme="http" />
                </intent-filter>
            </activity>
    

    传递数据给下一个活动

    1. 添加button事件
            Button putExtra = (Button) findViewById(R.id.putExtra);
            putExtra.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String data = "Hello new activity";
                    Intent intent = new Intent(MainActivity.this, PutextraActivity.class);
                    intent.putExtra("extra_data", data);
                    startActivity(intent);
                }
            });
    
    1. 新建一个layout
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent">
    </RelativeLayout>
    
    1. 新建一个活动
    public class PutextraActivity extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.putextra_layout);
            Intent intent = getIntent();
            String data = intent.getStringExtra("extra_data");
            Log.d("PutextraActivity", data);
            System.out.println(">>>>>" + data);
        }
    }
    
    1. 注册活动
          <activity android:name=".PutextraActivity"></activity>
    

    返回数据给上一个活动

    1. 修改上个button的事件
     Button putExtra = (Button) findViewById(R.id.putExtra);
            putExtra.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String data = "Hello new activity";
                    Intent intent = new Intent(MainActivity.this, PutextraActivity.class);
                    intent.putExtra("extra_data", data);
                    //startActivity(intent);
                    startActivityForResult(intent, 1);
                }
            });
    
    1. 给下一个活动重写返回事件
        @Override
        public void onBackPressed() {
            Intent intent = new Intent();
            intent.putExtra("data_return", "Hello MainActivity...");
            setResult(RESULT_OK, intent);
            finish();
        }
    
    1. 给上一个活动重写onActivityResult
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case 1:
                    if (resultCode == RESULT_OK) {
                        String returnedData = data.getStringExtra("data_return");
                        Log.d("MainActivity --> ", returnedData);
                    }
                    break;
                default:
            }
        }
    
  • 相关阅读:
    c#调用dll,::CoInitialize(NULL)出错
    使用 Anthem.NET 的常见回调(Callback)处理方式小结
    主题和皮肤学习
    得到任意网页源代码 (利用WebClient和WebRequest类)
    HTML marquee标签详解
    制作一个简单的天气预报
    CSS中的类class和标识id选择符(.和#号)
    String split '.'
    Map 的 clear() 方法会清空 Map对象
    sqLite 执行查询语句时报错__及SimpleCursorAdapter
  • 原文地址:https://www.cnblogs.com/keer2345/p/5373112.html
Copyright © 2011-2022 走看看