- 这里分享一个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"
?>
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
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、部分核心使用代码:
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控件
时间: 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属