日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Studio設置顏色拾色器工具Color Picker教程

瀏覽:173日期:2022-09-26 13:58:19

你可能下載過一些獲取顏色值的一些小工具,

這種方式獲取顏色,需要先切換窗口轉跳到桌面,然后打開拾色器小工具程序,然后去拾取顏色;

你可能也知道Android Studio自帶一個顏色拾色器,通過下面這種方式才能找到

這種方式獲取顏色值限制性很強,需要特定的窗口,需要點擊那么一小塊顏色才能彈出窗口,才能使用

Android Studio設置顏色拾色器工具Color Picker教程

那有沒有更好的方式? 答案是肯定的,不然這些個干嘛~~

不用向上面那樣去打開拾色器小工具程序,不用在特定的窗口點擊特定的位置彈出拾色器工具,是用我們最喜歡的快捷鍵的方式打開

Android Studio自帶了顏色拾色器工具,但是它沒有設置快捷鍵,也沒有告訴我們, 這才是問題,

不羅嗦了,跟著下面的設置去設置快捷鍵吧

Android Studio設置顏色拾色器工具Color Picker教程

Android Studio設置顏色拾色器工具Color Picker教程

設置好之后Apply應用 + OK確認下就好了

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

Android Studio設置顏色拾色器工具Color Picker教程

補充知識:Android 自定義一個簡版的取色器ColorPicker

最近在一個項目中要用到修改顏色功能,于是搜索了一波android自定義取色器,雖然搜索結果很多,但是都不是令人十分滿意(可能是用久了AndroidStudio自帶取色器的原因,真的是太好用了有沒有?)。

既然這么喜歡AS的調色板,何不自己擼一個?心動不如行動,馬上動手!

常規操作,先上效果圖,簡版取色器效果如下:

Android Studio設置顏色拾色器工具Color Picker教程

項目地址:

https://github.com/shixiuwen/colorpicker

布局單位使用的是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文件中<com.shixia.colorpickerview.ColorPickerView android: 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);//對控件進行回調監聽,獲取顏色值colorcolorPicker.setOnColorChangeListener(new OnColorChangeListener() { @Override public void colorChanged(int color) { tvTest.setBackgroundColor(color); }});

該控件的顏色變化過程是通過觀察AndroidStudio取色板顏色變化規律而得到的,因為項目沒有其他要求,所以目前沒有提供其他公開方法可以供外部調用,有這方面需求的可以自己把庫下載下來自動修改,有修改困難的可以郵件聯系。另外,如果后面該庫會收到幾個start的話會考慮加一些其他功能,比如 布局適配、顏色初始化功能、常用顏色記錄功能…… 等等。

以下是關鍵類代碼:

