永久地址✅✅gdsbet.com✅✅
88娱 乐 网 上 龙 虎 之前,王成鹏叫了第一个试戏演员小羽,叫了第二个小曲,都是比较随意的称呼,他就是叫男一号,也是用大龙的称呼,没那么客气,按理说张烨跟刚刚试镜的俩人名气也差的不算多,跟大龙这个一线明星更是没法比,导演叫他声小张无关痛痒,也是应该的,可是导演却叫了他“张老师”。
虽然大家在骂,可是大家骂过之后也都在买账!
老妈不乐意道:“人家当初都给你开除了,轰走了,现在有事求着你了,让你过去你就过去?王水新那事儿你忘了?本来就是那姓王的不对,他儿子跟单位里胡作非为还动手打人,他老子也是处处找你麻烦,还贪-污-受-贿,‘魏爸爸’那么好的一个老同志,都让他给逼死了,你伸张正义,电视台还开除你,这叫什么事啊!提起这个我就来气!”android自定义view
android开发的自定义view是向高手进阶的必经之路,是区分程序猿高低的分水岭。今天先总结下自定义view的一般步骤,最后再给出一个实战的实例。
实现自定义view的一般步骤
1. 在res/values/中定义view的属性,这里包括字体颜色、修字体大小等
2. 重写view的构造方法,并获取我们在res/values/中自定义的属性
3. 重写onmesure()方法(非必须重写)
4. 重写ondraw()方法
具体步骤的实现
1.在定义view的属性。首先在res/values/下建立一个attrs.xml,在里面定义view的属性和整个样式。
format是该属性的类型,总共包含有:string,color,flag,fraction,demension,enum,integer,float,refrence,boolean;不清楚的可以度娘下。
上面的代码中,我们定义了字体,字体颜色,字体大小3个属性。自定义好属性之后,然后可以在布局中声明我们的自定义view了。
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res/com.example.mycustomview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:layout_width="200dp"
android:layout_height="100dp"
custom:titletext="3712"
custom:titletextcolor="#ff0000"
custom:titletextsize="40sp" />
记住:在布局文件的开头,我们需要引入
xmlns:custom="http://schemas.android.com/apk/res/com.example.mycustomview"这样的命名方式,后面的com.example.mycustomview路径指的是app的包名。
自定义view,继承textview,然后在view的构造方法中,获得我们自定义样式。
//文本
private string mtitletext;
//文本的颜色
private int mtitletextcolor;
//文本的大小
private int mtitletextsize;
//绘制时控制文本绘制的范围
private rect mbound;
private paint mpaint;
public customtitleview(context context, attributeset attrs)
{
this(context, attrs, 0);
}
public customtitleview(context context)
this(context, null);
//获得我自定义的样式属性
public customtitleview(context context, attributeset attrs, int defstyle)
super(context, attrs, defstyle);
//获得我们所定义的自定义样式属性
typedarray a = context.gettheme().obtainstyledattributes(attrs, r.styleable.customtitleview, defstyle, 0);
int n = a.getindexcount();
for (int i = 0; i
int attr = a.getindex(i);
switch (attr)
case r.styleable.customtitleview_titletext:
mtitletext = a.getstring(attr);
break;
case r.styleable.customtitleview_titletextcolor:
// 默认颜色设置为黑色
mtitletextcolor = a.getcolor(attr, color.black);
case r.styleable.customtitleview_titletextsize:
// 默认设置为16sp,typevalue也可以把sp转化为px
mtitletextsize = a.getdimensionpixelsize(attr, (int) typedvalue.applydimension(
typedvalue.complex_unit_sp, 16, getresources().getdisplaymetrics()));
a.recycle();
//获得绘制文本的宽和高
mpaint = new paint();
mpaint.settextsize(mtitletextsize);
// mpaint.setcolor(mtitletextcolor);
mbound = new rect();
mpaint.gettextbounds(mtitletext, 0, mtitletext.length(), mbound);
在上面的代码中,我们重写了3个构造方法,在布局文件中调用的是两个参数的构造方法,因此一定要记得让所有的构造方法调用三个参数的构造方法,再在有三个参数的构造方法中获取自定义的属性。
重写ondraw方法和onmesure方法
@override
protected void ondraw(canvas canvas)
mpaint.setcolor(color.yellow);
canvas.drawrect(0, 0, getmeasuredwidth(), getmeasuredheight(), mpaint);
mpaint.setcolor(mtitletextcolor);
canvas.drawtext(mtitletext, getwidth() / 2 - mbound.width() / 2, getheight() / 2 + mbound.height() / 2, mpaint);
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
int widthmode = measurespec.getmode(widthmeasurespec);
int widthsize = measurespec.getsize(widthmeasurespec);
int heightmode = measurespec.getmode(heightmeasurespec);
int heightsize = measurespec.getsize(heightmeasurespec);
int width;
int height ;
if (widthmode == measurespec.exactly)
width = widthsize;
} else
mpaint.gettextbounds(mtitle, 0, mtitle.length(), mbounds);
float textwidth = mbounds.width();
int desired = (int) (getpaddingleft() + textwidth + getpaddingright());
width = desired;
if (heightmode == measurespec.exactly)
height = heightsize;
float textheight = mbounds.height();
int desired = (int) (getpaddingtop() + textheight + getpaddingbottom());
height = desired;
setmeasureddimension(width, height);
页面布局如下:
xmlns:custom="http://schemas.android.com/apk/res/com.example.customview01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_centerinparent="true"
实现自定义的地震波view
如下是自定义的view
① 先继承view
② 重写构造方法
③ 重写ondraw方法
public class seismicwaveview extends view {
private paint paint;
private int maxwidth = 255;
private boolean isstarting = false;
private listalphalist = new arraylist();
startwidthlist = new arraylist();
public seismicwaveview(context context) {
super(context);
init();
public seismicwaveview(context context, attributeset attrs) {
super(context, attrs);
public seismicwaveview(context context, attributeset attrs, int defstyle) {
private void init() {
paint = new paint();
paint.setcolor(color.yellow);//此处颜色可以改为自己喜欢的
alphalist.add("255");//圆心的不透明度
startwidthlist.add("0");
public void ondraw(canvas canvas) {
super.ondraw(canvas);
setbackgroundcolor(color.transparent);//颜色:完全透明
//依次绘制 同心圆
for (int i = 0; i
int alpha = integer.parseint(alphalist.get(i));
int startwidth = integer.parseint(startwidthlist.get(i));
paint.setalpha(alpha);
canvas.drawcircle(getwidth() / 2, getheight() / 2, startwidth,paint);
//同心圆扩散
if (isstarting && alpha > 0 && startwidth
alphalist.set(i, (alpha-1)+"");
startwidthlist.set(i, (startwidth+1)+"");
if (isstarting&&integer.parseint(startwidthlist.get(startwidthlist.size() - 1)) == maxwidth / 5) {
alphalist.add("255");
//同心圆数量达到6个,删除最外层圆
if(isstarting&&startwidthlist.size()==6)
startwidthlist.remove(0);
alphalist.remove(0);
//刷新界面
invalidate();
//地震波开始/继续进行
public void start() {
isstarting = true;
//地震波暂停
public void stop() {
isstarting = false;
public boolean isstarting() {
return isstarting;
在activity页面中实现地震波的播放和暂停
public class mainactivity extends activity {
private button btn;
private seismicwaveview seismicwaveview;
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
btn = (button) findviewbyid(r.id.button);
btn.settext("开始");
seismicwaveview = (seismicwaveview) findviewbyid(r.id.seismicwaveview);
//控制地震波的按钮
btn.setonclicklistener(new onclicklistener() {
public void onclick(view v) {
if (seismicwaveview.isstarting()) {
btn.settext("继续");
seismicwaveview.stop();
} else {
btn.settext("停止");
seismicwaveview.start();
});
地震波实现效果
地震波的实现效果图
对这个世界的人来说,《宗师》可能很给国产电影提气,票房很高,可是在张烨看来,他觉得还是差了一些,好看是还挺好看的,可说到有多经典?却谈不上了,还远不够那个级别,张烨也就是不会拍电影,他以后要是会拍电影有机会当导演了,他肯定得把他那个地球的殿堂级电影都给拿过来,然后自己主演,想怎么拍怎么拍,也没人敢对他打的太极拳指手画脚了,那时,张烨要告诉告诉所有人,什么才叫电影!至于现在,他的重心暂时还在电视节目上,腾不出工夫搞电影,至少今年不行。
张烨嗯了一声,“跑下来了。
| | |
国家税务总局办公厅主办 电子税务管理中心大阳城app官网的技术支持
大阳城app官网的版权所有:国家税务总局 京icp备13021685号-2 地址:北京市海淀区羊坊店西路5号 邮编:100038 |