且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ActionBar详解(三)--->ActionBar的Home导航功能

更新时间:2022-08-26 13:53:13

FirstActivity如下:

package cc.testsimpleactionbar2;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
 * Demo描述:
 * ActionBar的Home导航功能.
 * 即点击ActionBar的一个按钮,回到App的首页.
 * 
 * 具体实现:
 * 在ActionBar上设置一个"Home",点击"Home"
 * 时回到指定位置即可
 * 
 * 备注说明:
 * 该示例是在testsimpleactionbar1的基础上进行的
 * 增加的代码很少.
 * 
 * 参考资料:
 * 1 Android疯狂讲义(第二版)
 *   Thank you very much
 *
 */
public class FirstActivity extends Activity {
	private Button mFirstButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.first);
		init();
	}

	private void init(){
		mFirstButton=(Button) findViewById(R.id.firstButton);
		mFirstButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent(FirstActivity.this, SecondActivity.class);
				startActivity(intent);
			}
		});
	}

}


SecondActivity如下:

package cc.testsimpleactionbar2;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SecondActivity extends Activity {
	private Button mSecondButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		init();
	}

	private void init(){
		mSecondButton=(Button) findViewById(R.id.secondButton);
		mSecondButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent(SecondActivity.this, ThirdActivity.class);
				startActivity(intent);
				
			}
		});
	}

}


ThirdActivity如下:

package cc.testsimpleactionbar2;

import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
/**
 * 核心代码:
 * mActionBar.setDisplayHomeAsUpEnabled(true);
 *
 */
public class ThirdActivity extends Activity {
	private ActionBar mActionBar;
	private TextView mTipTextView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.third);
		init();
	}

	private void init(){
		mActionBar=getActionBar();
		//设置是否显示应用程序的图标
		mActionBar.setDisplayShowHomeEnabled(true);
		//将应用程序图标设置为可点击的按钮
		mActionBar.setHomeButtonEnabled(true);
		//将应用程序图标设置为可点击的按钮,并且在图标上添加向左的箭头
		//该句代码起到了决定性作用
		mActionBar.setDisplayHomeAsUpEnabled(true);
		mTipTextView=(TextView) findViewById(R.id.tipTextView);
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.action_menu, menu);
		return true;
	}
	
	// 菜单项被选中时执行该方法
	@Override
	public boolean onOptionsItemSelected(MenuItem menuItem) {
		if (menuItem.isCheckable()) {
			menuItem.setChecked(true);
		}
		switch (menuItem.getItemId()) {
		case android.R.id.home:
			//点击到我们ActionBar中设置的Home按钮
			Intent intent = new Intent(this, FirstActivity.class);
			intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
			startActivity(intent);
			break;
		case R.id.font10:
			mTipTextView.setTextSize(10 * 2);
			break;
		case R.id.font12:
			mTipTextView.setTextSize(12 * 2);
			break;
		case R.id.font14:
			mTipTextView.setTextSize(14 * 2);
			break;
		case R.id.font16:
			mTipTextView.setTextSize(16 * 2);
			break;
		case R.id.font18:
			mTipTextView.setTextSize(18 * 2);
			break;
		case R.id.redFont:
			mTipTextView.setTextColor(Color.RED);
			break;
		case R.id.greenFont:
			mTipTextView.setTextColor(Color.GREEN);
			break;
		case R.id.blueFont:
			mTipTextView.setTextColor(Color.BLUE);
			break;
		case R.id.plain_item:
			Toast toast = Toast.makeText(ThirdActivity.this, "单击了普通菜单项",Toast.LENGTH_SHORT);
			toast.show();
			break;

		default:
			break;
		}
		return true;
	}

}


first.xml如下:

<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" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dip"
        android:text="这是第一个Activity"
        android:textSize="20sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/firstButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:text="跳到第二个Activity"
        android:textSize="16sp" />

</RelativeLayout>


second.xml如下:

<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" >
    
     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dip"
        android:text="这是第二个Activity"
        android:textSize="20sp"
        android:textStyle="bold" />

     <Button
        android:id="@+id/secondButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="跳到第三个Activity"
        android:textSize="16sp"
        android:gravity="center"
     />

</RelativeLayout>


third.xml如下:

<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" >
    
     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dip"
        android:text="这是第三个Activity"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tipTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="修改文字大小和颜色"
        android:textSize="16sp"
        android:gravity="center"
     />

</RelativeLayout>


action_menu.xml如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
     <item 
         android:title="文字大小"
         android:icon="@drawable/font"
         android:showAsAction="always|withText">
         <menu>
             <group android:checkableBehavior="single">
                 <item 
                     android:id="@+id/font10"
                     android:title="10"
                     />
                 <item 
                     android:id="@+id/font12"
                     android:title="12"
                     />
                 <item 
                     android:id="@+id/font14"
                     android:title="14"
                     />
                 <item 
                     android:id="@+id/font16"
                     android:title="16"
                     />
                 <item 
                     android:id="@+id/font18"
                     android:title="18"
                     />
             </group>
         </menu>
     </item>
     
     <item 
         android:id="@+id/plain_item"
         android:icon="@drawable/ic_launcher"
         android:title="普通菜单项"
         android:showAsAction="always|withText"
     />
    
     <item 
         android:title="设置颜色"
         android:icon="@drawable/color"
         android:showAsAction="always|withText">
         <menu>
             <group>
                 <item 
                     android:id="@+id/redFont"
                     android:title="红色"
                     />
                 <item 
                     android:id="@+id/greenFont"
                     android:title="绿色"
                     />
                 <item 
                     android:id="@+id/blueFont"
                     android:title="蓝色"
                     />
             </group>
         </menu>
     </item>

</menu>