AndroidUI开源组件库BottomView 第三方自定义UI控件

    • 这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个)

      实现功能:

      可以在底部弹出的View里自定义布局;

      可以自定义是否可以触摸外部消失;

      可以自定义事件;

      可以自定义外围背景是否透明;

      可以自定义动画;

      如果需要的话,可以强制为顶部View显示

      BottomView.jar库文件下载地址:http://download.csdn.net/detail/jay100500/7547055

      BottomView的Demo下载地址:http://download.csdn.net/detail/jay100500/7547049

      package com.tandong.bottomview.view;
      
      import android.app.Dialog;
      import android.content.Context;
      import android.view.Display;
      import android.view.View;
      import android.view.Window;
      import android.view.WindowManager;
      
      public class BottomView {
          private View convertView;
          private Context context;
          private int theme;
          private Dialog bv;
          private int animationStyle;
          private boolean isTop = false;
      
          public BottomView(Context c, int theme, View convertView) {
              this.theme = theme;
              this.context = c;
              this.convertView = convertView;
          }
      
          public BottomView(Context c, int theme, int resource) {
              this.theme = theme;
              this.context = c;
              this.convertView = View.inflate(c, resource, null);
          }
      
          public void showBottomView(boolean CanceledOnTouchOutside) {
              if (this.theme == 0)
                  this.bv = new Dialog(this.context);
              else
                  this.bv = new Dialog(this.context, this.theme);
              this.bv.setCanceledOnTouchOutside(CanceledOnTouchOutside);
              this.bv.getWindow().requestFeature(1);
              this.bv.setContentView(this.convertView);
              Window wm = this.bv.getWindow();
              WindowManager m = wm.getWindowManager();
              Display d = m.getDefaultDisplay();
              WindowManager.LayoutParams p = wm.getAttributes();
              p.width = (d.getWidth() * 1);
              if (this.isTop)
                  p.gravity = 48;
              else
                  p.gravity = 80;
              if (this.animationStyle != 0) {
                  wm.setWindowAnimations(this.animationStyle);
              }
              wm.setAttributes(p);
              this.bv.show();
          }
      
          public void setTopIfNecessary() {
              this.isTop = true;
          }
      
          public void setAnimation(int animationStyle) {
              this.animationStyle = animationStyle;
          }
      
          public View getView() {
              return this.convertView;
          }
      
          public void dismissBottomView() {
              if (this.bv != null)
                  this.bv.dismiss();
          }
      }

      用法:

      1、下载BottomView.jar库文件,放到Android项目工程里的libs里

      2、设置BottomView的Theme:

      这2个Theme复制粘贴到你的项目的res/values/styles.xml里即可

      view sourceprint?

      01.<!--半透明背景Theme-->

      02.<style name="BottomViewTheme_Defalut">

      03.<item name="android:windowFrame">@null</item>

      04.<item name="android:windowContentOverlay">@null</item>

      05.<item name="android:windowIsFloating">true</item>

      06.<item name="android:windowIsTranslucent">false</item>

      07.<item name="android:windowNoTitle">true</item>

      08.<item name="android:windowBackground">@color/white</item>

      09.<item name="android:backgroundDimEnabled">true</item>

      10.<item name="android:windowFullscreen">true</item>

      11.</style>

      12.<!--透明背景Theme-->

      13.<style name="BottomViewTheme_Transparent">

      14.<item name="android:windowFrame">@null</item>

      15.<item name="android:windowIsFloating">true</item>

      16.<!-- Transparent -->

      17.<item name="android:windowIsTranslucent">false</item>

      18.<item name="android:windowContentOverlay">@null</item>

      19.<item name="android:windowNoTitle">true</item>

      20.<item name="android:windowBackground">@color/white</item>

      21.<item name="android:backgroundDimEnabled">false</item>

      22.</style>

      另外如果提示

      view sourceprint?

      1.<item name="android:windowBackground">@color/white</item>

      这里的white找不到的话,说明你项目res/values/color.xml没有新建或者没有white颜色这个值,只需在res/values/color.xml里添加

      view sourceprint?

      1.<color name="white">#ffffff</color>

      这个白色值即可。

      另外View的动画Theme可选,建议也复制进去,效果好一些,代码如下:

      view sourceprint?

      1.<style name="BottomToTopAnim" parent="android:Animation">

      2.<item name="@android:windowEnterAnimation">@anim/bottomview_anim_enter</item>

      3.<item name="@android:windowExitAnimation">@anim/bottomview_anim_exit</item>

      4.</style>

      res/anim/bottomview_anim_enter.xml

      view sourceprint?

      1.<?xml version="1.0" encoding="utf-8"?>

      2.<set xmlns:android="http://schemas.android.com/apk/res/android" >

      3.

      4.<translate

      5.android:duration="500"

      6.android:fromYDelta="100%p" />

      7.

      8.</set>

      res/anim/bottomview_anim_exit.xml

      view sourceprint?

      1.<?xml version="1.0" encoding="utf-8"?>

      2.<set xmlns:android="http://schemas.android.com/apk/res/android" >

      3.

      4.<translate

      5.android:duration="500"

      6.android:toYDelta="100%p" />

      7.

      8.</set>

      整体为:

      2、部分核心使用代码:

      view sourceprint?

      1.BottomView bottomView = new BottomView(this,

      2.R.style.BottomViewTheme_Defalut, R.layout.bottom_view);

      3.bottomView.setAnimation(R.style.BottomToTopAnim);//设置动画,可选

      4.bottomView.showBottomView(false);

      如果想获取这个View的话,调用.getView()方法即可。

      效果图之一:(可随意发挥)

      不懂的加我QQ 852041173

      欢迎加入MtAndroid开发者QQ群:271410559

      百度网盘备用下载地址:

      BottomView.jar库文件下载地址:http://pan.baidu.com/s/1mg7eseG

      BottomView的Demo下载地址:http://pan.baidu.com/s/1hqkRM8s

      首发地址:http://www.aplesson.com/?p=400

