android 自定义取色器,Android Studio设置颜色拾色器工具Color Picker教程

你可能下载过一些获取颜色值的一些小工具,

这种方式获取颜色,需要先切换窗口转跳到桌面,然后打开拾色器小工具程序,然后去拾取颜色;

你可能也知道Android Studio自带一个颜色拾色器,通过下面这种方式才能找到

这种方式获取颜色值限制性很强,需要特定的窗口,需要点击那么一小块颜色才能弹出窗口,才能使用

66f36614761a0335e9d0f728d55269bf.png

那有没有更好的方式? 答案是肯定的,不然这些个干嘛~~

不用向上面那样去打开拾色器小工具程序,不用在特定的窗口点击特定的位置弹出拾色器工具,是用我们最喜欢的快捷键的方式打开

Android Studio自带了颜色拾色器工具,但是它没有设置快捷键,也没有告诉我们, 这才是问题,

不罗嗦了,跟着下面的设置去设置快捷键吧

9764b53d7eabd141a553f16e213b5409.png

8be241283d67d502d454f810b7716950.png

设置好之后Apply应用 + OK确认下就好了

下面就能愉快的玩耍了,Alt+C~~

8df47d6eb89358de47acde12ad94250f.png

补充知识:Android 自定义一个简版的取色器ColorPicker

最近在一个项目中要用到修改颜色功能,于是搜索了一波android自定义取色器,虽然搜索结果很多,但是都不是令人十分满意(可能是用久了AndroidStudio自带取色器的原因,真的是太好用了有没有?)。

既然这么喜欢AS的调色板,何不自己撸一个?心动不如行动,马上动手!

常规操作,先上效果图,简版取色器效果如下:

270a08229f9706e6737ae67b47bef63d.png

项目地址:

布局单位使用的是dp,没有做其他过多适配操作,程序的源码很简单,可以直接clone下来修改成自己想要的效果或者做其他定制操作,直接使用的话,集成参考如下:

Step 1. Add the JitPack repository to your build file

//在根 build.gradle 中添加

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. Add the dependency

//在模块 build.gradle 中添加

dependencies {

//v1.0.3是版本号,博客不会经常更新,最新版本见github

implementation 'com.github.shixiuwen:colorpicker:v1.0.3'

}

调用示例:

// .xml文件中

android:id="@+id/cpv_color"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

// Activity中

final TextView tvTest = findViewById(R.id.tv_test);

ColorPickerView colorPicker = findViewById(R.id.cpv_color_picker);

//对控件进行回调监听,获取颜色值color

colorPicker.setOnColorChangeListener(new OnColorChangeListener() {

@Override

public void colorChanged(in

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android屏幕坐标色彩指的是以屏幕左上角为原点的坐标系中,每个像素点所对应的颜色值。在Android中,可以通过获取屏幕上某一点的颜色值来实现一些特定的功能,比如颜色取色器拾色器等。 实现颜色选取器可以借助自定义View来完成。具体步骤如下: 1. 自定义一个View,继承自View类,重写onDraw()方法。 2. 在onDraw()方法中,绘制一个渐变的色带,可以使用LinearGradient类来实现。同时,绘制一个小圆圈,表示当前选中的颜色。 3. 为View设置一个触摸事件,当手指按下、移动、抬起时,获取当前手指所在点的坐标,计算出对应的颜色值,并更新小圆圈的位置和颜色。 4. 在View的回调方法中,通知外部监听器当前选中的颜色值,以便外部进行相应的处理。 下面是一个示例代码,可以用来实现一个简单的颜色选取器: ``` public class ColorPickerView extends View { private Paint mPaint; private Paint mCirclePaint; private int mCurrentColor; private float mCurrentX; private float mCurrentY; private OnColorChangeListener mListener; public ColorPickerView(Context context) { super(context); init(); } public ColorPickerView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public ColorPickerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.FILL); mPaint.setStrokeWidth(0); mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG); mCirclePaint.setStyle(Paint.Style.STROKE); mCirclePaint.setStrokeWidth(5); mCirclePaint.setColor(Color.BLACK); mCurrentColor = Color.RED; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int[] colors = {Color.RED, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE, Color.MAGENTA, Color.RED}; float[] positions = {0, 1f / 6, 2f / 6, 3f / 6, 4f / 6, 5f / 6, 1}; LinearGradient gradient = new LinearGradient(0, 0, getWidth(), getHeight(), colors, positions, Shader.TileMode.CLAMP); mPaint.setShader(gradient); canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint); canvas.drawCircle(mCurrentX, mCurrentY, 15, mCirclePaint); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: mCurrentX = x; mCurrentY = y; int pixel = getPixelColor((int) x, (int) y); mCurrentColor = pixel; invalidate(); if (mListener != null) { mListener.onColorChanged(pixel); } return true; case MotionEvent.ACTION_UP: return true; } return super.onTouchEvent(event); } private int getPixelColor(int x, int y) { Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); draw(canvas); return bitmap.getPixel(x, y); } public int getCurrentColor() { return mCurrentColor; } public void setOnColorChangeListener(OnColorChangeListener listener) { mListener = listener; } public interface OnColorChangeListener { void onColorChanged(int color); } } ``` 在使用时,可以将该View添加到布局文件中,并设置一个监听器,监听器可以获取到当前选中的颜色值。 ``` ColorPickerView colorPickerView = (ColorPickerView) findViewById(R.id.color_picker_view); colorPickerView.setOnColorChangeListener(new ColorPickerView.OnColorChangeListener() { @Override public void onColorChanged(int color) { // do something with the color } }); ``` 这样,就可以通过自定义View来实现一个颜色选取器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值