一、环境搭建

1.安装最火、最快的Android模拟器:genymotion模拟器
2.安装服务器WebServer(里面是假数据)
3.在sd卡的根目录下放置WebInfos文件夹

二、ActionBar的显示

活动条(ActionBar)是Android3.0的重要更新之一。ActionBar位于传统标题栏的位置,也就是显示的屏幕的顶部。ActionBar可显示应用的图标和Activity标题——也就是前面应用程序的顶部显示的内容。除此之外,ActionBar的右边还可以显示活动项(Action Item)。
  • Action Bar设计概念在Android3.0(APP 11)中被Google引入以后,在4.0版本之后更是被Google纳入设计规范中,从Google的各大App中都可以看到这种设计。
  • 兼容低版本
    • 引入android-support-v7-appcompat
    • ActionBarCompat在使用中会调用一些资源文件,尤其是基于Theme.Appcompat的主题(Theme)用来规范Action Bar的显示。如果使用Action Bar的Activity没有使用基于Theme.Appcompat的主题,程序就不知道该如何配制Action Bar的显示,就会报错导致程序退出。
    • 继承ActionBarActivity
步骤:
1.引用v7-appcompat
2.Activity继承ActionBarActivity
3.android:theme="@/style/Theme.AppCompat.Lighr"
代码实现:
MainActivity.java
package com.xbmu.google;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}
}

在项目清单文件(AndroidManifest.xm)中的Application标签里修改:

<applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/Theme.AppCompat.Light" ><activityandroid:name="com.xbmu.google.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>

运行效果:

三、ActionBar的搜素

学习参考Api Demos中的代码:
首先看一下Api Demos中Action Bar的搜素的案例:
将Api Demos的工程导入开发工具中,找到代码:

四、搜素功能

在我们项目中实现搜素功能:
参考Android开发文档:http://wear.techbrood.com/
res/menu/main_activity_actions.xml
MainActivity.java
package com.xbmu.google;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnQueryTextListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.main_activity_actions, menu);SearchView searchView  = (SearchView) menu.findItem(R.id.action_search).getActionView();searchView.setOnQueryTextListener(this);//设置搜素的监听事件return true;}/**处理actionBar菜单条目的点击事件*/@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId() == R.id.action_search){Toast.makeText(getApplicationContext(), "搜素", 0).show();}return super.onOptionsItemSelected(item);}//当搜素文本发生变化的时候@Overridepublic boolean onQueryTextChange(String newText) {Toast.makeText(getApplicationContext(), newText, 0).show();return false;}//当搜素提交的时候@Overridepublic boolean onQueryTextSubmit(String query) {Toast.makeText(getApplicationContext(), query, 0).show();return false;}
}

运行效果:

五、ActionBar返回按钮的处理

详情页面DetailActivity.java
package com.xbmu.google;import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
public class DetailActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_detail);}
}

activity_detail.xml

<?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"android:orientation="vertical" ><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="详情页面"android:layout_centerInParent="true"/>
</RelativeLayout>

在清单文件中声明:

 <activityandroid:name="com.xbmu.google.DetailActivity"android:label="@string/app_detail"android:parentActivityName="com.xbmu.google.MainActivity" ><!-- Parent activity meta-data to support 4.0 and lower --><meta-dataandroid:name="android.support.PARENT_ACTIVITY"android:value="com.xbmu.google.MainActivity" /></activity>
MainActivity.java:
package com.xbmu.google;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnQueryTextListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar actionBar = getSupportActionBar();//设置是否将应用程序图标转变成可点击的图标,并在图标上添加一个向左的箭头。actionBar.setDisplayHomeAsUpEnabled(true);}public void jump(View view){Intent intent = new Intent(this, DetailActivity.class);startActivity(intent);}//......
}
activity_main.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" ><Button android:layout_width="match_parent"android:layout_height="wrap_content"android:text="跳转到详情页面"android:onClick="jump"/>
</RelativeLayout>

运行效果图:

六、给ActionBar添加tab标签