时间: 2024-10-11 07:25:09

AndroidUI开源组件库BottomView 第三方自定义UI控件的相关文章

Android UI开源组件库BottomView ,第三方自定义UI控件

这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个) 实现功能: 可以在底部弹出的View里自定义布局: 可以自定义是否可以触摸外部消失: 可以自定义事件: 可以自定义外围背景是否透明: 可以自定义动画: 如果需要的话,可以强制为顶部View显示 BottomView.jar库文件下载地址:http://download.csdn.net/detail/jay100500/7547055 BottomView的Demo下载地址:

cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug

其实总体自定义UI组件都比较简单,尤其是cocos2d-js是开源的,如果有什么不明白的直接看js代码或者C++代码即可.当然js代码基本就够了. 另外,js的ctor函数虽然说是构造函数,但毕竟不是flash或者c++的构造函数,这只是一个普通函数,也就是说可以不在第一行默认调用,这就给扩展带来了不少方便. 现在想做一个声音按钮,点一下能关闭音乐,再点一下又能打开.当然就是MenuItemToggle了. 但想做得再炫一点,有声音的时候,按钮的样子能有几个音波的变化.那么就需要用MenuIte

Android 开源组件 ----- Android LoopView无限自动轮转控件

Android 开源组件 ----- Android LoopView无限自动轮转控件 2015-12-28 15:26 by 杰瑞教育, 32 阅读, 0 评论, 收藏, 编辑 一.组件介绍 App产品中信息列表头部都会有自动轮转的广告图片,使用ViewPager可以实现但编码比较麻烦,我们可以采用使用LoopView开源控件来完成, LoopView是一个强大的轮转大图控件,并且提供了许多配置方法足以满足你的应用需求 二.环境配置 如果您的项目使用 Gradle 构建, 只需要在您的buil

Android自定义UI控件(简单方便版,但不灵活)

这种方法的优点就是简单,容易理解,适合开发一些不经常用到的自定义UI控件 缺点就是比较不灵活,如果其他应用想使用这个控件的话得改很多 简单来说,这个方法是用来做成品的,下一篇的方法是用来做模板的. 先看成品,这是一个标题栏控件: 由左右两个按钮和中一个TextView组成: 实现方法: 第一步:定义一个xml文件,用来设计你自定义控件的雏形 示例代码:文件名为title 1 <?xml version="1.0" encoding="utf-8"?> 2

Android View measure (二) 自定义UI控件measure相关

本篇模拟三个角色:Android 架构师-小福.Android  控件开发工程师-小黑. Android 开发工程师-小白,下面按照三个角色不同角度分析measure过程. 小福负责分享: measure的本质 measure代码流程 onMeasure方法与MeasureSpec 提出问题 小黑负责分享: 布局控件开发中覆写Measure例子 - ok 从遇到的一个异常说起 什么时候需要覆写onMeaure? - ok view.getWidth与view.getMeasureWidth区别

iOS开发UI篇—Quartz2D(自定义UIImageView控件)

一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义View. 使用Quartz2D自定义View,可以从模仿系统的ImageView的使用开始. 需求驱动开发:模仿系统的imageview的使用过程 1.创建 2.设置图片 3.设置frame 4.把创建的自定义的view添加到界面上(在自定义的View中,需要一个image属性接收image图片参数->5). 5.添加一个image属性(接下来,拿到image之后,应

UI控件初始化问题:initWithFrame和initWithCoder、aweakFromNib的执行

在iOS学习和程序开发过程中,我们经常会遇到一些自定义UI控件或控制器在初始化时出现问题,尤其在大家刚开始接触时,几种初始化方法的作用以及调用的时机往往容易混淆,这也跟我们对iOS程序设计中,类的创建和实例化的过程了解不透彻有关系.本文用一些小例子来简单梳理一下几者的关系,后面再陆续讨论一些复杂情况的深入对比. 问题: 一.什么时候用initWithFrame,什么时候用aweakFromNib.initWithCoder 二.在初始化时控件自身的frame何时能获得?layoutSubView

Quartz2D(自定义UIImageView控件)

Quartz2D(自定义UIImageView控件) 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义View. 使用Quartz2D自定义View,可以从模仿系统的ImageView的使用开始. 需求驱动开发:模仿系统的imageview的使用过程 1.创建 2.设置图片 3.设置frame 4.把创建的自定义的view添加到界面上(在自定义的View中,需要一个image属性接收image图片参数->5). 5.

iOS--Quartz2D使用(自定义UIImageView控件、绘制基本图形)

自定义UIImageView控件 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义View. 使用Quartz2D自定义View,可以从模仿系统的ImageView的使用开始. 需求驱动开发:模仿系统的imageview的使用过程 1.创建 2.设置图片 3.设置frame 4.把创建的自定义的view添加到界面上(在自定义的View中,需要一个image属性接收image图片参数->5). 5.添加一个image属