您的位置:首页 > 移动开发 > Android开发

[置顶] Android自定义控件

2016-04-28 20:47 405 查看
Android中Canvas绘图基础详解

Android Paint、Canvas、Matrix使用讲解(一、Paint)

Android Paint之 setXfermode PorterDuffXfermode 讲解

Canvas开篇之drawBitmap方法讲解

Android 手把手教您自定义ViewGroup(一)

Android 自定义View (一)

Android 自定义View (二) 进阶

Android 自定义View (三) 圆环交替 等待效果

Android 自定义View (四) 视频音量调控

Android 深入理解Android中的自定义属性

Android ViewDragHelper完全解析 自定义ViewGroup神器

Android 自定义控件实战

Android LayoutInflater原理分析,带你一步步深入了解View(一)

Android视图绘制流程完全解析,带你一步步深入了解View(二)

Android视图状态及重绘流程分析,带你一步步深入了解View(三)

Android自定义View的实现方法,带你一步步深入了解View(四)

Android自定义控件三部曲文章索引

自定义View:测量measure,布局layout,绘制draw

自定义控件

滑动开关

自定义ViewPager

粘性控件

侧滑删除

视差特效

侧边栏SlidingMenu

3D画廊 Gallery

流式布局FlowLayout

水波纹Ripple

旋转菜单

下拉刷新

侧滑面板

快速索引

轮播图/广告条

等比例显示控件

下拉选择框Spinner

微信朋友圈,QQ空间,微博等列表展示的功能实现

旋转菜单



下拉选择



下拉刷新







滑动开关



轮播图 广告条



侧边栏SlidingMenu





水波纹



自定义ViewPager









快速索引



粘性控件



视差特效





侧滑面板



侧拉删除



等比例显示控件



流式布局FlowLayout



3D画廊





微信朋友圈,QQ空间,微博等列表展示的功能实现



自定义吐司

public class AddressTost implements OnTouchListener {
private WindowManager              mWM;
private Context                    mContext;
private WindowManager.LayoutParams mParams;
private TextView                   mLocation;
private TextView                   mView;

public AddressTost(Context context) {
this.mContext = context;
mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
mParams = new WindowManager.LayoutParams();
WindowManager.LayoutParams params = mParams;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
// | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE //需要toast 有触摸事件
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
params.format = PixelFormat.TRANSLUCENT;
// params.windowAnimations =
// com.android.internal.R.style.Animation_Toast;
// params.type = WindowManager.LayoutParams.TYPE_TOAST;//土司天生没有触摸事件
params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;//换成电话的类型
/**
* 展示号码归属地显示
*/
public void show(String location) {
mLocation = (TextView) view.findViewById(R.id.tv_location);
mView = new TextView(mContext);
// 设置归属地的颜色
mView.setBackgroundColor(Color.RED);
// 设置归属地的位置
mLocation.setText(location);
mWM.addView(mView, mParams);
}
/**
* 隐藏号码归属地
*/
public void hide() {
// 隐藏土司
if (mView!= null) {
// note: checking parent() just to make sure the view has
// been added... i have seen cases where we get here when
// the view isn't yet added, so let's try not to crash.
if (mView.getParent() != null) {
// if (localLOGV) Log.v(TAG, "REMOVE! " + mView + " in " +
// this);
mWM.removeView(mView);
}
view = null;
}
}
}


自定义对话框

public class AddressDialog extends Dialog {
private Window              window;
private OnItemClickListener mOnItemClickListener;

//把我们自己的样式传给父类
//屏蔽父类里面的样式
public AddressDialog(Context context) {
super(context, R.style.AddressDialogStyle);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_address_style);
window = getWindow();
//获取到当前窗体的样式
LayoutParams params = window.getAttributes();

params.gravity = Gravity.BOTTOM;
// | Gravity.CENTER_HORIZONTAL;
//设置窗体的属性
window.setAttributes(params);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: