手机助手(三):自定义属性 + 飞入飞出

2024-01-28 21:32

本文主要是介绍手机助手(三):自定义属性 + 飞入飞出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

今天主要完成专题和推荐模块。专题是用listview显示一组图片,推荐是飞入飞出的效果。

效果图

这里写图片描述

怎么给轮播图设置点击事件 ?

昨天添加了循环滚动的轮播图,但是没有添加点击事件,我们平时看到的app都是点击轮播图然后跳转到新界面,其实就是给轮播图的ImageView添加点击事件而已。

效果图

这里写图片描述

代码:轮播图中的ViewPager的adapter

public class BannerPagerAdapter extends BasePagerAdapter<String> {public BannerPagerAdapter(List<String> list) {super(list);}@Overridepublic Object instantiateItem(ViewGroup container, final int position) {ImageView iv = new ImageView(container.getContext());ImageLoader.getInstance().displayImage(NetUrl.IMAGE_PREFIX + list.get(position), iv, ImageLoaderOptions.pagerOptions);LayoutParams params = new LayoutParams();params.width = LayoutParams.MATCH_PARENT;params.height = LayoutParams.MATCH_PARENT;container.addView(iv,params);//给imageview添加点击事件iv.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {ToastUtil.showShortToast("position="+position+"url = "+NetUrl.IMAGE_PREFIX + list.get(position));}});return iv;}
}

自定义属性

参考:自定义控件:自定义组合控件+自定义属性

第一步:在attrs.xml中声明自定义属性

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="RatioImageView"><attr name="ratio" format="float" /></declare-styleable></resources>

第二步:使用自定义属性

这里写图片描述

第三步:从命名空间中获取自定义的属性

//都可以
//      String namespace = "http://schemas.android.com/apk/res/ratioimageview";
String namespace = "http://schemas.android.com/apk/res/com.cqc.googleplay";
ratio = attrs.getAttributeFloatValue(namespace, "ratio", 2.42f);//获取xml中的自定义属性的值

RatioImageView:动态设置图片的比

学会了自定义属性,我们才可以在RatioImageView使用它

效果图

这里写图片描述
这里写图片描述

代码

public class RatioImageView extends ImageView {private float ratio =0f;//图片的宽高比private int makeMeasureSpec;public RatioImageView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public RatioImageView(Context context, AttributeSet attrs) {super(context, attrs);String namespace = "http://schemas.android.com/apk/res/ratioimageview";ratio = attrs.getAttributeFloatValue(namespace, "ratio", 2.42f);//获取xml中的自定义属性的值}public RatioImageView(Context context) {super(context);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int width = MeasureSpec.getSize(widthMeasureSpec);if (ratio != 0) {float height = width / ratio;heightMeasureSpec = MeasureSpec.makeMeasureSpec((int) height, MeasureSpec.EXACTLY);} super.onMeasure(widthMeasureSpec, heightMeasureSpec);}
}

SubjectFrag.java和AppFrag差不多,不再展示。

推荐:

参考:自定义控件:飞入飞出的效果
需要导入4个类
这里写图片描述

public class RecommendFrag extends Fragment {private static final String TAG = "RecommendFrag";private ContentPager contentPager;private List<String> list = new ArrayList<String>();private StellarMapAdapter adapter;private int padding = 10;private StellarMap map;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {contentPager = new ContentPager(getActivity()) {@Overridepublic Object requestData() {return getData();}@Overridepublic View createSuccessView() {return getSuccessView();}};return contentPager;}protected View getSuccessView() {int padding = (int) CommonUtil.getDimension(R.dimen.recommend_frag_padding);map = new StellarMap(getActivity());map.setInnerPadding(padding, padding, padding, padding);return map;}protected Object getData() {String json = HttpHelper.get(NetUrl.RECOMMEMD);List textList = (List<String>) GsonUtil.jsonToList(json, new TypeToken<List<String>>() {}.getType());list.addAll(textList);CommonUtil.runOnUIThread(new Runnable() {@Overridepublic void run() {adapter = new  StellarMapAdapter(list, getActivity());  map.setAdapter(adapter);map.setGroup(0, true); //默认显示第几组数据map.setRegularity(15, 15); //X Y方向上的密度          }});return json;}
}

怎么随机设置TextView的字体大小和颜色?

这里写图片描述

Random random = new Random();
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, random.nextInt(5)+15);//[15,20)int red = random.nextInt(150)+50;//[150,200)
int green = random.nextInt(150)+50;//[150,200)
int blue = random.nextInt(150)+50;//[150,200)
int textColor = Color.rgb(red, green, blue);
tv.setTextColor(textColor);

源码

https://git.oschina.net/googlepalycqc/GooglePlayCQCDay03

这篇关于手机助手(三):自定义属性 + 飞入飞出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654825

相关文章

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依