1.在Drawable目录下写一个标签的状态选择器
res/drawable/actionbar_tab_indicator.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- STATES WHEN BUTTON IS NOT PRESSED --><!-- Non focused states --><item android:state_focused="false" android:state_selected="false"android:state_pressed="false"android:drawable="@drawable/tab_unselected" /><item android:state_focused="false" android:state_selected="true"android:state_pressed="false"android:drawable="@drawable/tab_selected" /><!-- Focused states (such as when focused with a d-pad or mouse hover) --><item android:state_focused="true" android:state_selected="false"android:state_pressed="false"android:drawable="@drawable/tab_unselected_focused" /><item android:state_focused="true" android:state_selected="true"android:state_pressed="false"android:drawable="@drawable/tab_selected_focused" /><!-- STATES WHEN BUTTON IS PRESSED --><!-- Non focused states --><item android:state_focused="false" android:state_selected="false"android:state_pressed="true"android:drawable="@drawable/tab_unselected_pressed" /><item android:state_focused="false" android:state_selected="true"android:state_pressed="true"android:drawable="@drawable/tab_selected_pressed" /><!-- Focused states (such as when focused with a d-pad or mouse hover) --><item android:state_focused="true" android:state_selected="false"android:state_pressed="true"android:drawable="@drawable/tab_unselected_pressed" /><item android:state_focused="true" android:state_selected="true"android:state_pressed="true"android:drawable="@drawable/tab_selected_pressed" />
</selector>

2.实现自定义主题:

res/values/themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources><!-- the theme applied to the application or activity --><style name="CustomActionBarTheme"parent="@style/Theme.AppCompat.Light"><item name="android:actionBarTabStyle">@style/MyActionBarTabs</item></style><!-- ActionBar tabs styles --><style name="MyActionBarTabs"parent="@style/Widget.AppCompat.ActionBar.TabView"><!-- tab indicator --><item name="android:background">@drawable/actionbar_tab_indicator</item></style>
</resources>

3.在MainActivity.java中添加标签代码:

package com.xbmu.google;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
import android.support.v7.app.ActionBar.TabListener;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnQueryTextListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar actionBar = getSupportActionBar();//设置是否将应用程序图标转变成可点击的图标,并在图标上添加一个向左的箭头。actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);Tab tab1 = actionBar.newTab().setText("标签一").setTabListener(new MyTabListener());actionBar.addTab(tab1);Tab tab2 = actionBar.newTab().setText("标签二").setTabListener(new MyTabListener());actionBar.addTab(tab2);Tab tab3 = actionBar.newTab().setText("标签三").setTabListener(new MyTabListener());actionBar.addTab(tab3);Tab tab4 = actionBar.newTab().setText("标签四").setTabListener(new MyTabListener());actionBar.addTab(tab4);Tab tab5 = actionBar.newTab().setText("标签五").setTabListener(new MyTabListener());actionBar.addTab(tab5);}private class MyTabListener implements TabListener{@Overridepublic void onTabReselected(Tab arg0, FragmentTransaction arg1) {// TODO Auto-generated method stub}@Overridepublic void onTabSelected(Tab arg0, FragmentTransaction arg1) {// TODO Auto-generated method stub}@Overridepublic void onTabUnselected(Tab arg0, FragmentTransaction arg1) {// TODO Auto-generated method stub}}public void jump(View view){Intent intent = new Intent(this, DetailActivity.class);startActivity(intent);}@SuppressLint("NewApi")@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.main_activity_actions, menu);//如果运行的环境(部署到什么版本的手机)大于3.0if(android.os.Build.VERSION.SDK_INT > 11){SearchView searchView  = (SearchView) menu.findItem(R.id.action_search).getActionView();searchView.setOnQueryTextListener(this);//设置搜素的监听事件           }return true;}/**处理actionBar菜单条目的点击事件*/@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId() == R.id.action_search){Toast.makeText(getApplicationContext(), "搜素", 0).show();}return super.onOptionsItemSelected(item);}//当搜素文本发生变化的时候@Overridepublic boolean onQueryTextChange(String newText) {Toast.makeText(getApplicationContext(), newText, 0).show();return false;}//当搜素提交的时候@Overridepublic boolean onQueryTextSubmit(String query) {Toast.makeText(getApplicationContext(), query, 0).show();return false;}
}

运行效果:

七、抽屉&抽屉的开关

