该功能实现很简单,就是根据手指坐标位置在画板上画 1.效果图 2.代码实现 public class ErinieShow extends RelativeL...
前段时间公司项目提了个刮奖需求,网上找了很多,不过大多不能用,或者不合适。...} - (void)scratchView:(YLScratchView *)scratchView beganPoint:(CGPoint)point { NSLog(@"开始刮奖...; } - (void)scratchView:(YLScratchView *)scratchView movedProgress:(CGFloat)progress { NSLog(@"刮奖百分比...; } } - (void)scratchView:(YLScratchView *)scratchView endedPoint:(CGPoint)point { NSLog(@"刮奖结束
https://github.com/muzqi/Article/blob/master/blog/canvas_1_eraser.md
一、实现原理与所需技术 Android刮刮乐效果的实现,自定义view,绘制出中奖信息,将一张图片绘制在中奖信息的上层,通过onTouchEvent监听用户手势,通过path记录绘制轨迹...三、绘制刮刮乐图片 BitmapFactory.decodeResource(getResources(), R.mipmap.fg_guaguaka); 我们首先获得绘制的bitmap,fg_guaguaka...四、‘刮’实现 刮实现主要对用户手势进行监听,通过path.moveto(),进行轨迹的绘制,完成后通过调用invalidate()方法进行重绘。...当我们抬起的时候,需要判断用户是否刮开了较大区域(自己设定的阈值),如果是的,就直接显示出中奖信息,否则用户继续刮。...最终即实现刮刮乐效果。 源码地址:https://download.csdn.net/download/huangliniqng/10484392
使用相对布局,先写一个 TextView,然后自定义一个 EraseView,写一个同样大小的 EraseView 覆盖在 TextView 上面即可。
所以自己重写一个,原理就是直接继承 View 来实现一个刮层,让这个刮层和图片以及文字不产生任何依赖,再结合 FrameLayout 将刮层放置最上一层,刮层之下你想放多少图片文字,图片文字要怎么布局摆放都行...由于是FrameLayout ,刮层的上面想加内容都是可以的。...如图: 原理:刮刮卡无非就是文本,或者图片,就是我们下边的布局,然后在其上绘制刮奖层,设置DST_OUT,然后把用户触摸绘制上去;这样消失以后就能看到背后的奖了。...布局 <FrameLayout android:layout_width="350dp" android:layout_centerInParent="true"...android:id="@+id/gg1" android:layout_height="match_parent" /> 刮一刮控件 public
所以自己重写一个,原理就是直接继承 View 来实现一个刮层,让这个刮层和图片以及文字不产生任何依赖,再结合 FrameLayout 将刮层放置最上一层,刮层之下你想放多少图片文字,图片文字要怎么布局摆放都行...由于是FrameLayout ,刮层的上面想加内容都是可以的。如图: ? ?...原理:刮刮卡无非就是文本,或者图片,就是我们下边的布局,然后在其上绘制刮奖层,设置DST_OUT,然后把用户触摸绘制上去;这样消失以后就能看到背后的奖了。...布局 <FrameLayout android:layout_width="350dp" android:layout_centerInParent="true"...android:id="@+id/gg1" android:layout_height="match_parent" /> 刮一刮控件 public
:text="This is TextView" /> android:id :给当前控件定义了一个唯一标识符。...android:layout_width:指定控件的宽度,可选值:match_parent (fill_parent)和wrap_content ,match_parent 表示让当前的控件的大小和父布局的大小一样...,也就是由父布局来决定当前控件的大小;wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前大小,也可以设置特定的大小。...android:layout_height:指定控件的高度,内容同上。 android:gravity :来指定文字的对齐方式,可选值有top、bottom、left、right、center等。...EditText 在控件里输入和编辑内容 <EditText android:id="@+id/edit_text" android:layout_width="match_parent
> android ="http://schemas.android.com/apk/res/android...= "#ff000000" android:textSize= "16.0sp" /> 显演示样例如以下: 在github上有一个 android-flowlayout 控件,它是依据子视图的大小来动态包裹视图...,如图: 因此,控制换行就能够利用这个控件去实现,无需反复发明轮子。...android-flowlayout功能实现的类是FlowLayout,所以通过继承这个类来完毕标签控件的实现。...; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; import
学习内容来自“慕课网” 很多电商APP中都有刮刮卡活动,刮开涂层,获取刮刮卡内部信息 原理图: image.png 刮刮卡效果:通过画笔画笔来实现,黄色涂层,蓝色涂层,刮动则将两涂层共有的部分去掉, ...defStyle); 53 // TODO Auto-generated constructor stub 54 init(); 55 } 56 //获得控件的宽度和高度...bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.chaji_1); 85 //刮刮卡未刮时候的图案...canvas.drawBitmap(bitmap, 0 , 0, null); 153 //注意任务结束,会把一个mComplete设置为true;当为true时,直接展现刮奖区...new Thread(mRunnable).start();// 统计擦除区域任务 3 break; 任务结束,会把一个mComplete设置为true;当为true时,直接展现刮奖区
今天,我们的主题是基础控件RadioButton。...这个控件可以由非选中状态通过点击事件转为选中状态,但是不能通过点击实现逆向的状态转换,一个默认样式RadioButton控件的非选中和选中状态如下: ?...在上面我们在简介中得知,这个控件能通过点击事件实现的效果如下(不能逆向改变状态): ? 接下来,我们对其基本属性进行设置,改变一下它的样式: ?...> android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...="@drawable/non_chosen_big"> 该控件的开源项目在网上找了一下,感觉没有什么比较好的,主要是因为它的封装程度已经很高了,如果只是想改动一下显示样式和逻辑
转载请标明出处: http://blog.csdn.net/forezp/article/details/51873137 本文出自方志朋的博客 最近在研究android 开发的新控件,包括...:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto..." android:id="@+id/id_drawerlayout" android:layout_width="match_parent" android:layout_height..." android:layout_gravity="left" android:layout_width="match_parent" android:layout_height...View mView= LayoutInflater.from(context).inflate(R.layout.item_demo_adapter,parent,false); 还有一些其他的控件如
新建项目: 1 New Android Project-> 2 Project name:HelloSpinner 3 Build Target:Android 2.2 4 Application name...; 6 import android.app.Dialog; 7 import android.app.TimePickerDialog; 8 import android.os.Bundle;...9 import android.view.View; 10 import android.view.View.OnClickListener; 11 import android.widget.Button...> 2 android="http://schemas.android.com/apk/res/android" 3 android:orientation...android:id="@+id/btn_timepicker" 14 android:layout_width="fill_parent" 15 android:layout_height
Android滑动删除控件 效果展示 代码实现 静态布局 自定义一个ViewGroup,继承至FrameLayout,覆写其中的几个关键方法,用于给其中的两个子view设置布局位置。
SurfaceView 应用程序的视频或者opengl内容往往是显示在一个特别的UI控件中:SurfaceView。SurfaceView的工作方式是创建一个置于应用窗口之后的新窗口。...也难以放在ListView或者ScrollView中,不能使用UI控件的一些特性比如View.setAlpha()。...="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"...android:layout_width="match_parent" android:layout_height="176dp" android:paddingTop="@dimen/..." android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen
mport android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory;...import android.graphics.Canvas; import android.graphics.Rect; import android.os.Handler; import android.os.Message...; import android.os.Vibrator; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent...; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import...{ private static String TAG = "SliderRelativeLayout"; private TextView tv_slider_icon = null; // 初始控件
1、New Android Project-> Project name:Button Build Target:Android 2.2 Application name:ButtonDemo Package..., Toast.LENGTH_LONG).show(); } }); } } 3、修改main.xml文件 <Button android:id="@+id/button1"...android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button1" />
控件大致被分为两类,ViewGroup控件和View控件。ViewGroup空间可以包含多个View控件,并管理其包含的View控件。...通过ViewGroup,整个界面上的控件形成一个树形结构,也就是我们常说的控件树,上层控件负责下层子控件的测量与绘制,并传递交互事件。...通常在Activity中使用findViewById()方法,就是在控件树中以树的深度优先遍历来查找对应元素。...下面来看一下Android界面的架构图,如下图所示。 ? 每个Activity都包含一个Window对象,在Android中Window对象通常由PhoneWindow来实现。...不过这里要注意的是,由于每个Android版本对UI的修改都比较多,上图只是比较粗略地显示了视图树的结构。
; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color...; import android.graphics.Paint; import android.graphics.RectF; import android.text.TextUtils; import...android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout...> android="http://schemas.android.com/apk/res/android" android:layout_width="...ResourcesUtils.getLayoutId(this, "activity_password")); initView(); initListener(); } /** * 初始化控件
首先声明,控件是引用其他大佬写好的。这里只是做一个记录,因为好用,以后还想用,嘿嘿。...cn.aigestudio.wheelpicker:WheelPicker:1.1.3'//滚轮选择器 //xml中做引入我们的滚轮选择器 <com.aigestudio.wheelpicker.WheelPicker android...:id="@+id/wheel" app:wheel_item_text_size="13sp" android:layout_width="match_parent..." android:layout_height="wrap_content" android:layout_marginLeft="20dp"...android:layout_marginRight="20dp"/> //这里是做基本配置。
领取专属 10元无门槛券
手把手带您无忧上云