自定义view

使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab

て烟熏妆下的殇ゞ 提交于 2020-02-03 19:37:01
版权声明:本文为 HaiyuKing 原创文章,转载请注明出处! 前言 使用FragmentTabHost实现底部选项卡效果。 备注:该Demo主要是演示FragmentTabHost的一些设置和部分功能,实际中需要参考其他Demo。 效果图 代码分析 1、该Demo中采用的是FragmentTabHost的布局方案之一 【命名为非常规布局写法】;【 建议使用常规布局写法 ,见《 FragmentTabHostTopDemo【FragmentTabHost固定宽度且居中】 》】 2、未使用自定义的FragmentTabHost; 【建议使用自定义的FragmentTabHost,见《FragmentTabHostUnderLineDemo【 FragmentTabHost带下划线 】》】 原因是FragmentTabHost切换时执行的是attach/detach,而不是show/hide。而atach触发的执行顺序:attach()->onCreateView()->onActivityCreated()->onStart()->onResume() 使用hide()方法只是隐藏了fragment的view并没有将view从viewtree中删除,随后可用show()方法将view设置为显示。 3、ContactFragment演示的是:使用FragmentTabHost时

Android LayoutInflater&LayoutInflaterCompat源码解析

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-02 00:12:02
本文分析版本: Android API 23,v4基于 23.2.1 1 简介 实例化布局的XML文件成相应的View对象。它不能被直接使用,应该使用 getLayoutInflater() 或 getSystemService(Class) 来获取已关联了当前 Context 并为你正在运行的设备正确配置的标准LayoutInflater实例对象。 例如: LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 为了创建一个对于你自己的View来说,附加了 LayoutInflater.Factory 的 LayoutInflater ,你需要使用 cloneInContext(Context) 来克隆一个已经存在 LayoutInflater ,然后调用 setFactory(LayoutInflater.Factory) 来替换成你自己的Factory。 由于性能原因,View的实例化很大程度上依赖对于xml文件在编译时候的预处理。因此,目前使用 LayoutInflater 不能使用直接通过原始xml文件获取的 XmlPullParser ,只能使用一个已编译的xml资源返回的 XmlPullParser ((R

自定义Toast

こ雲淡風輕ζ 提交于 2020-01-31 19:23:36
简易自定义Toast public class MainActivity extends ListActivity { private WindowManager wm; private WindowManager.LayoutParams params; private TextView textview; @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { //如果没有add或add后已经remove,则再次remove时会报异常 wm.removeView(textview); } }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] array = { "开启自定义的Toast", "3秒后关闭Toast", "", }; setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>

023 Android 自定义Toast控件

给你一囗甜甜゛ 提交于 2020-01-31 19:19:11
1.Toast自定义控件工具类 package com.example.administrator.test62360safeguard.Utils; import android.content.Context; import android.graphics.PixelFormat; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import com.example.administrator.test62360safeguard.R; public class ToastUtil { /** * 显示吐司 * @param context 应用的上下文 * @param windowManager 窗口管理器 * @param textshow 需要在textview 中需要显示的文本内容 * @return 吐司toast控件 */ public static View showToast(final Context context, final WindowManager windowManager,

[php]laravel框架容器管理的一些要点

时光毁灭记忆、已成空白 提交于 2020-01-30 06:27:04
原文地址: https://www.cnblogs.com/lyzg/p/6181055.html 阅读目录 1. laravel容器基本认识 2. 如何在代码中获取到容器实例 3. 直观的认识laravel容器 4. 如何理解服务绑定与解析 5. 服务提供者的作用与使用 6. 服务绑定名称的别名 7. 依赖注入的机制 8. 其它 本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点。文章很长,但是内容应该很有用,希望有需要的朋友能看到。php经验有限,不到位的地方,欢迎帮忙指正。 1. laravel容器基本认识 laravel框架是有一个容器框架,框架应用程序的实例就是一个超大的容器,这个实例在bootstrap/app.php内进行初始化: 这个文件在每一次请求到达laravel框架都会执行,所创建的$app即是laravel框架的应用程序实例,它在整个请求生命周期都是唯一的。laravel提供了很多服务,包括认证,数据库,缓存,消息队列等等,$app作为一个容器管理工具,负责几乎所有服务组件的实例化以及实例的生命周期管理。这种方式能够很好地对代码进行解耦,使得应用程序的业务代码不必操心服务组件的对象从何而来,当需要一个服务类来完成某个功能的时候,仅需要通过容器解析出该类型的一个实例即可。从最终的使用方式来看

自定义验证码数字键盘

主宰稳场 提交于 2020-01-30 04:33:47
自定义验证码数字键盘 序言 我们会遇到很多输入六位数,四为数的验证码界面 文章目录 自定义验证码数字键盘 序言 最终效果如下 问题 预期操作方式 实现 输入框界面思路 键盘界面的思路 思路总结 输入框代码 总结 最终效果如下 问题 那我们做这类界面的时候遇到的什么问题呢 需要有四个或者六个固定的输入框供用户输入 输入框内不能有光标,用户只能从后往前删除数字 如果用edittext那么会一直有光标可以选择,文字输入一个之后跳转到另一个会有一定的bug,包括edittext的聚焦,光标显示在不对的输入框内的问题等等 如果用原生的键盘,那么有的时候不可避免的用户可以切换到标点符号输入键盘,有的甚至可以到英文键盘,这样需要过滤掉这些不能输入的字符。而且用户切换过去之后不好切回来体验极差 输入框的唤醒,我们很难很好的去操作输入框的显示和隐藏,这是很蛋疼的代码,可能你要写很多代码才能去隐藏掉原生的输入框,然后在有些机型上可能这个代码并没什么效果。 预期操作方式 那我们预期达到的操作方式是什么呢,我们假设用户是傻子或者好奇心极强,以及故意找漏洞的不怀好意的人。 我们希望用户只能点击,甚至只能看到数字键盘,连一个标点符号按钮都看不到 我们希望用户不要去随意的换输入框去输入数字,只能从前往后输入,只能从后往前删除 这样的输入框可能很简单很呆板,但是体验非常好,也避免了不怀好意的用户用出很多问题

金九银十中,看看这31道Android面试题

左心房为你撑大大i 提交于 2020-01-30 01:48:52
阅读目录 1.如何对 Android 应用进行性能分析 2.什么情况下会导致内存泄露 3.如何避免 OOM 异常 4.Android 中如何捕获未捕获的异常 5.ANR 是什么?怎样避免和解决 ANR(重要) 6.Android 线程间通信有哪几种方式 7.Devik 进程,linux 进程,线程的区别 8.描述一下 android 的系统架构 9.android 应用对内存是如何限制的?我们应该如何合理使用内存? 10. 简述 android 应用程序结构是哪些 11.请解释下 Android 程序运行时权限与文件系统权限的区别 12.Framework 工作方式及原理,Activity 是如何生成一个 view 的,机制是什么 13.多线程间通信和多进程之间通信有什么不同,分别怎么实现 14.Android 屏幕适配 15.什么是 AIDL 以及如何使用 16.Handler 机制 17.事件分发机制 18.子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么 19.子线程中能不能 new handler?为什么 20.Android 中的动画有哪几类,它们的特点和区别是什么 21.如何修改 Activity 进入和退出动画 22.SurfaceView & View 的区别 23.开发中都使用过哪些框架、平台 24

GitHub 优秀的 Android 开源项目

♀尐吖头ヾ 提交于 2020-01-27 04:06:54
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、EditText、TableView、Activity Animation等等。    一、ListView android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新 ListView、ViewPager、WevView、ExpandableListView、GridView、(Horizontal )ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多。并且他实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验更好。 项目地址: https://github.com/chrisbanes/Android-PullToRefresh Demo地址: https://github.com/Trinea/TrineaDownload/blob/master/pull-to-refreshview-demo.apk?raw

studio之自定义View搜索框

怎甘沉沦 提交于 2020-01-27 01:20:22
MyView层 public class MyVIew extends LinearLayout { protected Context mContext ; private EditText editName ; private Button sousuo ; public MyVIew ( Context context , @Nullable AttributeSet attrs ) { super ( context , attrs ) ; this . mContext = context ; View . inflate ( mContext , R . layout . activity_myview , this ) ; initView ( ) ; } private void initView ( ) { editName = findViewById ( R . id . edit_name ) ; sousuo = findViewById ( R . id . sousuo ) ; sousuo . setOnClickListener ( new OnClickListener ( ) { @Override public void onClick ( View v ) { String trim = editName . getText ( ) .

小程序学习

╄→гoц情女王★ 提交于 2020-01-26 03:35:11
转自 https://www.cnblogs.com/dotnetcrazy/p/10597311.html#top 文章汇总: https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 一文摸摸小程序的底¶ 1.屁话一箩筐¶ 2.记录点小程序功能点¶ 2.1.前言¶ 2.2.页面初始数据的使用¶ 2.2.1.获取¶ 2.2.2.设置¶ 3.弹框提醒¶ 4.页面自定义属性值¶ 4.1.H5的自定义属性值¶ 4.2.小程序版¶ 5.小程序标题¶ 6.拨打电话¶ 7.图片背景¶ 7.1.背景图片¶ 7.2.页面填充¶ 7.3.新思路¶ 8.页面跳转¶ 9.地图相关¶ 9.1.简单案例¶ 9.2.Map组件¶ 1.简单案例扩展¶ 2.Map组件案例¶ 补充说明¶ 1.关于调试¶ 2.关于开发者设置¶ 3.关于网络资源的说明¶ 4.发布和预览¶ 一文摸摸小程序的底 写在前面的话:算不了入门教程,只能算这几晚的摸索教程,下次会出一篇 一文入门小程序 本文示例源码: https://github.com/lotapp/BaseCode/tree/master/javascript/5.wechat/base 1.屁话一箩筐 有些同志留言说我消失了,文章更新频率比以前慢多了?我这边先统一回复一下: 最近这 几个月 利用空闲时间把三国读完了(咳