布局文件activity_main.xml
<android.support.v4.widget.DrawerLayout 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:id="@+id/dl"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerHorizontal="true"android:layout_centerVertical="true" /><FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="left"android:background="@drawable/bg_tab" /></android.support.v4.widget.DrawerLayout>

MainActivity.java:

package com.xbmu.google;import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
import android.support.v7.app.ActionBar.TabListener;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;public class MainActivity extends ActionBarActivity implementsOnQueryTextListener {private ActionBarDrawerToggle drawerToggle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.dl);ActionBar actionBar = getSupportActionBar();//设置是否将应用程序图标转变成可点击的图标,并在图标上添加一个向左的箭头。actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);Tab tab1 = actionBar.newTab().setText("标签一").setTabListener(new MyTabListener());actionBar.addTab(tab1);Tab tab2 = actionBar.newTab().setText("标签二").setTabListener(new MyTabListener());actionBar.addTab(tab2);Tab tab3 = actionBar.newTab().setText("标签三").setTabListener(new MyTabListener());actionBar.addTab(tab3);Tab tab4 = actionBar.newTab().setText("标签四").setTabListener(new MyTabListener());actionBar.addTab(tab4);Tab tab5 = actionBar.newTab().setText("标签五").setTabListener(new MyTabListener());actionBar.addTab(tab5);actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setHomeButtonEnabled(true);//设置是否将应用程序图标转变成可点击的按钮drawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout, R.drawable.ic_drawer_am, //R.string.open_drawer, R.string.close_drawer){@Overridepublic void onDrawerClosed(View drawerView) {super.onDrawerClosed(drawerView);Toast.makeText(getApplicationContext(), "抽屉关闭了", 0).show();}@Overridepublic void onDrawerOpened(View drawerView) {super.onDrawerOpened(drawerView);Toast.makeText(getApplicationContext(), "抽屉打开了", 0).show();}};mDrawerLayout.setDrawerListener(drawerToggle);//让开关和actionBar建立关系drawerToggle.syncState();}private class MyTabListener implements TabListener {@Overridepublic void onTabReselected(Tab arg0, FragmentTransaction arg1) {// TODO Auto-generated method stub}@Overridepublic void onTabSelected(Tab arg0, FragmentTransaction arg1) {// TODO Auto-generated method stub}@Overridepublic void onTabUnselected(Tab arg0, FragmentTransaction arg1) {// TODO Auto-generated method stub}}public void jump(View view) {Intent intent = new Intent(this, DetailActivity.class);startActivity(intent);}@SuppressLint("NewApi")@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.main_activity_actions, menu);// 如果运行的环境(部署到什么版本的手机)大于3.0if (android.os.Build.VERSION.SDK_INT > 11) {SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();searchView.setOnQueryTextListener(this);// 设置搜素的监听事件}return true;}/** 处理actionBar菜单条目的点击事件 */@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if (item.getItemId() == R.id.action_search) {Toast.makeText(getApplicationContext(), "搜素", 0).show();}return drawerToggle.onOptionsItemSelected(item)|super.onOptionsItemSelected(item);}// 当搜素文本发生变化的时候@Overridepublic boolean onQueryTextChange(String newText) {Toast.makeText(getApplicationContext(), newText, 0).show();return false;}// 当搜素提交的时候@Overridepublic boolean onQueryTextSubmit(String query) {Toast.makeText(getApplicationContext(), query, 0).show();return false;}
}

运行效果图:

以上关于ActionBar的使用可以参考http://wear.techbrood.com/training/basics/actionbar/index.html
全部代码下载地址:
http://download.csdn.net/detail/btt2013/9355011

