第三方SegmentControl+fragment实现选择切换
来源:互联网 发布:赛博朋克小说 知乎 编辑:程序博客网 时间:2024/05/21 06:26
先看一下效果图,是否是需要的效果
这个是引入第三方的一个库,(感谢大神的第三方,很好用)
compile 'com.7heaven.widgets:segmentcontrol:1.16'
直接看代码,很简单,看得懂
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.yangzhuokeji.myapplication.MainActivity"> <com.sevenheaven.segmentcontrol.SegmentControl android:id="@+id/segment_control" android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:orientation="horizontal" android:textSize="13sp" app:cornerRadius="5dip" app:horizonGap="8dip" app:normalColor="#FFFFFF" app:selectedColor="#0099CC" app:texts="策划|开发|企业|导航" app:verticalGap="8dip" tools:layout_editor_absoluteX="17dp" tools:layout_editor_absoluteY="0dp" /> <FrameLayout android:id="@+id/framelayout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="#0099CC"> </FrameLayout></LinearLayout>MainActivity.java
import android.annotation.TargetApi;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Build;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.widget.FrameLayout;import android.widget.Toast;import com.sevenheaven.segmentcontrol.SegmentControl;import com.yangzhuokeji.zhifubaozhifu.shangbiao.Fragmentas;import com.yangzhuokeji.zhifubaozhifu.shangbiao.Fragmentas2;import com.yangzhuokeji.zhifubaozhifu.shangbiao.Fragmentas4;import com.yangzhuokeji.zhifubaozhifu.shangbiao.fragment3;public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private FrameLayout framelayout; private SegmentControl mSegmentHorzontal; private SegmentControl mSegmentVertical; @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); framelayout = (FrameLayout) findViewById(R.id.framelayout); mSegmentHorzontal = (SegmentControl) findViewById(R.id.segment_control); // mSegmentVertical = (SegmentControl) findViewById(R.id.segment_control2); FragmentManager fm1 = getFragmentManager(); // 开启Fragment事务 FragmentTransaction transaction = fm1.beginTransaction(); transaction.replace(R.id.framelayout, new Fragmentas()); transaction.commit(); mSegmentHorzontal.setOnSegmentControlClickListener(new SegmentControl.OnSegmentControlClickListener() { @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public void onSegmentControlClick(int index) { /*Log.i(TAG, "onSegmentControlClick: index = " + index); if (index == 2) { FragmentManager fm = getFragmentManager(); // 开启Fragment事务 FragmentTransaction transaction = fm.beginTransaction(); transaction.replace(R.id.framelayout, new Fragmentas()); transaction.commit(); }else{ Toast.makeText(MainActivity.this, "666", Toast.LENGTH_SHORT).show(); }*/ FragmentManager fm = getFragmentManager(); // 开启Fragment事务 FragmentTransaction transaction = fm.beginTransaction(); switch (index) { case 0: transaction.replace(R.id.framelayout, new Fragmentas()); break; case 1: transaction.replace(R.id.framelayout, new Fragmentas2()); break; case 2: transaction.replace(R.id.framelayout, new fragment3()); break; case 3: transaction.replace(R.id.framelayout, new Fragmentas4()); break; default: break; } transaction.commit(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
BaseFragment.java
import android.annotation.TargetApi;import android.app.Fragment;import android.os.Build;import android.os.Bundle;import android.support.annotation.Nullable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;/** * Created by Administrator on 2016/9/21. */@TargetApi(Build.VERSION_CODES.HONEYCOMB)public abstract class BaseFragment extends Fragment { boolean isTranslucentNavigation = false; /* * 1.onCreateView是创建的时候调用,onViewCreated是onCreateView后被触发的事件,前后关系 * */ @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(getContentViewId(), container, false); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initData(); } @Override public void onDestroyView() { super.onDestroyView(); } public static boolean hasKitKat() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; } public static boolean hasLollipop() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; } public boolean isTranslucentNavigation() { return isTranslucentNavigation; } public void setTranslucentNavigation(boolean translucentNavigation) { isTranslucentNavigation = translucentNavigation; } //沉浸式状态栏结束 public abstract int getContentViewId(); protected abstract void initData(); public abstract void TitleBar(boolean isImmersive);}下面的几个fragment都是一样的,自己修改布局,在所在的fragment做操作就可以了,只展示一个
fragmet3.java
import android.annotation.TargetApi;import android.os.Build;/** * Created by Android-01 on 2017/5/10. */@TargetApi(Build.VERSION_CODES.HONEYCOMB)public class fragment3 extends BaseFragment { @Override public int getContentViewId() { return R.layout.fragment3; } @Override protected void initData() { } @Override public void TitleBar(boolean isImmersive) { }}
fragment3.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@mipmap/ic_launcher" /></LinearLayout>
1 0
- 第三方SegmentControl+fragment实现选择切换
- segmentControl实现控制器的切换
- iOS: SegmentControl 实现页面切换的四种方法
- iOS: SegmentControl 实现页面切换的四种方法
- iOS: SegmentControl 实现页面切换的四种方法
- SegmentControl点击切换View
- SegmentControl点击切换View
- Fragment+viewpagerIndicator第三方控件实现APP主界面
- 在Fragment中实现QQ第三方登录
- 第三方控件选择
- Android中调用第三方实现美团城市选择
- ViewPager+Fragment实现Tabhost,动态添加删除Fragment,可供第三方使用的类库
- H5开发第三方选择
- 如何选择第三方技术
- RadioButton实现Fragment切换
- linearlayout实现fragment切换
- ViewPager实现Fragment切换
- segmentcontrol
- HTML与CSS基础知识中易被忽略的知识点
- 百度经纬度和google经纬度互转
- Python学习笔记(二)—列表(list)和数组(tuple)类型
- 对ActivityManagerService的一些认识和学习
- Windows下Python安装OpenCV详细步骤
- 第三方SegmentControl+fragment实现选择切换
- php中strstr、strrchr、substr、stristr四个函数用法区别
- java对象与map对象相互转换
- 51nod一级算法题全部题解
- 7.OP-TEE+qemu的启动过程分析--加载optee_os和rootfs
- android启动APP时白屏(黑屏)解决办法
- React Js 生成二维码 插件 qrcode.react
- synchronized同步关键词
- Largest Divisible Subset