查询网站注册时间,华为企业管理软件,软文发布,海外广告投放代理商1. ActivityGroup
1.1 知识点
#xff08;1#xff09;了解ActivityGroup的作用#xff1b;
#xff08;2#xff09;使用ActivityGroup进行复杂标签菜单的实现#xff1b;
#xff08;3#xff09;使用PopupWindow组件实现弹出菜单组件开发#xff1b;
1.2 具体…1. ActivityGroup
1.1 知识点
1了解ActivityGroup的作用
2使用ActivityGroup进行复杂标签菜单的实现
3使用PopupWindow组件实现弹出菜单组件开发
1.2 具体内容 LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.ActivityGroupActivity LinearLayout android:gravitycenter_horizontalandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentTextView android:idid/cust_titleandroid:textSize28spandroid:textActivityGroup实现分页导航android:layout_widthwrap_contentandroid:layout_heightwrap_content/ /LinearLayout!-- 中间动态加载的View --ScrollView android:measureAllChildrentrueandroid:idid/containerBody android:layout_weight1android:layout_heightfill_parentandroid:layout_widthfill_parent/ScrollViewLinearLayout android:backgroundandroid:color/blackandroid:layout_gravitybottomandroid:orientationhorizontalandroid:layout_heightwrap_contentandroid:layout_widthfill_parent!-- 导航按钮1 --ImageView android:idid/img1android:srcandroid:drawable/ic_dialog_dialerandroid:layout_marginLeft7dp android:layout_marginTop3dpandroid:layout_marginBottom3dpandroid:layout_heightwrap_contentandroid:layout_widthwrap_content/!-- 导航按钮2 --ImageView android:idid/img2android:srcandroid:drawable/ic_dialog_infoandroid:layout_marginLeft7dp android:layout_marginTop3dpandroid:layout_marginBottom3dpandroid:layout_heightwrap_contentandroid:layout_widthwrap_content/!-- 导航按钮3 --ImageView android:idid/img3android:srcandroid:drawable/ic_dialog_alertandroid:layout_marginLeft7dp android:layout_marginTop3dpandroid:layout_marginBottom3dpandroid:layout_heightwrap_contentandroid:layout_widthwrap_content//LinearLayout/LinearLayout
package com.example.activitygroupproject;import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ScrollView;public class ActivityGroupActivity extends ActivityGroup {ScrollView container null;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏setContentView(R.layout.activity_activity_group);container (ScrollView) super.findViewById(R.id.containerBody);//导航1ImageView img1 (ImageView) super.findViewById(R.id.img1);img1.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {container.removeAllViews();//清空子Viewcontainer.addView(getLocalActivityManager().startActivity(Module1, new Intent(ActivityGroupActivity.this,ModuleView1.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView());}});//导航2ImageView img2 (ImageView) super.findViewById(R.id.img2);img2.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {container.removeAllViews();//清空子Viewcontainer.addView(getLocalActivityManager().startActivity(Module2, new Intent(ActivityGroupActivity.this,ModuleView2.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView());}});//导航3ImageView img3 (ImageView) super.findViewById(R.id.img3);img3.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {container.removeAllViews();//清空子Viewcontainer.addView(getLocalActivityManager().startActivity(Module3, new Intent(ActivityGroupActivity.this,ModuleView3.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView());}});}}下面是子Activity的布局和文件
RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:paddingBottomdimen/activity_vertical_marginandroid:paddingLeftdimen/activity_horizontal_marginandroid:paddingRightdimen/activity_horizontal_marginandroid:paddingTopdimen/activity_vertical_margintools:context.ModuleView1 TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text第一个Module //RelativeLayout
package com.example.activitygroupproject;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;public class ModuleView1 extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_module_view1);}}共有三个子Activity其余两个类似就只写一个。
以下实现目前非常流行的标签页实现形式FragmentTabHostViewPager。
主布局
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.FragmentTabHostActivity android.support.v4.view.ViewPagerandroid:idid/pagerandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1/FrameLayoutandroid:visibilitygoneandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1/android.support.v4.app.FragmentTabHostandroid:idandroid:id/tabhostandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentFrameLayout android:idandroid:id/tabcontentandroid:layout_width0dpandroid:layout_height0dpandroid:layout_weight0/FrameLayout/android.support.v4.app.FragmentTabHost/LinearLayout
Activity
package com.example.fragmenttabhost;import java.util.ArrayList;
import java.util.List;import android.R.color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTabHost;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;
import android.widget.TextView;public class FragmentTabHostActivity extends FragmentActivity {FragmentTabHost mTabHost null;LayoutInflater layoutInflater null;Class fragmentArray[] {FragmentPage1.class,FragmentPage2.class,FragmentPage3.class};int mImageViewArray[] {android.R.drawable.ic_dialog_dialer,android.R.drawable.ic_dialog_info,android.R.drawable.ic_dialog_alert};String mTextViewArray[] {首页,消息,好友};ViewPager vp;ListFragment list new ArrayListFragment();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fragment_tab_host);//实例化组件initView();initPager();}public void initView(){vp (ViewPager) super.findViewById(R.id.pager);vp.setOnPageChangeListener(new ViewPagerListener());layoutInflater LayoutInflater.from(this);//实例化布局对象mTabHost (FragmentTabHost) super.findViewById(android.R.id.tabhost);mTabHost.setup(this,getSupportFragmentManager(),R.id.pager);//实例化FragmentTabHost对象mTabHost.setOnTabChangedListener(new TabHostListener());int count fragmentArray.length;//获取子tab的个数for(int i 0;icount;i){//为每一个Tab按钮设置图标文字和内容TabSpec tabSpec mTabHost.newTabSpec(mTextViewArray[i]).setIndicator(getTabItemView(i));mTabHost.addTab(tabSpec,fragmentArray[i],null);//将子tab添加进TabHost//设置按钮的背景mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(color.background_dark);}}private void initPager(){FragmentPage1 p1 new FragmentPage1();FragmentPage2 p2 new FragmentPage2();FragmentPage3 p3 new FragmentPage3();list.add(p1);list.add(p2);list.add(p3);vp.setAdapter(new MyAdapter(getSupportFragmentManager()));}private View getTabItemView(int index){View view layoutInflater.inflate(R.layout.tabspec_layout, null);ImageView img (ImageView) view.findViewById(R.id.img);img.setImageResource(mImageViewArray[index]);TextView tv (TextView) view.findViewById(R.id.tv);tv.setText(mTextViewArray[index]);return view;}class ViewPagerListener implements OnPageChangeListener{Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}Overridepublic void onPageSelected(int arg0) {//根据焦点来确认切换到那个TabTabWidget widget mTabHost.getTabWidget();int oldFocusability widget.getDescendantFocusability();widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);mTabHost.setCurrentTab(arg0);widget.setDescendantFocusability(oldFocusability);}}class TabHostListener implements OnTabChangeListener{Overridepublic void onTabChanged(String tabId) {int position mTabHost.getCurrentTab();vp.setCurrentItem(position);}}class MyAdapter extends FragmentPagerAdapter{public MyAdapter(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stub}Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}}
}
单个标签布局
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical ImageView android:idid/imgandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:padding3dp/TextView android:idid/tvandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textSize10spandroid:textColor#FFFFFF//LinearLayout
单个fragment
package com.example.fragmenttabhost;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class FragmentPage1 extends Fragment {Overridepublic View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){return inflater.inflate(R.layout.fragment, null);}
}
单个fragment布局
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical ImageViewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:srcdrawable/ic_launcher//LinearLayout
1.3 小结
1ActivityGroup可以让多个Activity在一个屏幕上集中显示
2通过PopupWindow组件可以实现弹出菜单的功能。