谷歌电子市场学习笔记第一天之上相关推荐

  1. 谷歌电子市场学习笔记第四天

    一.HomePictureHolder.java & 使用ViewPager控件完成广告条效果 HomePictureHolder.java package com.xbmu.google.h ...

  2. 谷歌电子市场学习笔记第三天

    一.抽取DefaultAdapter & BaseHolder 1 .抽取Adapter 共性的方法 . 2. 把getView方法里 和holder相关的逻辑 摘取到Holder代码中 . ...

  3. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  4. 编译原理(龙书)学习笔记 第一章

    编译原理(龙书)学习笔记 第一章 1.1语言处理器 解释器(interpreter) : 编译器(compiler): 一个语言处理系统 练习 1.1.1:编译器和解释器之间的区别 1.1.2:相对优 ...

  5. 惯性导航系统学习笔记——第一讲

    惯性导航系统学习笔记 第一讲 惯性导航系统概述 一.惯性导航基本概念 二.惯性导航基本原理 三.惯性导航应用与发展 四.小结 第一讲 惯性导航系统概述 本文为学习朱家海教授<惯性导航系统> ...

  6. Pyhton学习笔记第一天(Python基本语句)

    Python学习笔记第一天 注释 行注释 块注释 输出语句 举一反三 标识符 举一反三 多行语句 结束语 注释 什么是注释,注释相当于备注的信息,也可以在调试代码的时候隐藏执行代码,但只适合新手.老手 ...

  7. Mybatis学习笔记——第一天

    Mybatis学习打卡 Mybatis学习笔记---第一天 Mybatis笔记 第一天 一.引言 1. 现有Jdbc的缺陷 2. Mybatis框架 3. 搭建环境 1) 引入jar包 2) 引入配置 ...

  8. 小吴的《机器学习 周志华》学习笔记 第一章 绪论

    小吴的<机器学习 周志华>学习笔记 第一章 绪论 近一年时间接触到不少机器学习的知识,虽然断断续续学了一些,总感觉还没有入门(只学会了疯狂调包).因此,最近开始系统学习Machine Le ...

  9. 【PSCAD学习笔记第一期】建立一个Bergeron Model

    [PSCAD学习笔记第一期]建立一个Bergeron Model Step1-创建一个TLine组件 在想要添加组件的工作区右击,选择Component Wizard 在弹出的界面选择Transmis ...

  10. 数据库学习笔记第一弹——MySQL8.0和MySQL5.7的下载、安装与配置(图文详解步骤2022)

    数据库学习笔记第一弹--MySQL8.0和MySQL5.7的下载.安装与配置(图文详解步骤2022) 文章目录 数据库学习笔记第一弹--MySQL8.0和MySQL5.7的下载.安装与配置(图文详解步 ...

最新文章

  1. KEIL MDK LIB库文件的制作
  2. 用户交互php源码,phpWebSite ,容许个人和群组用户很容易地维护一个交互式社区驱动的站点.phpWebSite...
  3. 访问数组元素进行赋值
  4. 一个罐子统治一切:Apache TomEE + Shrinkwrap == JavaEE引导
  5. 哈夫曼算法证明+哈夫曼编码译码程序实现
  6. 零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承
  7. ISO9000软件使用管理办法
  8. Fatal error: Allowed memory size of 524288000 bytes exhausted (tried to allocate 64 bytes) in D
  9. docker教程_7 Docker-Compose
  10. C#+TaskScheduler(定时任务)实现定时自动下载
  11. C语言深度剖析-----数组基础
  12. unreal4怎么设置游戏模式_怎么使用虚幻4开发游戏?
  13. 腾讯加入QQ群 连接代码
  14. javascript中继承的几种方式
  15. 三维地图开发三维地图服务器
  16. c#窗体设计 鼠标靠近 控件显示 提示 备注 信息
  17. php爬拉钩数据,拉勾网数据两种爬取
  18. java 线程resume_为什么java线程不推荐调用stop,suspend,resume方法
  19. ansys 服务器无响应,ansys链接不到本地服务器
  20. Allegro和Alitum Desiger PCB文件互转方法

热门文章

  1. 通用型CRC校验算法
  2. LINGO使用教程(一)
  3. 运筹学 美国人在计算机上实现的四,运筹学试卷及答案.
  4. matlab画图 横坐标为年月
  5. 软件开发介绍-尚硅谷视频学习随记
  6. OpenX系列标准:OpenDRIVE标准简述
  7. 【数据库】数据库系统工程师(软考中级)——学习过程总结
  8. 计算机主机运行显示屏黑屏,电脑开机黑屏_电脑启动显示器黑屏的原因和检修-太平洋IT百科...
  9. matlab如何从视频中分离音频文件,如何从视频中分离音频文件 值得收藏
  10. DM使用过程中几个常见的问题