ActionBar
ActionBar的主要目的是:
1.提供一个用于识别应用程序的标示和用户的位置的专用空间
2.在不同的应用程序直接提供一致的导航和视觉体验。
3.突出Activity的关键操作(如“搜索”、“创建”、“共享”等),并在可预见的方法内给用户提供快捷的访问。
获得ActionBar的方法:ActionBar actionBar = this.getActionBar();
注意代码中的主题设置是否为去掉ActionBar,否则getActionBar()将返回null
增加删除ActionBar
ActionBar actionBar = getSupportActionBar();//获得ActionBar
actionBar.hide(); //删除ActionBar
ActionBar菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_setting" android:title="Settings"
android:orderInCategory="100" app:showAsAction="never"/>
<item android:id="@+id/exit" android:title="exit"
android:orderInCategory="200" app:showAsAction="ifRoom|withText"/>
</menu>
ActionBar标题栏
使用分离式操作栏:
android:uiOptions=“splitActionBarWhenNarrow”
导航栏使用应用图标
android:parentActivityName=".MainActivity"
A:actionBar.setHomeButtonEnabled(true);
B:actionBar.setDisplayHomeAsUpEnabled(true);
搜索框
<item android:id="@+id/search" android:title="search"
android:orderInCategory="300" app:showAsAction="ifRoom|collapseActionView"
android:icon="@android:drawable/ic_menu_search" app:actionViewClass="android.widget.SearchView"/>
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_main,menu);
MenuItem searchItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView)searchItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(getApplicationContext(),query,Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
if(id == R.id.action_setting){
return true;
}
return super.onOptionsItemSelected(item);
}
分享
<item android:id="@+id/share" android:title="share" android:orderInCategory="400"
app:showAsAction="ifRoom" android:icon="@android:drawable/ic_menu_share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_main,menu);
MenuItem shareItem = menu.findItem(R.id.share);
ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
shareActionProvider.setShareIntent(getDefaultIntent());
return true;
}
private Intent getDefaultIntent(){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
return intent;
}
ActionBar导航
public class MainActivity3 extends AppCompatActivity implements ActionBar.TabListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
//添加选项卡
actionBar.addTab(actionBar.newTab().setText("新闻").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("视频").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("音乐").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("游戏").setTabListener(this));
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
Toast.makeText(this,tab.getText(),Toast.LENGTH_SHORT).show();
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
}
电话服务
电话监听
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
}
private void testTelephonyManager(){
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(new MyPhoneStateListner(),PhoneStateListener.LISTEN_CALL_STATE);
}
/***
* 电话服务的监听器
*/
private static class MyPhoneStateListner extends PhoneStateListener{
@Override
public void onCallStateChanged(int state, String phoneNumber) {
super.onCallStateChanged(state, phoneNumber);
switch (state){
case TelephonyManager.CALL_STATE_RINGING:
System.out.println("正在响铃...");
break;
case TelephonyManager.CALL_STATE_IDLE:
System.out.println("挂机状态");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
System.out.println("正在接听电话...");
break;
}
}
}
app内容共享
分享简单的文本
public void sharedSimpleContentClick(View v){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,"你是猪吗?");
startActivity(intent);
}
//指定选择器
startActivity(Intent.createChooser(intent,“快来抢红包吧”));
分享图片
public void sharedImageContentClick(View v){
Uri uri = Uri.parse("");//图片地址
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM,uri);
// startActivity(intent);
//指定选择器
startActivity(Intent.createChooser(intent,"分享图片到"));
}
}
分享多个文件
public void sharedMultipleContentClick(View v){
Uri uri1 = Uri.parse("/storage/emulated/0/DCIM/Camera/IMG_20190405_101011.jpg");
Uri uri2 = Uri.parse("/storage/emulated/0/DCIM/Camera/IMG_20190405_101011.jpg");
ArrayList<Uri> list = new ArrayList<>();
list.add(uri1);
list.add(uri2);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.setType("image/*");
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,list);
// startActivity(intent);
//指定选择器
startActivity(Intent.createChooser(intent,"分享图片到"));
}
接收简单数据
首先在清单文件中添加以下内容
<activity android:name=".ReceiverSharedContentActivity">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
然后创建Activity
public class ReceiverSharedContentActivity extends AppCompatActivity {
private TextView textView_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver_shared_content);
textView_content = (TextView)findViewById(R.id.content);
handlerContent();
}
private void handlerContent(){
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if(Intent.ACTION_SEND.equals(action)){
if("text/plain".equals(type)){
String info = intent.getStringExtra(intent.EXTRA_TEXT);
textView_content.setText(info);
}
}
}
}
使用ShareActionProvider
<!--xml/menu.xml-->
<item android:id="shared" android:title="shared"
android:orderInCategory="200" app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
MenuItem item = menu.findItem(R.id.shared);
ShareActionProvider sap = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,"今天你吃了吗");
sap.setShareIntent(intent);
return true;
}