Android编程学习日志——活动的初体验

android:layout_width=""(宽度)         &&            android:layout_height=""(高度)

                确定活动的大小。

                选项有:"match_parent"同父进程一样;    "wrap_content"视情况而定。


2、所有的活动都必须要在 AndroidManifest.xml 文件中注册,才能使用。大抵的内容如下:

             <manifest xmlns="http://schemas.android.com/apk/res/android

                                       package = "com.example.activitytest">            // package此处指向的是你的Java源包

                  <application

                            android:allowBackup = "true"

                            android:icon = "@mipmap/ic_launcher"

                            android:label = "@string/app_name"                            // application的默认名称,可以随意更改的内容。

                            android:supportsRtl = "true"

                            android:theme = "@style/AppTheme"                            // 选择 application 的主题。

                            <activity android:name = ".FirstActivity"                       // "."是省略了这个包的路径,和Unix的"."路径很像。

                                        android:theme = "@style/....."                             // 可以为这一个activity定义一个主题。

                                        android:label = "........">                                           // 单独定义这个 activity 的名称

                                        <intent-filter>

                                                    <action android:name = "android.intent.action.MAIN"            // 设置这个界面为主界面,即开启App时,进入的第一个界面。

                                                    <category android:name = "android.intent.category.LAUNCHER"/>        // 设置category。

                                        </intent-filter>

                              </activity>

                 </application>

            </manifest>

    活动的注册声明必须要放在 <application> 标签内,这里是通过 <activity> 标签来进行活动的注册的。"android:name" 用来确定具体注册那个活动。

   <intent-filter> 声明在 <activity> 标签里面,其中"action android:name"只能有一个,"category"可以声明注册多个。


3、Toast的使用,在活动中。

        Toast 是 android 系统提供的一个提醒方式,使用一些简短的信息通知用户,这些信息会在一段时间自动消失。

                .....        // 在 onCreate 方法中。

                Button button = (Button) findViewById(R.id.button);                

                button.setOnClickListener(new OnClickListener() {

                            @Override                                             // 防止方法覆盖错误

                            public void onClick(View v) {

                                    Toast.makeText(activity_name.this, "You", Toast.LENGTH_SHORT).show();

                                    Toast.makeText(activity_name.this, "Y" + "ou", Toast.LENGTH_SHORT).show();

                            }

                });

                ......

        在活动中,可以通过 findViewById() 方法获取到在布局文件中定义的元素,参数为元素的 Id。Toast的makeText的参数,第一个为 Context,第二个为内容显示的,第三个为显示的时长(LENGTH_SHORT && LENGTH_LONG)。


3、menu的创建。

        创建 menu 文件夹,在res里面,通过res->New->Directory;在创建一个文件在menu文件夹里。

                <menu xmlns:android = "http://schemas.android.com/apk/res/android">

                        <item

                                android:id = "@+id/add_time"

                                android:title = "Add" />

                        <item

                                android:id = "@+id/remove

                                android:title = "Remove" />

                </menu>

        <item> 标签创建具体的某一个菜单项,android:id 來指定其中的唯一标识符,android:title 为这个菜单项指定一个名称。

        回到 Activity 里面,重写 onCreateOptionMenu() 方法:

                public boolean onCreateOptionMenu(Menu menu) {

                        getMenuInflater().inflate(R.menu.mian, menu);

                        return true;

                }

        getMenuInflater方法能够得到MenuInflater对象,在调用它的inflate方法。

        还要再定义一个菜单的响应事件,重写 onOptionItemSelected() 方法:

                public boolean onOptionItemSelected(MenuItem item) {

                            switch (item.getItemId()) {

                            case IdName:

                                            ....   

                            default:

                            }

                return true;

                }


3、销毁一个活动用finish方法。


4、Intent在活动中穿梭。

        Intent intent = new Intent(This_activity_name.this, To_activity_name.class);

        Intent intent = new Intent(Intent.ACTION_VIEW);

        Intent intent = new Intent();

        开启活动:

                startActivity(intent);

                startActivity(intent, returnDataNumber);            // 带返回值开启活动。

        对Intent 的进一步设置:

                intent.addCategory(".............................");                // 调用的活动的布局文件中的category定位。

                intent.setDate(Uri.parse("http://www.duckduckgo.com"));            // 调用浏览器浏览duckduckgo网站。

                可以在<intent-filter>标签里在配置一个<data>标签,用于更精确的指定当前活动的类型。

                        android:scheme    指定数据协议。                android:host    指定数据的主机名。

                        android:port          指定数据的端口部分,一般紧随在用户名之后。   

                        android:path         用于指定主机名和端口之后的部分,如一个网址后面的内容。

                        android:mineType         用于指定可以处理的数据类型,允许使用通配符的方式进行指定。


4、向活动传递数据

        intent.putExtra("key_value", “Your Data");

        Intent intent = getIntent();

        String data = intent.getStringExtra("key_value");


        startActivityForResult(intent, 1);

        Intent intent = new Intent();

        intent.putExtra("key_value", "Your Data");

        setResult(RESULT_OK, intent);

        protect void onActivityForResult(int requestCode, int resultCode, Intent data) {

                switch (requestCode) {

                    case 1:

                            if (resultCode == RESULT_OK) {

                                     String returnData = data.getStringExtra("key_value");

                            }

               ......

        }

        public void onBackPressed();


5、程序的返回栈

        protected void onStart();

        protected void onResume();

        protected void onPause();

        protected void onStop();

        protected void onDestory();

        protected void onRestart();


6、启动模式:standard、singleTop、singleTask、singleInstance

        Intent intent = new Intent(First.this, First.class); 使用相同的布局文件的定义,生成一个新的activity。

        <activity ..... android:launchMode="..."> 可以设定启动模式。

        standard:自动生成一个,不管栈中是否存在。

        singleTop:只检查栈顶,如果有,直接使用。

        singleTask:检查全栈,如果有,直接使用此实例,并把之上的所有活动统统出栈。

        singleInstance:在这个模式下,会有一个单独的返回栈来管理这个活动,不管是那个应用程序来访问这个活动,都使用同一个返回栈,也解决了共享实例的功能。

        getTaskId():获得当前界面的ID。


7、继承BaseActivity类以实现输出当前界面的Java类,别的类继承BaseActivity类。

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedImstanceState);

            Log.d("BaseActivity :", getClass().getSimpleName());

        }

        getClass().getSimpleName():获取当前的界面Java源的名字。


8、随时退出程序。

 
 
public class ActivityCollector {
    public static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}
// BaseActivity里面的添加
 
ActivityCollector.addActivity(this)
@Override
protected void onDestroy() {
    super.onDestroy();
    ActivityCollector.finishAll();
}

9、启动活动的最佳写法

        public static void actionStart(Context context, String data1, String data2) {

                Intent intent = new Intent(context, SecondeActivity.class);

                intent.putExtra("param1", data1);

                intent.outExtra("param2", data2);

                context.startActivity(intent);

        }


猜你喜欢

转载自blog.csdn.net/Okashi_mono/article/details/80040780