自定义ImageView添加文字说明,ViewPageAndroid组件详

作者: 新金沙平台  发布:2019-09-08

在android开发中,需要展示图片的地方有很多..正常情况下展示一张图片的时候还需要在下面添加一个文字说明..我们也可以用布局ImageView TextView来实现..最常见的就是底部菜单,或者顶部菜单...图标下面还要添加一个文字说明...重复多次使用ImageView TextView来实现会感觉有点麻烦..下面就介绍一个简易的图片 文字的简单控件上效果图

源码传送门

我是一枚Android系统工程师,定制系统,这是我平时使用到的工具清单:

图片 1效果图

在我们开发Android的时候,ViewPage这个控件的使用频率还是很高的,最简单的就是制作引导页,应用程序的主界面等,在ReactNative开发中实现该功能的组件是ViewPageAndroid,当你看到该组件是以Android结尾,你就明白该组件只对Android平台有效,如果使用就要考虑适配iOS(目前学习到的ScrollView组件可以实现此效果,具体实现不在本篇文章介绍),今天就通过下面示例图,介绍ViewPageAndroid的API以及使用。

图片 2279610A9-5D54-4CC3-A3A9-6744484911F1.png

下面我们开始撸代码.MyImageTextViewNew.java

图片 3viewpage.gif

不过这不是最新的,这是我以前做上层应用开发时用到的!嘻嘻!

public class MyImageTextViewNew extends LinearLayout { private ImageView mImageView = null; private TextView mTextView = null; private int imageId; private int textId, textColorId; public MyImageTextViewNew(Context context) { this(context, null); } public MyImageTextViewNew(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public MyImageTextViewNew(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.setOrientation(LinearLayout.VERTICAL);//设置垂直排序 this.setGravity(Gravity.CENTER);//设置居中 if (mImageView == null) { mImageView = new ImageView; } if (mTextView == null) { mTextView = new TextView; } if (attrs == null) return; int count = attrs.getAttributeCount(); for (int i = 0; i < count; i  ) { String attrName = attrs.getAttributeName;//获取属性名称 //根据属性获取资源ID switch  { //显示的图片 case "image": imageId = attrs.getAttributeResourceValue; break; //显示的文字 case "text": textId = attrs.getAttributeResourceValue; break; //显示的文字的颜色 case "textColor": textColorId = attrs.getAttributeResourceValue; break; } } init(); } /** * 初始化状态 */ private void init() { this.setText; mTextView.setGravity(Gravity.CENTER);//字体居中 this.setTextColor(textColorId); this.setImgResource; addView(mImageView);//将图片控件加入到布局中 addView(mTextView);//将文字控件加入到布局中 } /** * 设置显示的图片 * * @param resourceID 图片ID */ private void setImgResource(int resourceID) { if (resourceID == 0) { this.mImageView.setImageResource; } else { this.mImageView.setImageResource(resourceID); } } /** * 设置显示的文字 * * @param text */ public void setText { this.mTextView.setText; } /** * 设置字体颜色 * * @param color */ private void setTextColor(int color) { if (color == 0) { this.mTextView.setTextColor(Color.BLACK); } else { this.mTextView.setTextColor(getResources().getColor; } }}

对于该组件内部可以嵌套View,每一个子View就相当于一个Page,每一个单独的页面显示时它会拉伸填满ViewPageAndroid。

  • android studio这个大家肯定用的,现在很少用Eclipse了。
  • notepad :一般用于修改文件和查看Log/sublime也一样,不过是用在Mac上。notepad 没有mac版的。
  • 思维导图的,流程图的这些就不说了,每个人都不一样,就算用StartUML也可以满足。
  • beyond compare :这个必须用呀,多人开发的时候你要对比过去,解决冲突之类的。
  • 反编译的比较少用了,以前做智能手表的时候比较常用到。
  • 代码管理不用说了,要么用SVN,要么用Git。我们现在管理系统代码的话是使用repo git。跟google一样。
  • 网易云音乐,我上班就是这个听歌的,这个真心不错!

简单解释下..实际上就是在LinearLayout布局中添加ImageView和TextView这个View也比较简单,代码中也有部分简易的说明.下面可能还需要一个属性文件imageText.xml

 return ( <ViewPagerAndroid style={{backgroundColor: 'red', flex: 1}}> <View ><Text>1</Text></View> <View><Text>2</Text></View> <View><Text>3 </Text></View> </ViewPagerAndroid> )

这些就是平时使用比较多的工具啦!欢迎补全!

<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="imageText"> <attr name="image" format="integer" /> <attr name="text" format="integer" /> <attr name="textColor" format="integer" /> </declare-styleable> </resources>

在上面我么给出了一个最简单的展示ViewPagerAndroid的例子。我们在其内部加入了3个View,那么也将显示3页,虽然View没有设置样式,如宽和高,,但是它会填充ViewPagerAndroid ,其实设置了宽和高也没有用,不管设置宽高多少都是填满ViewPageAndroid。如果不信你可以尝试给第一个View添加样式

顺便推荐一下网站:阳光沙滩(bbs.sunofbeaches.com)欢迎大家加入哦!

图片 4配置文件存放位置

style={{backgroundColor:'green'}}

如果大家需要这些软件的一些破解版,可以到网站里发帖子哈!嘻嘻!

下面展示使用方法

设置后,发现第一页显示的背景是绿色。然后再给第一个View增加宽高属性,都设置为100.如下

欢迎大家补全、关注、点赞、起哄!妈的...要求还真多!还可以打赏呀!

图片 5实际使用

style={{backgroundColor:'green',width:100,height:100}}

介绍到此结束欢迎带地址转发..谢谢!

设置后发现第一页的背景仍然全部是绿色,设置宽高属性并没有产生什么作用。对于文章开始的示例图展示,我们就是在VewPageAndroid组件中添加了5个子View,每一个View中有一个Image用于显示图片,和一个可点击的组件并且显示点击次数。

const styles = StyleSheet.create({ button: { backgroundColor: '#2196f3', borderRadius: 5, marginHorizontal: 20, marginTop: 10, padding: 10, }, buttonText: { color: 'white', }, container: { flex: 1, backgroundColor: 'white', }, image: { width: 300, height: 200, padding: 20, }, viewPager: { flex: 1, },});

由于ViewPageAndroid 5页显示的内容只是图片,背景不一样,其他都是通用的,我们就按如下创建

 render() { var pages = [] for (var i = 0; i < PAGES; i  ) { var pageStyle = { backgroundColor: BGCOLOR[i % BGCOLOR.length], alignItems: 'center', padding: 20, } pages.push( <View key={i} style={pageStyle} collapsable={false}> <Image style={styles.image} resizeMode={Image.resizeMode.contain} source={IMAGE_URIS[i % BGCOLOR.length]} /> <CustomCount/> </View> ) } return ( <View style={styles.container}> <ViewPagerAndroid style={styles.viewPager} ref={ => { this.viewPage = viewPage; }}> {pages} </ViewPagerAndroid> </View> ) }

用到的图片资源常量以及背景常量和页数常量如下

本文由新金沙平台发布于新金沙平台,转载请注明出处:自定义ImageView添加文字说明,ViewPageAndroid组件详

关键词: 新金沙平台