一值有在用网上朋友贴出来的代码,很方便,也能学到很多东西. 这次我也贴点比较简单使用的小东西. 不怎么形容 有图有代码 自己看真想...
主体代码
package com.suncco.taoxie;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class MyView extends View {
private int count;
private float space, radii;
private int point_normal_color, point_seleted_color;
// 选中
private int selected = 0;
// background seleted normal
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context
.obtainStyledAttributes(attrs, R.styleable.MyView);
count = a.getInteger(R.styleable.MyView_count, 3);
space = a.getDimension(R.styleable.MyView_space, 9);
radii = a.getDimension(R.styleable.MyView_point_radii, 9);
point_normal_color = a.getColor(R.styleable.MyView_point_normal_color,
0x000000);
point_seleted_color = a.getColor(
R.styleable.MyView_point_seleted_color, 0xffff07);
int sum = attrs.getAttributeCount();
a.recycle();
}
public void setCount(int count) {
this.count = count;
invalidate();
}
public void next() {
if (selected < count - 1)
selected++;
else
selected = 0;
invalidate();
}
public void previous() {
if (selected > 0)
selected--;
else
selected = count - 1;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setAntiAlias(true);
// 起始位置,实现整体居中
float w = canvas.getWidth() - (count * 2 * radii) - space * (count - 1);
for (int i = 0; i < count; i++) {
if (i == selected)
paint.setColor(point_seleted_color);
else
paint.setColor(point_normal_color);
canvas.drawCircle(w / 2.f + radii + i * (space + radii + radii),
radii + 1, ((int) radii + 2) / 2, paint);
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(widthMeasureSpec, (int) (radii * 2) + 2);
}
public void setSelected(int selectedId) {
if (selectedId >= 0 && selectedId <= count)
this.selected = selectedId;
else if (selectedId < 0)
this.selected = 0;
else if (selectedId > count)
this.selected = count;
invalidate();
}
}
自定义View 的自定义命名空间:
以下自定义属性 count: 总数, space: 每个点的距离大小之类的等等 名字取得都比较通俗了...
这个文件xml放在 value 下的 ***_attrs.xml 比如我这里去 haowuliaoa_attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyView">
<attr name="count" format="integer" />
<attr name="space" format="dimension" />
<attr name="point_size" format="dimension" />
<attr name="point_seleted_color" format="color|reference" />
<attr name="point_normal_color" format="color|reference" />
<attr name="point_radii" format="dimension" />
</declare-styleable>
</resources>
一切ok了, 可以直接在xml布局上应用咯...
首先要在布局的头 添加上自己的命名空间
xmlns:haowuliaoa="http://schemas.android.com/apk/res/自己的包名"
然后就是xml布局咯...
<包名.MyView android:id="@+id/myView"
android:layout_width="fill_parent" android:layout_height="10dip"
android:background="#00000000" android:gravity="center"
android:layout_marginBottom="4dip" haowuliaoa_attrs:count="6" suncco:space="10dip"
haowuliaoa_attrs:point_size="4dip" haowuliaoa_attrs:point_seleted_color="#ff0000"
haowuliaoa_attrs:point_normal_color="#ffffff" haowuliaoa_attrs:point_radii="5dip" />
so 简单吧....
图片下面的小点就是今天的效果哦 很常用的
功能却是经常能用到的哦 ...
分享到:
相关推荐
android 自定义View — 自定义组合控件
android自定义view之组合控件、重写控件
android 自定义view比较综合的例子,涉及到一些复杂的实现效果,有一些基础的人可以参考下。
Android自定义View实现转盘旋转的效果
Android自定义view组合控件、重写控件的例子源码,创建出对应的组合布局视图,将创建出的视图添加到根节点。Android使用view控件的例子,面向Android开发新手,高手绕行。
android自定义View实现SwitchView
android 自定义view及自定义属性
共同学习共同进步
android使用自定义view和自定义button实现的小demo,可以实现button的点击变换背景等功能
android 自定义View界面大合集
Android自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View高仿抖音潜艇大挑战小游戏.zipAndroid自定义View...
仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...
我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能 http://blog.csdn.net/ouyang_peng/article/details/50813419 1、实现歌词同步滚动的功能,即歌曲播放到哪句...
本文利用SrcIn实现一个人脸扫描的效果,步骤如下: 1、准备两个人脸照片(一明一暗),暗照片作为背景,亮照片作为src前景显示 2、然后通过SrcIn用一个透明矩形框(Dst)与亮照片(src)取交集即可得出一个亮照片的...
主要为大家详细介绍了Android自定义view实现选座功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
仿ios的开关控件,采用android自定义view的方式实现
用自定义View的方式来实现圆形的遥控器菜单。更多关于android自定义的知识可访问:http://blog.sina.com.cn/s/blog_9c4f0e790102vyt3.html
创建全新的视图将满足我们独特的UI需求。 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图。
Android中自定义View操作Android中自定义View操作Android中自定义View操作
软键盘弹出之后,计算软键盘的高度,将自定义的View设置于软键盘之上。代码重点计算了如何让软键盘显示与隐藏,并且,还解决了如何点击软键盘与自定义View 之外的区域,让软键盘隐藏而不会与其他控件的点击事件冲突...