Android自定义控件

  1. Android中Canvas绘图基础详解
  2. Android Paint、Canvas、Matrix使用讲解(一、Paint)
  3. Android Paint之 setXfermode PorterDuffXfermode 讲解
  4. Canvas开篇之drawBitmap方法讲解
  5. Android 手把手教您自定义ViewGroup(一)
  6. Android 自定义View (一)
  7. Android 自定义View (二) 进阶
  8. Android 自定义View (三) 圆环交替 等待效果
  9. Android 自定义View (四) 视频音量调控
  10. Android 深入理解Android中的自定义属性
  11. Android ViewDragHelper完全解析 自定义ViewGroup神器
  12. Android 自定义控件实战
  13. Android LayoutInflater原理分析,带你一步步深入了解View(一)
  14. Android视图绘制流程完全解析,带你一步步深入了解View(二)
  15. Android视图状态及重绘流程分析,带你一步步深入了解View(三)
  16. Android自定义View的实现方法,带你一步步深入了解View(四)
  17. Android自定义控件三部曲文章索引
  18. 自定义View:测量measure,布局layout,绘制draw

自定义控件

  • 滑动开关
  • 自定义ViewPager
  • 粘性控件
  • 侧滑删除
  • 视差特效
  • 侧边栏SlidingMenu
  • 3D画廊 Gallery
  • 流式布局FlowLayout
  • 水波纹Ripple
  • 旋转菜单
  • 下拉刷新
  • 侧滑面板
  • 快速索引
  • 轮播图/广告条
  • 等比例显示控件
  • 下拉选择框Spinner

旋转菜单

Android自定义控件_第1张图片

下拉选择

Android自定义控件_第2张图片

下拉刷新

Android自定义控件_第3张图片

Android自定义控件_第4张图片

Android自定义控件_第5张图片

滑动开关

Android自定义控件_第6张图片

轮播图 广告条

自定义控件

侧边栏SlidingMenu

Android自定义控件_第7张图片

Android自定义控件_第8张图片

水波纹

Android自定义控件_第9张图片
自定义控件

自定义ViewPager

Android自定义控件_第10张图片

Android自定义控件_第11张图片
Android自定义控件_第12张图片

Android自定义控件_第13张图片

快速索引

Android自定义控件_第14张图片

粘性控件

Android自定义控件_第15张图片

视差特效

Android自定义控件_第16张图片

Android自定义控件_第17张图片

侧滑面板

Android自定义控件_第18张图片
DragLayout

侧拉删除

Android自定义控件_第19张图片

等比例显示控件

流式布局FlowLayout

Android自定义控件_第20张图片

3D画廊

Android自定义控件_第21张图片

Android自定义控件_第22张图片

自定义吐司

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);
    }
}

你可能感兴趣的:(Android自定义控件)