码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-06-15 22:02:51      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

 

 

    • 这里分享一个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里即可

       

      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>
      另外如果提示

       

       

      1.<item name="android:windowBackground">@color/white</item>
      这里的white找不到的话,说明你项目res/values/color.xml没有新建或者没有white颜色这个值,只需在res/values/color.xml里添加

       

       

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

      这个白色值即可。

       

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

       

      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

       

       

      1.<?xml version="1.0" encoding="utf-8"?>
      3. 
      4.<translate
      5.android:duration="500"
      6.android:fromYDelta="100%p" />
      7. 
      8.</set>

      res/anim/bottomview_anim_exit.xml

       

       

      1.<?xml version="1.0" encoding="utf-8"?>
      3. 
      4.<translate
      5.android:duration="500"
      6.android:toYDelta="100%p" />
      7. 
      8.</set>

      整体为:

       

      技术分享

      2、部分核心使用代码:

       

      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

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

标签:

原文地址:http://www.cnblogs.com/exmyth/p/4579227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!