欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

AndroidStudio怎么設(shè)置顏色拾色器工具ColorPicker

這篇文章主要介紹Android Studio怎么設(shè)置顏色拾色器工具Color Picker,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

藍(lán)田網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,藍(lán)田網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為藍(lán)田上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的藍(lán)田做網(wǎng)站的公司定做!

Android是什么

Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。

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

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

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

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

Android Studio怎么設(shè)置顏色拾色器工具Color Picker

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

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

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

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

Android Studio怎么設(shè)置顏色拾色器工具Color Picker

Android Studio怎么設(shè)置顏色拾色器工具Color Picker

設(shè)置好之后Apply應(yīng)用 + OK確認(rèn)下就好了

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

Android Studio怎么設(shè)置顏色拾色器工具Color Picker

補(bǔ)充知識(shí):Android 自定義一個(gè)簡(jiǎn)版的取色器ColorPicker

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

既然這么喜歡AS的調(diào)色板,何不自己擼一個(gè)?心動(dòng)不如行動(dòng),馬上動(dòng)手!

常規(guī)操作,先上效果圖,簡(jiǎn)版取色器效果如下:

Android Studio怎么設(shè)置顏色拾色器工具Color Picker

項(xiàng)目地址:

https://github.com/shixiuwen/colorpicker

布局單位使用的是dp,沒有做其他過多適配操作,程序的源碼很簡(jiǎn)單,可以直接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是版本號(hào),博客不會(huì)經(jīng)常更新,最新版本見github
   implementation 'com.github.shixiuwen:colorpicker:v1.0.3'
 }

調(diào)用示例:

// .xml文件中
<com.shixia.colorpickerview.ColorPickerView
  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);
//對(duì)控件進(jìn)行回調(diào)監(jiān)聽,獲取顏色值color
colorPicker.setOnColorChangeListener(new OnColorChangeListener() {
 @Override
 public void colorChanged(int color) {
 tvTest.setBackgroundColor(color);
 }
});

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

以下是關(guān)鍵類代碼:

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

  /*調(diào)整顏色*/
  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;
   }
  });

  /*調(diào)整透明度*/
  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;
   }
  });

  /*調(diào)整顏色明暗*/
  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;
   }
  });
 }


 /**
  * 顏色值調(diào)整
  *
  * @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: //綠<-->中--藍(lán)
    green = 255;
    blue = (int) (255 * v);
    break;
   case 3://綠--中<-->藍(lán)
    green = (int) (255 * (1 - v));
    blue = 255;
    break;
   case 4: //藍(lán)<-->中--紅
    blue = 255;
    red = (int) (255 * v);
    break;
   case 5://藍(lán)--中<-->紅
    blue = (int) (255 * (1 - v));
    red = 255;
    break;
   default:
    red = 255;
    break;
  }
  vBgColor.setBackgroundColor(Color.rgb(red, green, blue));
  changeColor();
 }

 /**
  * 顏色明暗度調(diào)整
  */
 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);
 }

 /**
  * 設(shè)置該方法,顏色改變的時(shí)候會(huì)回調(diào)顏色值
  *
  * @param onColorChangeListener
  */
 public void setOnColorChangeListener(OnColorChangeListener onColorChangeListener) {
  this.onColorChangeListener = onColorChangeListener;
 }
}

以上是“Android Studio怎么設(shè)置顏色拾色器工具Color Picker”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標(biāo)題:AndroidStudio怎么設(shè)置顏色拾色器工具ColorPicker
文章起源:http://aaarwkj.com/article32/igcopc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、搜索引擎優(yōu)化、做網(wǎng)站、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
午夜激情视频免费国产| 日本亚洲中文字幕无吗| 男女午夜激情四射视频| 日韩一区二区三级在线| 国产精品久久久久精品综合| 伊人久久九九精品综合| 欧美黄片完整版在线观看| 91麻豆精品国产久久久| 日韩欧美在线观看一区二区| 精品人妻一区三区蜜桃| 久久精品女人天堂av免费观看 | 永久黄区观看在线网址| 少妇太爽高潮在线播放| 中文字幕有码精品在线| 久久精品国产亚洲av麻豆花絮| 欧美国产日韩亚洲综合| 国产亚洲精品视频免费| 中文字幕精品一区二区介绍| 亚州欧美制服另类国产| 国产白丝扒开做爽爽爽网站| 日本h电影一区二区三区| 欧美日韩免费高清视视频| 丰满的少妇一区二区三区免费观看 | 三级视频一区二区三区| 国产一区二区成人精品| 国产精品亚洲av在线| 亚洲午夜av久久乱码| 91久久高清国语自产拍| 日韩高清精品视频在线| 欧美一区二区三区有限公司| 精品黄色大片不卡国产| 欧美日韩国产成人一区| 亚洲男人天堂在线观看| 国语对白自拍视频在线播放| 蜜桃视频在线中文字幕| 黑人一区二区三区在线| 国产精品大屁股白浆一区二区| 亚洲精品国产熟女高潮| 美女被强到爽高潮不断在线| 欧美黄色影院在线观看| 国产精品久久99精品|