原生Camera设置的分析(一):布局
来源:互联网 发布:免费网络存储 编辑:程序博客网 时间:2024/05/29 11:52
首先设置的所有 list 用了两种自定义的控件,一种定义为SettingListLayout.java,另一个的定义为InLineSettingRestore.java。“还原默认设置”用的控件是InLineSettingRestore,其它的list用的是SettingListLayout。对应的布局文件如下:
setting_list_layout.xml
<?xml version="1.0" encoding="utf-8"?><com.android.camera.ui.SettingListLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/settingList" style="@style/SettingItemList" android:layout_gravity="top" /></com.android.camera.ui.SettingListLayout>
in_line_setting_restore.xml
<?xml version="1.0" encoding="utf-8"?><com.android.camera.ui.InLineSettingRestore xmlns:android="http://schemas.android.com/apk/res/android" style="@style/SettingRow" > <TextView android:id="@+id/title" style="@style/SettingItemRestore" /></com.android.camera.ui.InLineSettingRestore>
SettingManager.java的关键代码如下:
private void initializeSettings() { if (mSettingLayout == null && getContext().getPreferenceGroup() != null) { mSettingLayout = (ViewGroup) getContext().inflate(R.layout.setting_container, SETTING_PAGE_LAYER); mTabHost = (TabHost)mSettingLayout.findViewById(R.id.tab_title); mTabHost.setup(); List<Holder> list = new ArrayList<Holder>(); <....................................................................................................................................................................................................................................................................................................................> int size = list.size(); List<SettingListLayout> pageViews = new ArrayList<SettingListLayout>(); for (int i = 0; i < size; i++) { Holder holder = list.get(i); //new page view SettingListLayout pageView = (SettingListLayout)getContext() .inflate(R.layout.setting_list_layout, SETTING_PAGE_LAYER); pageView.initialize(SettingChecker.getSettingKeys(holder.mSettingKeys), i == 0); pageViews.add(pageView); //new indicator view ImageView indicatorView = new ImageView(getContext()); indicatorView.setBackgroundResource(R.drawable.bg_tab_title); indicatorView.setImageResource(holder.mIndicatorIconRes); indicatorView.setScaleType(ScaleType.CENTER); mTabHost.addTab(mTabHost.newTabSpec(holder.mIndicatorKey) .setIndicator(indicatorView) .setContent(android.R.id.tabcontent)); } mAdapter = new MyPagerAdapter(pageViews); mPager = (ViewPager) mSettingLayout.findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setOnPageChangeListener(mAdapter); mTabHost.setOnTabChangedListener(this); } Util.setOrientation(mSettingLayout, getOrientation(), false); }
1、 首先 List<Holder> list = new ArrayList<Holder>();是定义的三个Tab ;
2、然后定义一下设置的列表项List<SettingListLayout> pageViews = new ArrayList<SettingListLayout>();
3、“还原默认设置”项的添加代码是pageView.initialize(SettingChecker.getSettingKeys(holder.mSettingKeys), i == 0);
4、最后将所有的列表添加进来:pageViews.add(pageView);
最后,将上面完成的设置项添加到适配器里来,代码如下:
mAdapter = new MyPagerAdapter(pageViews); mPager = (ViewPager) mSettingLayout.findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setOnPageChangeListener(mAdapter); mTabHost.setOnTabChangedListener(this);
0 0
- 原生Camera设置的分析(一):布局
- 原生Camera设置的分析(二):分辨率的过滤
- 原生Camera设置的分析(三):自定义控件ListPreference分析
- Camera系统中设置picture大小菜单的流程分析(一)
- Camera系统中设置picture大小菜单的流程分析(一)
- Camera系统中设置picture大小菜单的流程分析(一)
- Camera app 分析(一)
- android camera 布局分析
- 设置原生应用布局文件
- Camera构架分析【一】
- Camera系统中设置picture大小菜单的流程分析(二)
- Camera系统中设置picture大小菜单的流程分析(三)
- Camera系统中设置picture大小菜单的流程分析(二)
- Camera系统中设置picture大小菜单的流程分析(三)
- Camera系统中设置picture大小菜单的流程分析
- Camera系统中设置picture大小菜单的流程分析
- android 简单的原生Camera实现
- CAMERA预览数据流程分析(一)-------数据的获取
- 骚年肿么了你?
- 安卓 文字环绕图片
- 添加tslib到directfb
- 在页面中调用skype
- 《你必须知道的495个C语言问题》知识笔记及补充
- 原生Camera设置的分析(一):布局
- MySQL在大型网站的应用架构演变
- ORA-10631: SHRINK clause should not be specified for this object
- 黑马程序员-OC笔记(四)核心语法
- 公司需要内部的地图服务,准备自己去开发但是成本太高,现在有没有专门为企业提供GIS地图开发的产品呀?大概价格多少?
- MFC 多线程及线程同步
- 关注zigbee(二)
- IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS
- wtregtry