zoukankan      html  css  js  c++  java
  • Pro Android学习笔记 ActionBar(1):Home图标区

    

    Pro Android学习笔记(四八):ActionBar(1):Home图标区

    2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 评论关闭

    ActionBar在Android 3.0 SDK中为平板引入,在4.0中也能够在phone中使用。在title中提供类似tab和菜单的效果,有三种形式:Tabbed action bar,list action bar和standard action bar,我们将在小样例中进行示范。

    Home Icon

    在Action Bar的最左边,就是Home icon和标题的区域,如上图红圈内。在Home icon的左边有一个返回的的左箭头,通常我们点击这个区域,将回到应用的主activity中。图中的activity是通过主activity的菜单触发。之前已经多次使用,不在反复。activity的layout非常easy,仅仅有一个textview在LinearLayout中,其代码例如以下:

    源码

    public class HomePressTestCase1 extends Activity{
        private TextView tv = null;
        private ActionBar  bar = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState);
           
            setContentView(R.layout.basic_test);
            tv = (TextView)findViewById(R.id.textViewId);
            tv.setMovementMethod(ScrollingMovementMethod.getInstance());//设置TextView内容过多时,能够通过鼠标进行滚动
            tv.setText("");

            //在android 4.0后。缺省是不监听Home icon动作。要有效使用。必须进行以下的设置
            bar = getActionBar();  //获取ActionBar的对象,从这种方法也可知action bar是activity的一个属性
            bar.setDisplayHomeAsUpEnabled(true); 
    //显示返回的箭头,并可通过onOptionsItemSelected()进行监听。其资源ID为android.R.id.home。


            // bar.setHomeButtonEnabled(true); //不显示箭头符号,同意通过onOptionsItemSelected()进行箭头。但一般的情况下。还是应该给个箭头提示给用户。 
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) { 
            switch(item.getItemId()){
            case android.R.id.home: //对用户按home icon的处理,本例仅仅需关闭activity。就可返回上一activity,即主activity。
                showInfo("Home is press");
                finish();
                return true;
            default:
                break;
            }
            return super.onOptionsItemSelected(item);
        }

        protected void showInfo(String s){
            tv.setText(s + " " + tv.getText());
            Log.d(getLocalClassName(),s);
        }

    }

    TextView的滚动

    我们能够将整个layout设置为ScrollView。可是TextView本身能够设置滚动,在xml中相关的属性例如以下。并在代码中通过setMovementMethod(ScrollingMovementMethod.getInstance() )使之有效。

    <TextView android:id="@+id/textViewId"  
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:scrollbars="vertical"
        android:scrollbarStyle="insideOverlay"
        android:scrollbarSize="25dip"
        android:scrollbarFadeDuration="0"
        />

    返回主activity或指定activity

    假设上一activity并不是主activity。而我们有希望直接返回主activity,能够例如以下处理:

    public boolean onOptionsItemSelected(MenuItem item) { 
        switch(item.getItemId()){
        case android.R.id.home:
            showInfo("Home is pressed");
            Intent i = new Intent(this,MainActivity.class);
            //【对于FLAG_ACTIVITY_CLEAR_TOP】:如果眼下activity的task堆栈是 MainActivity –> A –> B –> 当前Activity(如果我们按返回键,则依次返回B,A,最后为MainActivity。如今intent要唤起MainActivity。发如今堆栈存在,则将其及之前的所有清楚。在唤起新的activity后,task堆栈为MainActivity。注意,通过跟踪activity的对象,将产生一个新的MainActivity的实例。不是原来的,原来的已经被干掉。又比如当前为C—>
    M—>A—>B—>当前,假设打开M,则运行后。推展为C—>M。


            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(i);
            return true;
        default:
            break;
        }
        return super.onOptionsItemSelected(item);

    }

    在Android 4.1之后(API Level 16),有更方便的处理方式,在AndroidManifest.xml中设置返回的activity就可以。xml的片段例如以下:

     <activity android:name=".HomePressTestCase1" android:label="@string/test_case_1_home"
                android:parentActivityName="cn.wei.flowingflying.pro.MainActivity" />

    我们仅仅需设置parentActivityName,用户按Home icon区域。不须要人工代码进行处理,就能够实现上面通过设置flag的intent代码的实现。

    java代码可进一步简化:

      public boolean onOptionsItemSelected(MenuItem item) {
            if(item.getItemId() == android.R.id.home){
                showInfo("Home is press");
            }   
            return super.onOptionsItemSelected(item);
        }

  • 相关阅读:
    2-反向调试
    1-断点调试
    gdb基础用法
    protobuf学习手册(上)
    1024 科学计数法 (20 分)
    1023 组个最小数 (20 分)
    1018 锤子剪刀布 (20 分)
    1015 德才论 (25 分)
    1020 月饼 (25 分)
    1019 数字黑洞 (20 分)
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6915198.html
Copyright © 2011-2022 走看看