2.抽取代码(BaseActivity)
- 俩种退出程序的方法
- 复制集合
- 同步的用法
- 字符数组
- 工厂模式,生产fatgment,解决了碎片重复创建的问题
- 全局上下文
- actionbar用法
- fargmentadapter,当viewpager里是fargment的话更方便
1.抽取BaseActivity 管理所有activity 方便退出
public class BaseActivity extends ActionBarActivity {// 管理运行的所有的activitypublic final static List<BaseActivity> mActivities = new LinkedList<BaseActivity>();//增删快//使用广播也可以,如果当前Activity想退出可以,sendReceiver // private KillAllReceiver receiver; // private class KillAllReceiver extends BroadcastReceiver{ // // @Override // public void onReceive(Context context, Intent intent) { // finish(); // } // }@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); // receiver=new KillAllReceiver(); // IntentFilter filter=new IntentFilter("com.itheima.google.killall"); // registerReceiver(receiver, filter);//解决同步问题,不可以添加的时候删除synchronized (mActivities) {mActivities.add(this);}init();//定义几个方法子类去实现,代码不臃肿,这个是初始化view前的操作initView();initActionBar();}@Overrideprotected void onDestroy() {super.onDestroy();synchronized (mActivities) {mActivities.remove(this);} // if(receiver!=null){ // unregisterReceiver(receiver); // receiver=null; // }}public void killAll() {// 复制了一份mActivities 集合,因为不能在操作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() {}protected void initView() {}protected void init() {} }
public class MainActivity extends BaseActivity implementsOnQueryTextListener {private DrawerLayout mDrawerLayout;private ActionBarDrawerToggle drawerToggle;private ViewPager mViewPager;private PagerTabStrip pager_tab_strip;private String[] tab_names; // 标签的名字@Overrideprotected void initActionBar() {ActionBar actionBar = getSupportActionBar();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();}@Overrideprotected void init() {tab_names = UiUtils.getStringArray(R.array.tab_names);}@Overrideprotected 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 MainAdpater(getSupportFragmentManager()));//sendBroadcast(new Intent("com.itheima.google.killall"));//Log.i(tag, msg)}private class MainAdpater extends FragmentStatePagerAdapter{public MainAdpater(FragmentManager fm) {super(fm);}// 每个条目返回的fragment// 0@Overridepublic Fragment getItem(int position) {// 通过Fragment工厂 生产Fragment return FragmentFactory.createFragment(position);}// 一共有几个条目 @Overridepublic int getCount() {return tab_names.length;}// 返回每个条目的标题@Overridepublic CharSequence getPageTitle(int position) {return tab_names[position];}}@SuppressLint("NewApi")@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, 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菜单条目的点击事件 */public 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 onQueryTextSubmit(String query) {Toast.makeText(getApplicationContext(), query, 0).show();return true;}// 当搜索的文本发生变化@Overridepublic boolean onQueryTextChange(String newText) {return true;}
}
public class UiUtils {/*** 获取到字符数组 * @param tabNames 字符数组的id*/public static String[] getStringArray(int tabNames) {return getResource().getStringArray(tabNames);}public static Resources getResource() {return BaseApplication.getApplication().getResources();}/** dip转换px */public static int dip2px(int dip) {final float scale = getResource().getDisplayMetrics().density;return (int) (dip * scale + 0.5f);}/** pxz转换dip */public static int px2dip(int px) {final float scale = getResource().getDisplayMetrics().density;return (int) (px / scale + 0.5f);} }
<string-array name="tab_names">
<item>首页</item>
<item>应用</item>
<item>游戏</item>
<item>专题</item>
<item>分类</item>
<item>排行</item>
</string-array>
public class FragmentFactory {private static Map<Integer, Fragment> mFragments = new HashMap<Integer, Fragment>();public static Fragment createFragment(int position) {Fragment fragment = null;fragment = mFragments.get(position); //在集合中取出来Fragmentif (fragment == null) { //如果再集合中没有取出来 需要重新创建if (position == 0) {fragment = new HomeFragment();} else if (position == 1) {fragment = new AppFragment();} else if (position == 2) {fragment = new GameFragment();} else if (position == 3) {fragment = new SubjectFragment();} else if (position == 4) {fragment = new CategoryFragment();} else if (position == 5) {fragment = new TopFragment();}if (fragment != null) {mFragments.put(position, fragment);// 把创建好的Fragment存放到集合中缓存起来}}return fragment;} }
/*** 代表当前应用程序* @author itcast**/
public class BaseApplication extends Application {private static BaseApplication application;@Overridepublic void onCreate() {super.onCreate();application=this;}public static Context getApplication() {return application;}
}
转载于:https://www.cnblogs.com/sixrain/p/4964461.html
2.抽取代码(BaseActivity)相关推荐
- 关系抽取 代码_免费代码营不能赚钱,没关系
关系抽取 代码 by freeCodeCamp 通过freeCodeCamp 免费代码营不能赚钱,没关系 (Free Code Camp Doesn't Make Money, and That's ...
- 写代码抽取代码的技巧
1.抽取公共代码 做法:1.1 抽象类,公共方法 ,抽象方法 可以参考Hystrix设计 2自定义注解+ 切面 +LUA脚本配置化
- 判断随机抽取代码_高中数学中离散型随机变量的分布列知道吗?均值与方差能干什么?...
一.离散型随机变量的分布列性质及应用 离散型随机变量的分布列主要有三方面的作用: 1) 利用总概率之和为1可以求相关参数的取值范围或值: 2) 利用离散型随机变量在一范围内的概率等于它取这个范围内各个 ...
- 判断随机抽取代码_问卷调查:定量研究中的抽样问题(2)- 非随机抽样介绍
所谓抽样,就是从我们需要研究的所有目标群体中,按照某种原则,挑选出一定量的样本,用他们的研究结果,代表目标群体整体结果.既然,抽样的目的是通过对一部分被选择的样本来推断总体,就要求我们抽取的样本具有能 ...
- 文本关键信息抽取——实体抽取代码实现
使用paddlenlp中与训练好的语言模型来进行实体抽取: # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. # # Li ...
- html和js画圣诞树图片,教你如何把JavaScript代码写成圣诞树
我们使用了自己写的一个nodejs库,如果您要实现这样的效果,只需要按照下面第一章节的方法即可.当然您也可以在线压缩代码: 下面分两章节,分别讲解如何使用js2image这个库 和 js2image这 ...
- python按哪个键运行代码_python运行快捷键是哪个
python运行快捷键是哪个 发布时间:2020-11-17 11:00:46 来源:亿速云 阅读:90 作者:小新 这篇文章主要介绍了python运行快捷键是哪个,具有一定借鉴价值,需要的朋友可以参 ...
- (转载)使用Android Studio对代码进行重构
(转载)https://blog.csdn.net/guijiaoba/article/details/50608606 简介 2013年Google I/O大会上,谷歌推出新的Android开发环境 ...
- 认罪吧,你的代码已经出卖了你!
指纹出卖你.声音出卖你.笔迹出卖你-- 这都不算什么-- 现在,你写的代码也能出卖你的身份了! 近日,在Drexel大学任职计算机科学的副教授Rachel Greenstadt,及其他的博士学生(现为 ...
最新文章
- python掌握程度怎么判断-想要学习人工智能需要掌握Python到什么程度
- 用jQuery实现网页卷轴的效果
- 这些表情包你有吗?来 Battle 啊
- 那些我当了程序员以后才理解的崩溃瞬间!
- 老齐python-基础7(文件操作、迭代)
- java 死锁_java死锁分析
- 在Windows下启动java服务
- 《细说PHP》第四版 样章 第二章 PHP的应用与发展 1
- 用友NC的一些漏洞复现
- STM32应用笔记分类汇总,值得收藏
- 虚拟化:十大虚拟化最佳实践
- 高德地图自定义地图怎么去除最上边这个默认的蓝色天空?太丑了!!
- Elasticsearch之高亮进阶-高性能高亮器, 让Elasticsearch飞一会儿
- 服务器主板四路SLI时候出现的问题
- 云服务器物理主机的区别,云服务器与物理机的区别
- 便利vector_你好,C++!(57)9.2 vector容器是数组的最佳替代者
- 单精度(float) 双精度 (double) 区别
- 特殊符号(一)—反斜杠 ” \ “(旋转光标和倒计时的实现)
- 微软今中止撑持XP体系 后XP年代带来多少商机
- 前端工程化之动态数据代理