package com.shixia.colorpickerview;import android.content.Context;import android.graphics.Color;import android.graphics.drawable.GradientDrawable;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RelativeLayout;public class ColorPickerView extends LinearLayout { private final View llColorProgress; private final View vColorBar; private final View rlTransBar; private final View vTransBar; private final RelativeLayout.LayoutParams transBarLayoutParams; private int red = 255, green = 0, blue = 0; private int index = 0; private ColorPreviewView cpvColorPreview; private View vLocation; private View vBgColor; private final RelativeLayout.LayoutParams colorBarLayoutParams; private int transValue = 255; //透明度 private final ImageView vTransPreview; private OnColorChangeListener onColorChangeListener; private RelativeLayout.LayoutParams vLocationLayoutParams; public ColorPickerView(Context context, AttributeSet attrs) { super(context, attrs); View view = LayoutInflater.from(context).inflate(R.layout.view_color_picker, this); vBgColor = view.findViewById(R.id.fl_color); vLocation = view.findViewById(R.id.view_location); vLocationLayoutParams = (RelativeLayout.LayoutParams) vLocation.getLayoutParams(); llColorProgress = findViewById(R.id.ll_color_progress); cpvColorPreview = view.findViewById(R.id.cpv_color_preview); vColorBar = view.findViewById(R.id.view_color_bar); colorBarLayoutParams = (RelativeLayout.LayoutParams) vColorBar.getLayoutParams(); rlTransBar = view.findViewById(R.id.rl_trans_bar); vTransBar = view.findViewById(R.id.view_trans_bar); transBarLayoutParams = (RelativeLayout.LayoutParams) vTransBar.getLayoutParams(); vTransPreview = view.findViewById(R.id.view_trans_preview); /*調整顏色*/ llColorProgress.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); int width = llColorProgress.getWidth(); switch (action) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; } float leftMargin = event.getX(); float x = 0; if (leftMargin < vColorBar.getWidth() / 2) { colorBarLayoutParams.leftMargin = 0; } else if (leftMargin > width - vColorBar.getWidth() / 2) { x = 100; colorBarLayoutParams.leftMargin = width - vColorBar.getWidth(); } else { x = event.getX() / width * 100; colorBarLayoutParams.leftMargin = (int) (leftMargin - vColorBar.getWidth() / 2); } vColorBar.setLayoutParams(colorBarLayoutParams); onProgressChanged((int) x); return true; } }); /*調整透明度*/ rlTransBar.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); int width = rlTransBar.getWidth(); switch (action) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; } float leftMargin = event.getX(); float x = 0; if (leftMargin < vTransBar.getWidth() / 2) { transBarLayoutParams.leftMargin = 0; } else if (leftMargin > width - vTransBar.getWidth() / 2) { x = 100; transBarLayoutParams.leftMargin = width - vTransBar.getWidth(); } else { x = event.getX() / width * 100; transBarLayoutParams.leftMargin = (int) (leftMargin - vTransBar.getWidth() / 2); } vTransBar.setLayoutParams(transBarLayoutParams); changeTransparency((int) x); return true; } }); /*調整顏色明暗*/ vBgColor.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int width = vBgColor.getWidth(); int height = vBgColor.getHeight(); int action = event.getAction(); int leftMargin; int topMargin; switch (action) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: //防止越界處理 if (event.getX() > width - vLocation.getWidth() / 2F) { leftMargin = width - vLocation.getWidth(); } else if (event.getX() < vLocation.getWidth() / 2F) { leftMargin = 0; } else { leftMargin = (int) (event.getX() - vLocation.getWidth() / 2F); } if (event.getY() > height - vLocation.getHeight() / 2F) { topMargin = height - vLocation.getHeight(); } else if (event.getY() <= vLocation.getHeight() / 2F) { topMargin = 0; } else { topMargin = (int) (event.getY() - vLocation.getHeight() / 2F); } vLocationLayoutParams.leftMargin = leftMargin; vLocationLayoutParams.topMargin = topMargin; vLocation.setLayoutParams(vLocationLayoutParams); changeColor(); break; case MotionEvent.ACTION_UP: break; } return true; } }); } /** * 顏色值調整 * * @param progressColor */ private void onProgressChanged(int progressColor) { red = 0; green = 0; blue = 0; index = (int) (progressColor / (100 / 6F)); float v = progressColor % (100 / 6F) / (100 / 6F); switch (index) { case 0: //紅<-->中--綠 red = 255; green = (int) (255 * v); break; case 1://紅--中<-->綠 red = (int) (255 * (1 - v)); green = 255; break; case 2: //綠<-->中--藍 green = 255; blue = (int) (255 * v); break; case 3://綠--中<-->藍 green = (int) (255 * (1 - v)); blue = 255; break; case 4: //藍<-->中--紅 blue = 255; red = (int) (255 * v); break; case 5://藍--中<-->紅 blue = (int) (255 * (1 - v)); red = 255; break; default: red = 255; break; } vBgColor.setBackgroundColor(Color.rgb(red, green, blue)); changeColor(); } /** * 顏色明暗度調整 */ private void changeColor() { int tempRed = red; int tempGreen = green; int tempBlue = blue; float hPercent = 1 - (vLocation.getX() / (vBgColor.getWidth() - vLocation.getWidth())); float vPercent = vLocation.getY() / (vBgColor.getHeight() - vLocation.getHeight()); switch (index) { case 0: tempGreen = (int) (green + hPercent * (255 - green)); tempBlue = (int) (blue + hPercent * (255 - blue)); break; case 1: tempRed = (int) (red + hPercent * (255 - red)); tempBlue = (int) (blue + hPercent * (255 - blue)); break; case 2: tempRed = (int) (red + hPercent * (255 - red)); tempBlue = (int) (blue + hPercent * (255 - blue)); break; case 3: tempRed = (int) (red + hPercent * (255 - red)); tempGreen = (int) (green + hPercent * (255 - green)); break; case 4: tempRed = (int) (red + hPercent * (255 - red)); tempGreen = (int) (green + hPercent * (255 - green)); break; case 5: case 6: tempGreen = (int) (green + hPercent * (255 - green)); tempBlue = (int) (blue + hPercent * (255 - blue)); break; } tempRed = (int) (tempRed - tempRed * vPercent); tempGreen = (int) (tempGreen - tempGreen * vPercent); tempBlue = (int) (tempBlue - tempBlue * vPercent); int color = Color.argb(transValue, tempRed, tempGreen, tempBlue); cpvColorPreview.setColor(color); if (onColorChangeListener != null) { onColorChangeListener.colorChanged(color); } int[] gradientColor = {Color.argb(0, 0, 0, 0), Color.rgb(tempRed, tempGreen, tempBlue)}; GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, gradientColor); vTransPreview.setBackground(drawable); } /** * 改變透明度 * * @param progress */ private void changeTransparency(int progress) { transValue = (int) (progress / 100F * 255); int color = Color.argb(transValue, red, green, blue); cpvColorPreview.setColor(color); if (onColorChangeListener != null) { onColorChangeListener.colorChanged(color); } } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) vLocation.getLayoutParams(); layoutParams.leftMargin = vBgColor.getWidth() - vLocation.getWidth(); vLocation.setLayoutParams(layoutParams); colorBarLayoutParams.leftMargin = llColorProgress.getWidth() - vColorBar.getWidth(); vColorBar.setLayoutParams(colorBarLayoutParams); transBarLayoutParams.leftMargin = rlTransBar.getWidth() - vTransBar.getWidth(); vTransBar.setLayoutParams(transBarLayoutParams); int[] color = {Color.argb(0, 0, 0, 0), Color.rgb(255, 0, 0)}; GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, color); vTransPreview.setBackground(drawable); } /** * 設置該方法,顏色改變的時候會回調顏色值 * * @param onColorChangeListener */ public void setOnColorChangeListener(OnColorChangeListener onColorChangeListener) { this.onColorChangeListener = onColorChangeListener; }}

以上這篇Android Studio設置顏色拾色器工具Color Picker教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
老色鬼精品视频在线观看播放| 蜜桃视频一区二区| 亚洲另类黄色| 亚洲精品伊人| 亚洲91网站| 日韩高清不卡在线| 日本久久二区| 日本va欧美va欧美va精品| 日韩综合一区二区| 日本强好片久久久久久aaa| 啪啪亚洲精品| 精品一区二区三区的国产在线观看| 国产精品综合色区在线观看| 久久免费精品| 精品亚洲自拍| 日韩欧美精品| 欧美aa国产视频| 亚洲精品美女| 精品国产aⅴ| 在线国产一区| 91亚洲无吗| 五月激情久久| 亚洲精品高潮| 日本精品不卡| 日韩av字幕| 蜜桃精品在线| 日韩欧美精品一区二区综合视频| 麻豆一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 一区二区亚洲视频| 国产精品久久久久9999高清| 国产精品88久久久久久| 欧美日韩亚洲一区二区三区在线 | 国产一二在线播放| 亚洲三级毛片| 伊人精品一区| 久久久91麻豆精品国产一区| 在线视频免费在线观看一区二区| 狂野欧美性猛交xxxx| 免费在线观看成人| 久久国产影院| 首页国产精品| 国产精品久久久久久久久免费高清| 日本免费一区二区三区四区| 欧美日韩调教| 日韩精品久久久久久| 中国女人久久久| 99久久精品费精品国产| 久久精品国产福利| 国产日韩在线观看视频| 天堂成人免费av电影一区| 99免费精品| 私拍精品福利视频在线一区| 丁香婷婷久久| 黄色欧美在线| 欧美激情另类| 香蕉视频亚洲一级| 亚洲小说欧美另类婷婷| 久久久久久一区二区| 国产精品99久久免费| 日本欧美一区| 97se亚洲| 精品网站aaa| 久久精品三级| 国产一区福利| 超碰在线99| 欧美日韩在线播放视频| 欧美特黄一级大片| 欧美精品一卡| 亚洲1区在线观看| 国产精品一线| 精品国产免费人成网站| 日韩在线精品| 亚洲天堂一区二区| 欧美特黄a级高清免费大片a级| 99国产精品视频免费观看一公开 | 日韩一级网站| 亚洲色图综合| 美女久久99| 中文字幕在线视频网站| 午夜精品亚洲| 亚洲三级国产| 国产精品成人国产| 欧美二区视频| 青草国产精品| 国产精品99免费看| 久久精品999| 日韩网站中文字幕| 69堂精品视频在线播放| 91一区二区三区四区| 一区二区三区视频免费观看| 香蕉久久一区| 久久久久.com| 久久国产免费看| 成人av二区| 精品国产欧美日韩| 久久国产精品久久久久久电车 | 日韩三级精品| 红杏一区二区三区| 91精品国产自产观看在线| 亚洲成人精品| 精品一区电影| 亚洲天堂免费| 啪啪国产精品| 国产精品色婷婷在线观看| 婷婷色综合网| 在线亚洲人成| 久久精品亚洲| 69精品国产久热在线观看| 91看片一区| 国产成人在线中文字幕| 国产日韩一区二区三区在线播放| 妖精视频成人观看www| 香蕉视频亚洲一级| 国产一区二区精品福利地址| 日本v片在线高清不卡在线观看| 91精品国产乱码久久久久久久| 久久精品国产999大香线蕉| 日韩精品亚洲专区在线观看| 午夜在线视频观看日韩17c| 日韩欧美一区二区三区在线观看| 精品久久精品| 红杏一区二区三区| 久久不卡日韩美女| 日韩精品久久久久久久软件91| 免费不卡在线观看| 蜜臀91精品一区二区三区| 久久国产精品毛片| 最新国产拍偷乱拍精品| 99国产精品自拍| 国产亚洲永久域名| 免费欧美日韩| 亚洲精品免费观看| 日韩福利在线观看| 国产精品亚洲综合色区韩国| 国产欧美69| 久久精品国产久精国产| 成人精品动漫一区二区三区| 国语精品一区| 日韩精品电影| 夜夜嗨网站十八久久| 亚洲资源网站| 国产精品一区高清| 国产福利电影在线播放| 99久久婷婷| 蜜臀av性久久久久蜜臀aⅴ流畅| 日本一区二区三区中文字幕| 国产毛片精品久久| 9999国产精品| 日韩视频不卡| 国产精品夜夜夜| 久久影视一区| 日本欧美在线| 久久高清免费| 蜜桃视频免费观看一区| 91精品啪在线观看国产爱臀| 韩国女主播一区二区三区| 好看的亚洲午夜视频在线| 91精品国产自产观看在线| 国产综合亚洲精品一区二| 亚洲精品小说| 日本久久二区| 国产videos久久| 久久久精品区| 鲁鲁在线中文| 日韩免费精品| 视频一区视频二区在线观看| 欧美.日韩.国产.一区.二区 | 国产精品.xx视频.xxtv| 在线精品亚洲| 中文字幕一区二区三区日韩精品 | 日韩精品视频在线看| 秋霞国产精品| 国产成人精品一区二区免费看京| 日韩二区在线观看| 午夜国产精品视频| 红桃视频国产一区| 亚洲午夜在线| 国产精品av一区二区| 亚洲先锋成人| 午夜日韩av| 久久福利影视| 日韩三级精品| 国产日韩一区二区三区在线| 欧美天堂一区| 久久99高清| 日本免费一区二区三区四区| av资源中文在线天堂| 波多视频一区| 亚洲精品99| 亚洲韩日在线| 中文字幕av一区二区三区人| 欧美中文高清| 欧洲一区二区三区精品| 久久国产精品亚洲77777| 91在线成人| 欧美不卡高清一区二区三区| 香蕉视频成人在线观看| 久久国产人妖系列| 亚洲一级少妇|