android 音频焦点自定义控件怎么留住焦点

Android中关于焦点图翻转之自定义控件SlideShowView的图片监听
首先声明:
1,关于自定义的slideShowVeiw控件不是我的原创,我也不会原创,至于是哪位大神的我也不清楚,现在在这里小弟先谢谢您!
2,因为项目中要使用焦点图翻转,通常都要实现对应图片的监听事件,我拿到这个slideShowVeiw控件后,自己不会写对应的图片监听,百度了几天也没结果
11:42&&&[]
我做一个自定义控件时(自定义控件包括一个Label、一个TextBox和一个Button),在点击Button时,在自定义控件的下方出现一个MonthCalendar控件(日历控件)。
就像DateTimePicker控件一样,在点下拉按钮时,在其下方会出现一个日历选择,如果失去焦点,比如
00:42&&&[]
前言: & & & 上篇介绍了自定义控件的基本要求以及绘制的基本原理,本篇文章主要介绍如何给自定义控件自定义一些属性。本篇文章将继续以上篇文章自定义圆形百分比为例进行讲解。有关原理知识请参考Android自定义控件之基本原理(一)这篇文章。 &自定义控件相关
17:35&&&[]
& & &一般一个View只有一面,但是可以自定义一个View,实现像翻书那样的翻转效果。 & & 旋转View: & & & & & & /** * 两种方式构造一个翻转卡片 * 1
16:47&&&[]
的处理,包括去饱和,四角黑影,中心突出等。5,图片加文字组合显示。 如果暂时感觉这些看不懂: 先看看这两篇 android 自定义控件属性(TypedArray以及attrs解释) android 自定义控件以及自定义view学习(随机验证码生成)
1、使用Xfermode设置圆角图片 主要代码
11:45&&&[]
.graphics.R import&android.graphics.RectF; import&android.util.AttributeS import&android.view.V /** &*&改变图片颜色的自定义View &nbsp
17:56&&&[]
效果图 直接先上效果图。
实现原理 要完成一个轮播图片,首先想到的应该是使用ViewPager来实现。ViewPager已经有了滑动的功能,我们只要让它自己滚动。再加上下方的小圆点就行了。所以我们本次的自定义控件就是由ViewPager和LinearLayout叠加起来组成的。 创建一个自定义的
23:54&&&[]
android.util.L import android.widget.ImageV import com.alan.myimageview.R; /** * 圆形ImageView,可设置最多两个宽度不同且颜色不同的圆形边框。 * 设置颜色在xml布局文件中由自定义属性配置参数指定 */ public
22:25&&&[]
轮播图,但是viewPager是 android.support.v4.view包下的控件,使用时一定要带上。再用相对布局包裹起来。其中加一个ListView布局,用来包含不同轮播图对应的文字和小白点。布局简单,无需多讲,如下图所示
&RelativeLayout xmlns:android
17:13&&&[]
自定义控件最重要的是需要重写三个构造方法,分别是一个参数、连个参数以及三个参数的,这是最重要的三个。接下来,想要自定义显示饼图就要重写onMeasure以及onDraw方法。 onMeasure方法的主要作用就是重新计算控件的宽高并设置,因为要显示的是饼状图,而饼状图是圆形的相对于控件来说饼状图
16:23&&&[]
创建一个自定义控件,在上面放一个image,把这个自定义控件设为透明,,但是把这个控件放到一个有背景图片的picturebox中,在image中设置的ico文件不能透明显示,怎样解决?
回复讨论(解决方案)
那是你的控件不透明
比较麻烦,我以前也遇到过这样的问题...UP
估计是那个
02:12&&&[]
Android开发中难免遇到需要自定义控件的需求,有些是产品的要求在Android标准控件库中没有满足要求的,有些是开发过程中没有代码的可复用,自己定义的。
一个好的自定义控件应当和Android本身提供的控件一样,封装了一系列的功能以供开发者使用,不仅具有完备的功能,也需要高效的使用内存和
00:02&&&[]5461人阅读
C#自定义控件开发(6)
5.处理自定义控件焦点
原文请看:
其实要说啥是焦点 从口头上来说 我也不知道应该怎么描述 如果非要我描述一下的话 我也只能说:获得焦点的控件会接受用户的键盘事件
比如说 窗体上有两个文本框 我在上面一个文本框打字的时候 不会打到下面的一个文本框里面去 因为在那个时候 具有焦点的是 上面的一个文本框 相信平时 有看到这样的效果像这样的虚线框 表示此刻button2具有焦点 如果这个时候按下回车或者空格的话 就等同于点击了button2
&而按下键盘上的Tab键会在窗体上的控件之间切换焦点、、而获得焦点的控件会变成什么样子的长相 这个得由控件自己去处理
假设就这样创建一个自定义控件放到窗体上 然后按下Tab把焦点切换到控件上去 是看不到任何效果的:
此时此刻 焦点在我的自定义控件上(为了方便显示 我设置成了红色) 还有 如果你在控件的单击事件里面写上一些代码 你按下 回车或者空格 你也是看不到啥效果的:
private void focusControl1_Click(object sender, EventArgs e) {
MessageBox.Show(&Focus&);
}虽然此刻 自定义控件获得了焦点 但不代表你此时此刻按下回车或者空格 就会自动的去触发单击事件 这个得自己写代码实现
现在先来绘制控件 让他得到焦点的时候能有点不同:
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.G
if (this.Focused&&& this.ShowFocusCues/* this.ContainsFocus */) {
using (Pen p = new Pen(Color.Gray)) {
p.DashStyle = System.Drawing.Drawing2D.DashStyle.D
g.DrawRectangle(p, 2, 2, this.Width - 5, this.Height - 5);
g.DrawRectangle(Pens.DarkCyan, 0, 0, this.Width - 1, this.Height - 1);
base.OnPaint(e);
}override OnPaint就不多说了其实也没有啥 看上去就是比起以前 在里面加入了一个判断而已 判断当前是否得到焦点 注意 可以看到的是判断里面我注释了一个 一般情况下两者你都可以用 而他们的区别就是:
ContainsFocus:是否包涵有焦点 也就是如果说控件还有子控件 无论是自身得到焦点还是子控件得到焦点 都是true
Focused:不会去管子控件是否包涵有焦点 注:其实这两者的区别我也是看资料上说的 并没有实际的实践过
ShowFocusCues 决定是否显示焦点框、、什么意思 意思就是默认情况下 窗体上是不会显示焦点框的 不信你试试新建一个窗体 上面搞几个button出来是时候 你去点击那些button看看有没有焦点框?或许被你点击过的按钮是高亮显示的 但是没有焦点框 不过如果这个时候 你点下过Tab来切换焦点 那么控件上面就会显示焦点框了 这个属性的值是只读的 由系统来觉得当前是否应该显示焦点框
但是这样写你运行的时候可能会发现 按下Tab把焦点切换到控件上面去的时候 没有出现什么反映 这里在前面的时候就已经说过了 Paint 只会在得到通知绘制的时候才会执行 而当控件得到或者失去焦点的时候没有去通知 Paint 事件绘制 所以得自己去处理
很简单有两个事件 GotFocus 和 LostFocus 在这两个事件里面通知重绘就可以了(注:这两个事件是在属性窗口找不到的 不只是自定义控件是这样的 其他控件也是 但是可以通过 点 出来)
public FocusControl() {
this.GotFocus += (s, e) =& this.Invalidate();
this.LostFocus += (s, e) =& this.Invalidate();
//protected override void OnGotFocus(EventArgs e) {
this.Invalidate();
base.OnGotFocus(e);
//protected override void OnLostFocus(EventArgs e) {
this.Invalidate();
base.OnLostFocus(e);
像上面一样 你可以选择override也可以选择像我上面那样 更具个人喜好 反正就是处理这两个事件为目的 处理的方式很多 选择自己喜欢的就可以了 通常情况下 要是代码不多 我就会选择像上面的一种写法 如果你不知道上面的那个写法是啥 请百度&匿名委托& 这样当焦点离开 或者得到焦点的时候 就能看到变化了:
(- -! 不要嫌弃好丑 这一篇只讲焦点 所以为了代码简洁 就暂时不添加其他代码)
注:在[GDI+程序设计]一书中 是用的ChangeUICues事件来搞的 但是当时我用了却没有效果 所以就用的Got/LostFocus事件
但是 就这样看上去是没有啥问题了 其实还有bug 比如 假设现在焦点在button1上 而此时我点击自定义控件 控件也执行了Click事件 但是焦点还是在button1上面 & 现在反过来看看 加入焦点现在在自定义控件上 如果此时我去点击button1可以发现button1得到了焦点 而自定义控件失去了焦点 所以还得处理自定义控件的点击 使他点击的时候得到焦点 可能这个时候你会想到处理控件的Click事件 在里面让他得到焦点 确实 不过还是建议处理MouseDown事件 仔细看看 当焦点在自定义控件的时候
点击button1 是不是点下去 鼠标还没有抬起来的时候 button1就已经得到了焦点了?(注:Click = MouseDown + MouseUp)
所以再加代码:
protected override void OnMouseDown(MouseEventArgs e) {
this.Focus();
base.OnMouseDown(e);
或者构造器中:
this.MouseDown += (s,e) =& this.Invalidate();到此 焦点切换基本就没啥问题了
现在来处理一下按键 让它能像button那样得到焦点时 按下回车或者空格 就会触发Click事件 那么处理一下KeyDown事件:
protected override void OnKeyDown(KeyEventArgs e) {
if (e.Modifiers == Keys.None && (e.KeyCode == Keys.Space || e.KeyCode == Keys.Enter))
this.OnClick(new EventArgs());
base.OnKeyDown(e);
那个Modifiers是指 有没有按下Ctrl或者Alt或者Shift 如果没有按下任意一个 并且按下了回车或者空格 那么调用一下控件的单击事件 这个时候 最上面的时候写在控件Click事件里面的提示框也会弹出来了
对于 焦点 这里就讲这么多 其实一个控件不只是有焦点和无焦点的状态 比如还有Enable Enable的状态就不打算单独讲了 因为和上面一样只是在Paint里面多一个判断而已 控件禁用时候张什么样子 绘制就是了 不过不同的是 不用像上面的Got/LostFocus那样去通知Paint 当Enable的值发生变化的时候 会自己执行Paint 所以可以直接在Paint里面判断就行了比如: protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.G
if (!this.Enabled) {
g.FillRectangle(Brushes.Gray, this.ClientRectangle);
if (this.Focused && this.ShowFocusCues/* this.ContainsFocus */) {
using (Pen p = new Pen(Color.Gray)) {
p.DashStyle = System.Drawing.Drawing2D.DashStyle.D
g.DrawRectangle(p, 2, 2, this.Width - 5, this.Height - 5);
g.DrawRectangle(Pens.DarkCyan, 0, 0, this.Width - 1, this.Height - 1);
base.OnPaint(e);
}如果控件禁用的时候
我填充一整块灰色(只是演示而已 禁用的时候要张什么样子你想怎么画 怎么画) 否则正常绘制
至于 焦点 为什么要单独列出来说 是因为焦点扯到的东西比较多 如上面Enable的和焦点的比较 焦点不只是在Paint里面来个判断而已 还要扯到其他的 所以单独列了出来、、在下一篇中 再讲解一下热键就基本差不多了 然后综合前几篇的文章 来个小练习、、然后继续讲一些关于在窗体设计器时候的一些东西..&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:133853次
积分:1638
积分:1638
排名:千里之外
原创:18篇
评论:220条
(1)(1)(6)(1)(1)(1)(1)(4)(1)(1)通过自定义控件实现文本框获得输入焦点时的状态
通过自定义控件实现文本框获得输入焦点时的状态
编辑:www.fx114.net
本篇文章主要介绍了"通过自定义控件实现文本框获得输入焦点时的状态 ",主要涉及到通过自定义控件实现文本框获得输入焦点时的状态 方面的内容,对于通过自定义控件实现文本框获得输入焦点时的状态 感兴趣的同学可以参考一下。
&&&&&&&&&昨天看了里的一片关于通过JS实现文本框获得输入焦点时的状态 ,感觉挺不错的,正好自己对自定义WEB控件这一块不熟悉,就试着参照他的文章写了一个简单的自定义控件。实在太菜了!高手多多指点!!&&&&&&&&&1.首先我们先创建一个WEB控件库&&&&&&&&&2.在生成的CS文件中添加代码,将下面的代码添加到CS中: &1using&S&2using&System.Collections.G&3using&ponentM&4using&System.T&5using&System.W&6using&System.Web.UI;&7using&System.Web.UI.WebC&8&9namespace&MyWebControlLibrary1<span style="COLOR: #{<span style="COLOR: #&&&&[DefaultProperty("Text")]<span style="COLOR: #&&&&[ToolboxData("&{0}:MyTextBox&runat=server&&/{0}:MyTextBox&")]<span style="COLOR: #&&&&public&class&MyTextBox&:&TextBox<span style="COLOR: #&&&&{<span style="COLOR: #&&&&&&&&[Bindable(true)]<span style="COLOR: #&&&&&&&&[Category("Appearance")]<span style="COLOR: #&&&&&&&&[DefaultValue("")]<span style="COLOR: #&&&&&&&&[Localizable(true)]<span style="COLOR: #&&&&&&&&public&string&Text<span style="COLOR: #&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&get<span style="COLOR: #&&&&&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&&&&&String&s&=&(String)ViewState["Text"];<span style="COLOR: #&&&&&&&&&&&&&&&&return&((s&==&null)&?&String.Empty&:&s);<span style="COLOR: #&&&&&&&&&&&&}<span style="COLOR: #<span style="COLOR: #&&&&&&&&&&&&set<span style="COLOR: #&&&&&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&&&&&ViewState["Text"]&=&<span style="COLOR: #&&&&&&&&&&&&}<span style="COLOR: #&&&&&&&&}<span style="COLOR: #&&&&&&&&<span style="COLOR: #&&&&&&&&public&string&FocusCssClass//控件获得焦点时的CSS<span style="COLOR: #&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&get<span style="COLOR: #&&&&&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&&&&&object&obj&=&this.ViewState["FocusCssClass"];<span style="COLOR: #&&&&&&&&&&&&&&&&if&(obj&!=&null)<span style="COLOR: #&&&&&&&&&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&&&&&&&&&return&(string)<span style="COLOR: #&&&&&&&&&&&&&&&&}<span style="COLOR: #&&&&&&&&&&&&&&&&return&"";<span style="COLOR: #&&&&&&&&&&&&}<span style="COLOR: #&&&&&&&&&&&&set<span style="COLOR: #&&&&&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&&&&&this.ViewState["FocusCssClass"]&=&<span style="COLOR: #&&&&&&&&&&&&}<span style="COLOR: #&&&&&&&&}<span style="COLOR: #<span style="COLOR: #&&&&&&&&protected&override&void&OnInit(EventArgs&e)<span style="COLOR: #&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&base.Attributes.Add("OnFocus",&"JavaScript:this.className&=&'"&+&this.FocusCssClass&+&"';");<span style="COLOR: #&&&&&&&&&&&&base.Attributes.Add("OnBlur",&"JavaScript:this.className&=&'"&+&this.CssClass&+&"';");<span style="COLOR: #<span style="COLOR: #&&&&&&&&&&&&base.OnInit(e);<span style="COLOR: #&&&&&&&&}<span style="COLOR: #<span style="COLOR: #<span style="COLOR: #&&&&&&&&protected&override&void&RenderContents(HtmlTextWriter&output)<span style="COLOR: #&&&&&&&&{<span style="COLOR: #&&&&&&&&&&&&output.Write(Text);<span style="COLOR: #&&&&&&&&}<span style="COLOR: #&&&&}<span style="COLOR: #}<span style="COLOR: # 最后右击生成,这样就生成了自己的WEB控件了!呵呵,太简单了! 是不是?生成完了以后你会发现同时在工具箱里也添加了这个控件,现在你可以新建一个页面,然后托进去试试。哦,在使用的时候注意这个自定义控件的多了一个自定义的属性FocusCssClass,这个属性是文本框获得焦点时的CSS样式,而本身自带的CssClass则是失去焦点时的CSS样式。现在你可以自己随便写一个样式表,自己随意定义自己喜欢的文本框获得焦点和失去焦点时的样式!! 源码下载点
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:自定义控件编写流程 创建一个默认就能获取焦点的TextView 1.创建一个类继承至TextView,FocusTextView 2.重写其构造方法
     //使用在通过java代码创建控件
public FocusTextView(Context context) {
super(context);
//由系统调用(带属性+上下文环境构造方法)
public FocusTextView(Context context, AttributeSet attrs) {
super(context, attrs);
//由系统调用(带属性+上下文环境构造方法+布局文件中定义样式文件构造方法)
public FocusTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
3.将原有TextView上的isFocus方法默认修改为,能够获取焦点
     //重写获取焦点的方法,由系统调用,调用的时候默认就能获取焦点
public boolean isFocused() {
return true;
4.使用过程
获取当前类的全路径名称,作为xml中的标签存在,其余属性的使用方式和TextView一致
public class FocusTextView extends TextView {
//使用在通过java代码创建控件
public FocusTextView(Context context) {
super(context);
//由系统调用(带属性+上下文环境构造方法)
public FocusTextView(Context context, AttributeSet attrs) {
super(context, attrs);
//由系统调用(带属性+上下文环境构造方法+布局文件中定义样式文件构造方法)
public FocusTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
//重写获取焦点的方法,由系统调用,调用的时候默认就能获取焦点
public boolean isFocused() {
return true;
&!-- android:ellipsize="end"添加省略点的所在位置 --&
&!-- 想让文字出现跑马灯效果,必须让其获取焦点 --&
&!-- android:marqueeRepeatLimit="marquee_forever"一直滚动属性 --&
&!-- 自定义控件达到滚动效果(其实就是重新原有的TextView,让其一直能够获取焦点即可) --&
android:text="秋天秋天悄悄过去,留下小秘密,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"
android:textColor="#000"
android:singleLine="true"
android:padding="5dp"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/&
&com.itheima.mobilesafe74.view.FocusTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:padding="5dp"
android:singleLine="true"
android:text="秋天秋天悄悄过去,留下小秘密,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"
android:textColor="#000" &
&/com.itheima.mobilesafe74.view.FocusTextView&
阅读(...) 评论()}

我要回帖

更多关于 android 音频焦点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信