饭后Android 第三餐 | 您所在的位置:网站首页 › 安卓对话框的使用教程 › 饭后Android 第三餐 |
饭后Android 第三餐-XUI框架(XUI介绍,使用方法,控件使用(九个Button,导航栏,可伸缩布局,顶部弹出框))
1.XUI介绍2.使用方法1 添加依赖2 初始化XUI设置
3.控件使用1.Button1.Buttonview2.RippleView-带波纹效果3.ShineButton-带动画4.SmoothCheckBox-动画切换5.SwitchIconView-动画切换6.FloatingActionButton-悬浮按钮7.ShadowButton-点击时背景阴影8.RoundButton9.CountDownButton-带倒计时
2.导航栏1.TitleBar
3.可伸缩布局1.ExpandableHorizontalFragment(水平伸缩)2.ExpandableSimpleFragment(垂直伸缩)
4.顶部弹出框
XUI–GitHub开源网址
1.XUI介绍
作者语录:一个简洁而又优雅的Android原生UI框架,解放你的双手! XUI涵盖了大部分的UI组件,TextView、Button、EditText、ImageView、Spinner、Picker、Dialog、PopupWindow、ProgressBar、LoadingView、StateLayout、FlowLayout、Switch、Actionbar、TabBar、Banner、GuideView、BadgeView、MarqueeView、WebView、SearchView等一系列的组件和丰富多彩的样式主题。 组件图片展示 工具图片展示 1.在项目的 build.gradle 的 repositories 下添加: maven { url "https://jitpack.io" }然后接着在dependencies下添加 (推荐使用) //androidx项目 implementation 'com.github.xuexiangjys:XUI:1.1.5' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'com.google.android.material:material:1.1.0' implementation 'com.github.bumptech.glide:glide:4.11.0'【注意】如果你的项目目前还未使用androidx,请使用如下配置: (官方文档给的建议,但是我个人不推荐用这个,一是因为依赖版本低不仅要重构依赖,而且因为这个依赖库缺少一个配置文件会导致运行不了) 我这里用的是上面版本高的的依赖包(如图) 第一步,新建一个 类
必须设置应用的基础主题,否则组件将无法正常使用!必须保证所有用到XUI组件的窗口的主题都为XUITheme的子类,这非常重要!! 也就是说要给成XUI设定的主题,不然会因为不适配,控件显示不出来或者运行报错 基础主题类型: 大平板(10英寸, 240dpi, 1920*1200):XUITheme.Tablet.Big小平板(7英寸, 320dpi, 1920*1200):XUITheme.Tablet.Small手机(4.5英寸, 320dpi, 720*1280):XUITheme.Phone @color/colorPrimary @color/colorPrimaryDark @color/colorAccent当然也可以在Activity刚开始时调用如下代码动态设置主题(我比较喜欢用上面那种,直接改了) @Override protected void onCreate(Bundle savedInstanceState) { XUI.initTheme(this); super.onCreate(savedInstanceState); ... }3.调整字体库(对字体无要求的可省略)–这里我没有用到就不加了 (1)设置你需要修改的字体库路径(assets下) //设置默认字体为华文行楷,这里写你的字体库 XUI.getInstance().initFontStyle("fonts/hwxk.ttf");(2)在项目的基础Activity中加入如下代码注入字体. 注意:1.1.4版本之后使用如下设置注入 @Override protected void attachBaseContext(Context newBase) { //注入字体 super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)); }注意:1.1.3版本及之前的版本使用如下设置注入 @Override protected void attachBaseContext(Context newBase) { //注入字体 super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }然后运行,会报错,说 minSdkVersion 过低 解决方法:把minSdkVersion改为 23,问题就会解决 (别问为啥是23,因为这是我一个一个试验出来的,乔丹号码) 运行成功,现在添加一个基础控件,在布局文件添加
官方组件使用文档传送门 官方文档已经很详细的讲了常用控件的布局文件属性,我在这列举按钮篇和几个其他控件。 1.Button其实大多button的逻辑代码都一样,几个特殊的按钮我在上一讲有讲到,感兴趣的小伙伴可以;了解 饭后Android 第二餐-复选框CheckBox+开关按钮Switch+单选按钮RadioButton 布局文件 逻辑代码 mButtonView=findViewById(R.id.buttonView); mButtonView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i("Mainactivity","ButtonView按钮点击了一次"); } }); 2.RippleView-带波纹效果布局文件 逻辑代码 mRippleView=findViewById(R.id.rippleView); mRippleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i("Mainactivity","RippleView按钮点击了一次"); } }); 3.ShineButton-带动画布局文件 图标资源下载 4.SmoothCheckBox-动画切换布局文件 5.SwitchIconView-动画切换布局文件 图标资源下载 逻辑代码 //变量声明 SwitchIconView mSwitchIconView; int i=1; mSwitchIconView=findViewById(R.id.switchIconView); mSwitchIconView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (i>0) { mSwitchIconView.setIconEnabled(true); i*=-1; }else{ mSwitchIconView.setIconEnabled(false); i*=-1; } } }); 6.FloatingActionButton-悬浮按钮布局文件 7.ShadowButton-点击时背景阴影布局文件 8.RoundButton布局文件 逻辑代码 mRoundButton=findViewById(R.id.roundButton); mRoundButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i("Mainactivity","RoundButton按钮点击了一次"); } }); 9.CountDownButton-带倒计时布局文件 这个有点意思,可以不在java文件里写代码就可以实现点击倒计时 2.导航栏官方文档给出了几种, 这里讲一种我常用的吧 1.TitleBar布局文件 这里视图显示不出来,没关系,运行就会有 演示 这里我讲到两个伸缩布局,一个是水平伸缩,一个是垂直伸缩 演示 Mainactivity布局文件,很简单就是两个fragment布局
布局文件 逻辑代码 public class BlankFragment extends Fragment { ExpandableLayout expandableLayout; AppCompatImageView expandButton; int i=1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_blank, container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); expandableLayout=getActivity().findViewById(R.id.expandable_layout); expandButton=getActivity().findViewById(R.id.expand_button); expandableLayout.setOnExpansionChangedListener((expansion, state) -> { if (expandButton != null) { expandButton.setRotation(expansion * 180); } }); expandButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (i>0) { expandableLayout.toggle(); expandButton.setSelected(true); i*=-1; }else { expandableLayout.toggle(); expandButton.setSelected(false); i*=-1; } Log.i("expandButton","--------"+i); } }); } }这里有个报错 布局代码 逻辑代码 public class BlankFragment2 extends Fragment { XUIAlphaTextView mXUIAlphaTextView; ExpandableLayout expandableLayout1; ExpandableLayout expandableLayout2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_blank2, container, false); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mXUIAlphaTextView=getActivity().findViewById(R.id.expand_button2); expandableLayout2=getActivity().findViewById(R.id.expandable_layout_2); expandableLayout1=getActivity().findViewById(R.id.expandable_layout_1); mXUIAlphaTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (expandableLayout1.isExpanded()) { expandableLayout1.collapse(); } else if (expandableLayout2.isExpanded()) { expandableLayout2.collapse(); } else { expandableLayout1.expand(); expandableLayout2.expand(); } } }); } }运行 调用会从顶部弹出一个弹窗 java代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CookieBar.builder(this) .setTitle("来自护眼精灵的温馨提示") .setMessage("来自Rose-J的提示") .setDuration(4000) .setBackgroundColor(R.color.xui_btn_green_normal_color) .setActionColor(android.R.color.white) .setTitleColor(android.R.color.white) .setAction(R.string.app_name,View::stopNestedScroll) .show(); } }运行 |
CopyRight 2018-2019 实验室设备网 版权所有 |