本教程将向您展示如何在Ubuntu 14.04服务器中设置来自Let的加密的 TLS / SSL证书,以保护Apache上的多个虚拟主机。 我们还将介绍如何使用cron作业自动执行证书续订过程。...托管多个虚拟主机的功能性Apache Web服务器安装 每个虚拟主机都必须在自己独立的配置文件中设置,并且可以通过浏览器从外部访问。...当您准备好继续前进时,请使用您的sudo帐户登录您的服务器。 第1步 - 下载Let的加密客户端 使用Let's Encrypt获取SSL证书的第一步是在服务器上安装该certbot软件。...Certbot 的renew命令将检查系统上安装的所有证书,并在不到30天的时间内更新任何设置为过期的证书。--quiet告诉Certbot不输出信息也不等待用户输入。 cron现在将每天运行此命令。...结论 在本指南中,我们了解了如何从Let's Encrypt安装免费的SSL证书,以保护Apache上的多个虚拟主机。我们建议您不时查看官方的Let's Encrypt博客以获取重要更新。
页面布局,相对布局 按钮位于父窗体的下方使用android:layout_alignParentBottom=”true” 图片位于按钮的上方,填充父窗体,使用android:layout_above=...onTouch() 在onTouch(View v,MotionEvent event)方法里面 参数:View对象是被触摸的对象,MotionEvent对象是触摸事件对象 调用MotionEvent对象的...获取Paint画笔对象,通过new出来 调用Paint对象的setTrokeWidth()方法,设置画笔粗细,参数:像素 调用Paint对象的setColor()方法,设置画笔颜色,参数:Color.GREEN...注意要从新更新画笔的位置 调用ImageView对象的setImageBitmap(bitmap)方法,把Bitmap显示到控件里 onTouch()方法一定要返回true,才能被持续执行 点击保存按钮...,把图片保存到SD卡上 调用Bitmap对象的compress()方法,参数:图片格式CompressFormat.JPEG,图片质量100,输出流 获取File对象,通过new File(Environment.getExternalStorageDirectory
有了前几篇wifi模块eps8266的使用,单片机设置eps8266程序,android TCP客户端,现在就做一个wifi小车 先上图 小车是四个轮子的,每个轮子上都有电机驱动,前进后退的时候四个轮子同时前进和后退...为了达到更好的操作效果(一直按下前进,小车前进,按下左右转小车左右转,松开左右转,小车继续前进。松开前进,小车停止。后退同理),在单片机程序里加入了前进或后退的标志位。...前进 后退 左转 右转按钮是使用的setOnTouchListener方法,以便在按钮按下或松开时发送数据, 就看一下前进代码 我在前面声明了一下 //前进,关于OnTouchListener的使用,...,找度娘,我也是找的度娘,不要偷懒呦 //前进 private OnTouchListener forwordButtonTouch = new OnTouchListener() {...a8 = P1^7;//后右轮后进 bit forword_flag=0; bit back_flag=0; unsigned char CWMODE[]="AT+CWMODE=2\r\n"; //设置模块的工作的模式为
这些模型已经能够在许多视觉和 NLP 任务上实现 SOTA。...transformer 中的多个注意力头和 CNN 中的多个滤波器是类似的。 在这里,我们解释了如何使用多个头的自注意力机制来整合来自较下层 L 中不同位置的信息,以计算较上层的 L+1 表示。...其思想是,为了识别对象的某一部分,必须首先需要对对象是什么有一个大致的了解。换句话说,我们需要同时拥有自上而下和自下而上的信息流。 对于 NLP 问题来说这也同样适用。...在具有 EM 路由的矩阵胶囊中,它们使用了一个胶囊网络,这个网络包含标准的卷积层,以及一层初级胶囊,随后是几层卷积胶囊。在这个版本的胶囊网络中,实例化参数被表示为一个矩阵,这个矩阵被称为姿态矩阵。...这会导致每种胶囊类型具有不同的实例。 ? 在胶囊网络中,每个层中胶囊类型的数量是预先定义好的。在两个相邻层中的每种胶囊类型之间,都有一个变换矩阵。
在 Android 中,在处理 UI 中的各种元素的时候,两个程序中的要点为: 得到布局文件(XML)中的控件句柄 设置控件的行为 本小节介绍在 Android 中几种基本的程序控制方法,要获得的效果是通过...本例的布局文件(layout)的代码片段如下所示: ? 根据以上的布局文件中定义的两个按钮和一个文本框,这个布局文件被活动设置为 View 后,显示的内容就如上图所示,只是行为还没有实现。...实际上,在布局文件中,各个控件即使不写 android:id 这一项也可以正常显示,但是如果需要在代码中进行控制,则必须设置这一项。...然后通过 setOnClickListener()将其设置到按钮中的 参数就是 this,表示了当前的活动。 通过这种方式的设置,如果程序中有多个控件需要设置,那么所设置的也都是一个函数。...这和上一种方法是有区别的,因为上一个例子实现的接口和获得的 TextView 在同一个函数中,因此不需要保存 TextView 的句柄。
先看一下效果: 不知道为什么,整成gif的横线就没有了,在模拟器上也看不到,真机上是没有问题的,纠结死小编了 image.png image.png 首先我们来看看GridView的一些常用的属性吧...=”true” //设置为true就可以实现滚动条的自动隐藏和显示 10.android:fastScrollEnabled=”true” //GridView出现快速滚动的按钮(至少滚动4页才会显示...true” //设置为true时,你做好的列表就会显示你列表的最下面 14.android:transcriptMode=”alwaysScroll” //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内...要想实现这种功能我们要设置imageview的 android:clickable=”true”,看一下布局文件: 按钮图片的颜色方法,通过初始化adapter的时候,将九宫格的图片传过来,通过onTouch事件来改变颜色值 public View.OnTouchListener onTouchListener
好啦 拖一个按钮过来,放到中心.....您也可以在布局文件里面自己写哈......我是怎样方便怎样弄,,我用的是相对布局 ? ? ? 保存一下现在看效果 ? 好现在再定义一个按钮按下时的外表文件 ?...咱们现在要做的是 ? 其实这个是自己自定义的一个界面 对了设置一下主题风格... ? 感觉这种风格挺好的 ? ? ? 图片可以在我源码里面找,也可以自己弄自己的 ? ?...我们在主按钮的点击事件中调用显示函数 ?...设置在连接上以后,跳转 ? 对了要在 ? ? 现在可以试一试 ? ? ? 整体还好啦.....只不过中间的那个textview太明显了.....咱在代码中把他设置成透明的 ? ?...大家有没有遇到过,多个界面的时候退出的时候不是返回到以前的界面就是又重新加载现在的界面 现在说一下问题所在 界面加载的时候默认 ?
我们上代码验证,我们先写一个最简单的Activity, ? 很简单的布局文件 ? 很简单的按钮点击 此时我们运行程序,点击按钮,控制台会打印 “btn clicked!” 日志,一切正常。...ev传递给Activity窗口绑定的根布局rootView,如果rootView也有子布局,会一级一级传递,具体过程我们下面会具体说明。...所以如果所有布局的都没有消费此触摸事件ev,就会执行第三步 ,调用Activity的onTouchEvent()方法,否则此触摸事件ev在App层传递结束。 ...此时,我们运行程序,按下按钮,不要松开,滑动鼠标(我用的模拟器),真机此处换成手- ,-,然后松开按钮,查看控制台打印日志: ? ...下面我们将onTouchListener的返回值改为false,并重写EventBtn onTouchEvent方法,并返回true。 ? 运行App,点击按钮,查看打印的日志, ?
大家好,又见面了,我是你们的朋友全栈君。 一引言 上一篇文章只是自定义了一个键盘的样式,并未和任何的输入框进行关联。只有和输入框进行关联才能是一个有用的键盘。...它们实现都是通过系统的InputMethodManager类去做的扩展。安装第三方输入法的手机,可以在设置–高级设置-语言和输入法中找到。—-系统级别的输入法 那么有没有app级别的输入法扩展呢?...二需求 我们如何能封装一个没有耦合性的自定义键盘,笔者能想到的需求如下: 动态添加到任何布局中 解决和系统键盘显示冲突 动态绑定系统输入框 有show和hide动画,让键盘显示更加优雅 没有耦合,使用方便...三实现需求 3.1动态添加到任何布局中 android中每个页面布局都有一个DecorView包裹着,我们可以获取这个DecorView,然后把我们的键盘布局文件添加到这个跟布局下: (activity.getWindow...这就需要我们在我们传递过来的布局文件中添加一个宽高是0的EditText。让用户点击完成的时候,这个EditText获取焦点。
焦点事件 setOnFoucsChangeListener 设置方式 1.动态设置(最常用的方式) Button btn = (Button) findViewById(R.id.btnTest);...btn.setText("改变了按钮的文本"); Log.i("Tip","配置的按钮被点击了!")...; } }; 拖入3个按钮并设置ID分别为btnTest2,btnTest3,btnTest4 在onCreate方法中加入这3个按钮的事件。 ...键盘事件 设置我们文本框的键盘事件!...实际上非常有趣...
上一篇中,我说明了Android中Activity和View触摸事件的传递流程,现在我们来继续学习MotionEvent在View的容器ViewGroup中的传递过程。 ...EventRelativeLayout,然后在onCreate中给它添加onTouchListener, ?...很明显,我们的按钮的触摸事件和它的父容器的触摸事件,都触发了,这是因为,我们EventBtn的onTouchListener方法和onTouchEvent方法都返回false,没有消费触摸事件,事件会向上继续传递...修改onCreate中的代码 ? 修改main布局文件 ? ...修改布局文件,让三个按钮完全重合,加入的顺序,分别是btn1,btn2,btn3,如果按照我们的结论,触摸事件的传递顺序应该是btn3->btn2->btn1->ViewGroup->Activity,
可以看出底部其实有一个ViewGroup(LinearLayout or RelativeLayout 灰色背景部分) 但是我们要求中间一个图标按钮 是要比别的稍大点的,那么正常的我们写在一个LinearLayout...其实很简单,这里假设大家都会使用ViewPager并且已经写出了ViewPager的效果 第一步: 我们只需要在原来基础上在布局文件里对ViewPager控件和它对应的根控件 添加 android:clipChildren...80dp" 设置这两个属性的目的是什么呢?...解决办法:将父类的touch事件分发至viewPgaer,R.id.ly是ViewPager控件的父容器 findViewById(R.id.ly).setOnTouchListener(new View.OnTouchListener...return viewpager.dispatchTouchEvent(event); } }); 另外,activity代码中给ViewPager控件动态设置间距也会是效果大大提高
mipmap-xxhdpi:超超高分辨率,高端机可以用 mipmap-xxhdpi:超超超高分辨率,牛 2.布局资源 layout :该目录下存放的就是我们的布局文件,另外在一些特定的机型上,要做屏幕适配...,比如480320这样的手机,我们会另外创建一套布局,比如layout-480320这样的文件夹 3.菜单资源(无) menu:在以前有物理菜单按钮,即有menu键的手机上用的较多,菜单项相关的资源xml...eg:public void myClick(View source) source对应事件源(组件) 接着布局文件中对应要触发事件的组建,设置一个属性:onclick = "myclick"即可...,以View为例,有以下几个方法 在该组件上触发屏幕事件:boolean onTouchEvent(MotionEvent event); 在该组件上按下某个按钮时:boolean onKeyDown(...int keyCode,KeyEvent event); 松开组件上的某个按钮时:boolean onKeyUp(int keyCode,KeyEvent event); 长按某个按钮时:boolean
前几天在郭霖大神的博客上看了自定义View的知识,感觉受益良多,大神毕竟大神。...:对两个按钮的单击事件进行处理,单击“返回”键的时候提示并结束当前Activity,单击“操作”按钮的时候进行提示。...-- 加入自定义的控件 --> 布局文件也比较简单,值得注意的是使用自定义控件要写完整的类的路径名,当然,也可以使用 布局文件名> 在加载layout...文件夹中的布局文件,这样的话就得在activity_main.xml对应的类文件中书写加载的布局文件的事件处理逻辑,否则这个加载的布局文件就没有事件处理效果了 最后是MaiActivity.java...这个类并且重写了其onDraw方法来实现自己的控件样式,控件中画了一个圆并且通过它的点击事件来实现改变控件颜色和计数, 最后在主布局文件activity_main.xml中加入这个控件,你也可以在MainActivity.java
1、新建一个Android项目,创建自定义标题栏的布局文件title_bar.xml: 可见这个标题栏控件还是比较简单的,其中在左边有一个返回按钮,背景是一张事先准备好的图片back1_64.png...,为返回按钮添加事件监听方法,并提供了设置标题文本的方法。 ...3、在activity_main.xml中引入自定义的标题栏: 4、在MainActivity中获取自定义的标题栏,并且为返回按钮添加自定义点击事件: private TitleView mTitleBar...1、创建删除按钮布局delete_btn.xml,这个布局是在横向滑动列表项后显示的: 2、创建CustomListView类,继承自ListView,并实现了OnTouchListener和OnGestureListener...中引入自定义的ListView: 6、在MainActivity中对列表做初始化、设置列表项删除按钮点击事件等处理: public class MainActivity extends Activity
大家好,又见面了,我是你们的朋友全栈君。...小编使用的dialog是如下: var d = top.dialog({ title: '【哈哈】查询结果', url:'${base}/commonDig/appl?...可能不用人用的dialog不同,现实也会有差异,这里仅提供了小编的解决办法。仅供参考。
具有划时代的意义,拓展性很强,我们可以自己添加下拉刷新,上拉加载更多功能。...他和recycleview不同,他生来具有addHeaderView和addFooterView的功能,这也导致同样都是列表控件,实现上拉下拉的方式缺截然不同。...setPadding可以设置显示位置,左上右下,上为负数就是隐藏在顶部。我们需要手指下拉去控制他缓慢显示,就用到了OnTouchListener,我们实现OnTouch方法做一些事件的分发处理。...,加载更多实现方式不同,我罗列两种 结合OnTouchListener 结合OnScrollListener 方式一 这里我先说方式一,因为我们下拉也是用的OnTouchListener,上拉加载也有几种状态...,有加载中,还有暂无数据,普遍大家会写, 已经到底了~,一直显示在最底部,提示用户没数据了,从而我们控件的上拉事件不可触发状态。
VERTICAL : HORIZONTAL;//方向,根据从布局文件中获得的位置,得出应该是垂直方向 setOrientation(mOrientation);//然后让这个布局文件设置为该方向...如果抽屉方向是水平的话:delta为整个视图的宽度 接下来就是在画布上如何显示这个抽屉了,也是按照方向来的: if (mOrientation == VERTICAL) { canvas.translate...上面的都是初始化状态下抽屉的布局位置,如果我手指点击了按钮,也就是拉动了“环扣” 布局是需要重新画的,这个函数会重新加载哦,那么我们必须根据抽屉的状态去随时更新视图了: if (mState...,也即是一个布局,程序员可以在里面加载自己的布局样式,可以放很多按钮,很多TextView等 接下来我们再来看看它做了什么处理: “环扣”按钮找到了,立马监听它的监听事件: mHandle.setOnTouchListener...,我们设置它为可见 } return true; } // 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个
有效上滑 如上如,锁屏状态下,定义有效滑动阈值standardH,若上滑高度差超过standardH,则判断为有效滑动,布局滑动至屏幕顶部(不可见);否则如向下滑动、向上滑动距离不够等,都作为无效滑动...,填充布局,这里我们考虑到布局需要填充数据的情况,封装了常用的方法,大家可以根据自己的业务逻辑进行相应封装。...{ TextView textView = (TextView) getView(viewId); textView.setTextSize(textSize); } /** * 设置按钮点击事件...问题与改进 问题出现 基于上述的扩展,在RecyclerView的item里的控件添加点击事件后,发现推荐页无法按预期显示隐藏:无论滑动多短的距离甚至是向上滑动,只要是在屏幕下方滑动,推荐页总是会自己显示出来...问题解决 知其然知其所以然,通过百度得知,RecyclerView的item里的控件设置onClick方法,会抢占onTouchEvent,在ACTION_DOWN动作发生的时候,所以解决办法就是将那个点击控件重写
领取专属 10元无门槛券
手把手带您无忧上云