代碼進行整合,ActionBar中共性的可以一起初始化,初始化界面和初始化ActionBar分別提出來,在基類中初始化共同的方法,同時在關閉的時候關閉所有的Activity并殺死行程Kill all
主MainActivity.java
package com.ldw.market;
import com.ldw.market.fragment.AppFragment;
import com.ldw.market.fragment.HomeFragment;
import junit.framework.AssertionFailedError;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
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.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends BaseActivity implements OnQueryTextListener{
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle drawerToggle;
private ViewPager mViewPager;
private PagerTabStrip pager_tab_strip;
private String[] tab_names; // 標簽的名字
@Override
protected void init() {
// TODO Auto-generated method stub
}
//初始化ActionBar
@Override
protected void initActionBar() {
//添加tab標簽名
ActionBar actionBar = getSupportActionBar();
//讓拉出顯示詳情的圖片顯示,可以拉出詳情
actionBar.setDisplayHomeAsUpEnabled(true);
//讓按鍵點擊有效
actionBar.setHomeButtonEnabled(true);
//ActionBarDrawerToggle是ActionBar控制抽屜,
//引數1:當前actionBar的Activity,引數2:控制的抽屜,引數3:按鈕的圖片,引數4和5是描述
drawerToggle = new ActionBarDrawerToggle(this,
mDrawerLayout, R.drawable.ic_drawer_am, R.string.open_drawer,
R.string.close_drawer){
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
Toast.makeText(getApplicationContext(), "抽屜關閉了", 0).show();
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
Toast.makeText(getApplicationContext(), "抽屜打開了", 0).show();
}
};
//設定監聽DrawerListener
mDrawerLayout.setDrawerListener(drawerToggle);
// 讓開關和actionbar建立關系
drawerToggle.syncState();
}
//初始化界面
@Override
protected void initView(){
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.dl);
mViewPager=(ViewPager) findViewById(R.id.vp);
pager_tab_strip = (PagerTabStrip) findViewById(R.id.pager_tab_strip);
// 設定標簽下劃線的顏色
pager_tab_strip.setTabIndicatorColor(getResources().getColor(R.color.indicatorcolor));
mViewPager.setAdapter(new MainAdapter(getSupportFragmentManager()));
}
//可以繼承PageAapter實作ViePager翻頁現在繼承FragmentStatePagerAdapter可以實作fragement
private class MainAdapter extends FragmentStatePagerAdapter{
public MainAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
//每一個條目回傳的fragment
@Override
public Fragment getItem(int position) {
if(position == 0){
return new HomeFragment();
}else{
return new AppFragment();
}
}
//條目的總數
@Override
public int getCount() {
// TODO Auto-generated method stub
return 4;
}
// 回傳每個條目的標題,設定tab的標簽
@Override
public CharSequence getPageTitle(int position) {
return "標簽" + position;
}
}
//初始化ActionBar的界面
@SuppressLint("NewApi") @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
// 如果運行的環境 (部署到什么版本的手機 )大于3.0,低版本的不支持
if (android.os.Build.VERSION.SDK_INT > 11) {
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setOnQueryTextListener(this);// 搜索的監聽
}
return true;
}
public void click(View v){
Intent intent = new Intent(getApplicationContext(), DetailActivity.class);
startActivity(intent);
}
/** 處理actionBar選單條目的點擊事件 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
System.out.println("所有");
//當前點擊的條目是search
if (item.getItemId() == R.id.action_search) {
Toast.makeText(getApplicationContext(), "搜索", 0).show();
}
//優先處理drawerToggle的點擊,drawerToggle出不不了交給父類
return drawerToggle.onOptionsItemSelected(item)|super.onOptionsItemSelected(item);
}
// 當搜索提交的時候
@Override
public boolean onQueryTextChange(String arg0) {
Toast.makeText(getApplicationContext(), arg0, 0).show();
return false;
}
// 當搜索的文本發生變化
@Override
public boolean onQueryTextSubmit(String arg0) {
Toast.makeText(getApplicationContext(), arg0, 0).show();
return false;
}
}
側邊詳情欄DetailActivity.java
package com.ldw.market;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.widget.Toast;
public class DetailActivity extends BaseActivity{
@Override
protected void initView() {
setContentView(R.layout.activity_detail);
}
@Override
protected void initActionBar() {
super.initActionBar();
//獲取到actionBar,使用getSupportActionBar,getActionBar是android.app下面的getActionBar
ActionBar actionBar = getSupportActionBar();
//圖示的顯示與隱藏,顯示回傳按鈕
actionBar.setDisplayHomeAsUpEnabled(true);
}
/*
// 處理actionBar選單條目的點擊事件,實作點擊圖示來隱藏當前的界面
@Override
public boolean onOptionsItemSelected(MenuItem item) {
System.out.println("所有");
//當前點擊的條目是search
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
*/
}
繼承的BaseActivity.java來繼承ActionBar
package com.ldw.market;
import java.util.LinkedList;
import java.util.List;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
public class BaseActivity extends ActionBarActivity {
// 管理運行的所有的Activity
public final static List<BaseActivity> mActivities = new LinkedList<BaseActivity>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//同步鎖,執行緒安全
synchronized (mActivities) {
// 初始化的時候往鏈表中初始化Activity,添加Activity
mActivities.add(this);
}
init();
initView();
initActionBar();
}
@Override
protected void onDestroy() {
// 銷毀的時候remove掉
super.onDestroy();
synchronized (mActivities) {
mActivities.remove(this);
}
}
// 退出的時候關閉所有的Activity
public void killAll() {
// 復制了一份mActivities 集合
List<BaseActivity> copy;
//同步鎖,執行緒安全
synchronized (mActivities) {
copy = new LinkedList<BaseActivity>(mActivities);
}
for (BaseActivity activity : copy) {
activity.finish();
}
// 殺死當前的行程
android.os.Process.killProcess(android.os.Process.myPid());
}
protected void initActionBar() {
// TODO Auto-generated method stub
}
protected void initView() {
// TODO Auto-generated method stub
}
protected void init() {
// TODO Auto-generated method stub
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/222950.html
標籤:python
上一篇:螢屏適配方案
