天道酬勤,学无止境

如何在 SharedMemory 中存储颜色值?(How to store color value in SharedMemory?)

问题

我正在编写一个简单的程序,其中涉及某些元素的颜色变化。 对于颜色更改,我必须在 SharedMemory 中存储颜色值(我从颜色选择器中获得)。 我有以下颜色选择器代码:

public class MainActivity extends Activity implements OnColorChangedListener {

    private ColorPicker picker;
    private SVBar svBar;
    private OpacityBar opacityBar;
    private Button button;
    private TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        picker = (ColorPicker) findViewById(R.id.picker);
        svBar = (SVBar) findViewById(R.id.svbar);
        opacityBar = (OpacityBar) findViewById(R.id.opacitybar);
        button = (Button) findViewById(R.id.button1);
        text = (TextView) findViewById(R.id.textView1);

        picker.addSVBar(svBar);
        picker.addOpacityBar(opacityBar);
        picker.setOnColorChangedListener(this);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Log.v("Color",""+ picker.getColor());
                text.setTextColor(picker.getColor());
                picker.setOldCenterColor(picker.getColor());
            }
        });
    }

    @Override
    public void onColorChanged(int color) {
        //gives the color when it's changed.
    }
}

如何在 SharedMemory 中存储picker.getColor()的值?

回答1
@Override 
public void onColorChanged(int color) {
    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putInt(getString(R.string.mycolor), color);
    editor.commit();
}

要从共享首选项中获取存储的颜色,请使用此

  SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
  int storedColor = sharedPref.getInt(getString(R.string.mycolor), 0);
回答2

用户 SharedPreference 来存储您的颜色值。

共享首选项是您可以存储数据的地方,这些数据会一直持续到应用程序存在于设备上,并且如果用户未通过设置清除应用程序内存。

如果要存储颜色数组,请参阅此帖子:https://stackoverflow.com/a/12350878/2035885

如果只需要存储单个值,请参考以下内容:

public static int getColor(Context context)
{
SharedPreferences sharedPreference = context.getSharedPreferences("your_shared_preference_name",Context.MODE_PRIVATE);
return sharedPreference.getInt("key_to_use_to_set_and_retrieve_value", 0);
}


public static void setColor(Context context,int color)
{
SharedPreferences store = context.getSharedPreferences(MenuActivity.class.getSimpleName(),Context.MODE_PRIVATE);
SharedPreferences.Editor edit = store.edit();
edit.putInt("key_to_use_to_set_and_retrieve_value", color);
edit.commit();
}
回答3

将其存储为int 。 已经是这样了。

@Override 
public void onColorChanged(int color) {
    // omitted: get a SharedPreferences object first
    sharedPreferences.edit().putInt("color", color).apply();
}
回答4
// try this way,hope this will help you...

//Set To SharedPreferences
  SharedPreferences sharedPreferences = getSharedPreferences("yourSharePreferenceName", MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putInt("pickerColor",picker.getColor() );
  editor.commit();

//Get From SharedPreferences
  SharedPreferences sharedPreferences = getSharedPreferences("yourSharePreferenceName", MODE_PRIVATE);
  picker.setOldCenterColor(sharedPreferences.getInt("pickerColor",0));
回答5

java如下

package com.example.sharedpreferenceexample;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;

public class Utils {

    public static void savePreferences(Activity activity, String key1,
            int value1) {
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(activity.getApplicationContext());
        Editor editor = sp.edit();

        editor.putInt(key1, value1);

        editor.commit();
    }

    public static int readPreferences(Activity activity, String key,
            int defaultValue) {
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(activity.getApplicationContext());
        return sp.getInt(key, defaultValue);
    }
}

并按如下方式使用它

保存

Utils.savePreferences(MainActivity.this, "colorKey", colorValue);

阅读

 Utils.readPreferences(MainActivity.this, "colorKey", 0)
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 数据库设计,将图像颜色模式存储在MySQL中以按颜色搜索图像(Database design to store image color pattern in MySQL for searching Image by color)
    问题 我正在使用PHP和MySQL构建图像厨房,我想通过它的color实现图像搜索。 通过遵循Imagick :: getImageHistogram,我从图像中获得了最多呈现的颜色。 <?php $image = new Imagick("thing.png"); $pixels=$image->getImageHistogram(); foreach($pixels as $p){ $colors = $p->getColor(); foreach($colors as $c){ print( "$c\t" ); } print( "\t:\t" . $p->getColorCount() . "\n" ); } ?> This will print out something like: Red Green Blue Alpha : No of times appeared 252 250 252 1 : 125 194 156 182 1 : 126 109 18 79 1 : 11440 2 117 162 1 : 12761 255 255 255 1 : 40769 尽管我已经完成了获取颜色的工作,但是我仍然坚持设计数据库以将颜色信息以及图像路径存储在数据库中。 我的问题是如何设计一个数据库(表结构)来存储此类数据,以便可以有效地进行搜索查询。 更新: 其次
  • How to store color value in SharedMemory?
    I am writing a simple program which involves color changing of certain elements. For color changing, I have to store the color value (which I get from the color picker) in the SharedMemory. I have the following color picker code: public class MainActivity extends Activity implements OnColorChangedListener { private ColorPicker picker; private SVBar svBar; private OpacityBar opacityBar; private Button button; private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); picker = (ColorPicker)
  • 如何将彩色图图像反转为标量值?(How to reverse a color map image to scalar values?)
    问题 如何反转彩色映射的图像? 我有一个2D图像,可在色图上绘制数据。 我想读取图像并“反转”颜色图,即查找特定的RGB值,然后将其转换为浮点型。 例如:使用此图像:http://matplotlib.sourceforge.net/_images/mri_demo.png 知道颜色图是cm.jet,我应该能够得到440x360的浮点矩阵 from pylab import imread import matplotlib.cm as cm a=imread('mri_demo.png') b=colormap2float(a,cm.jet) #<-tricky part 回答1 可能有更好的方法可以做到这一点; 我不确定。 如果您阅读help(cm.jet) ,将看到用于将间隔[0,1]中的值映射到RGB三元组的算法。 您可以用少许纸和铅笔算出公式,以反转定义映射的分段线性函数。 但是,有许多问题使纸张和铅笔解决方案不那么吸引人: 这是很多费力的代数,并且该解决方案特定于cm.jet。 如果更改颜色图,则必须再次执行所有这些工作。 如何自动化这些代数方程的求解很有趣,但不是我知道如何求解的问题。 通常,颜色图可能是不可逆的(一个以上的值可能会映射到相同的颜色)。 例如,在cm.jet的情况下,所有介于0.11和0.125之间的值都映射到RGB三元组(0,0,1)。 因此
  • 从存储在NumPy ndarrays中的图像中查找特定(R,G,B)颜色值的(x,y)索引(Finding the (x,y) indexes of specific (R,G,B) color values from images stored in NumPy ndarrays)
    问题 我有一个图像存储在numpy数组中,由imread()产生: >>> ndim array([[[ 0, 0, 0], [ 4, 0, 0], [ 8, 0, 0], ..., [247, 0, 28], [251, 0, 28], [255, 0, 28]], [[ 0, 255, 227], [ 4, 255, 227], [ 8, 255, 227], ..., [247, 255, 255], [251, 255, 255], [255, 255, 255]]], dtype=uint8) >>> ndim.shape (512, 512, 3) 我想有效地找到具有特定颜色值的像素的(x,y)坐标,例如 >>> c array([ 32, 32, 109], dtype=uint8) >>> ndim[200,200] array([ 32, 32, 109], dtype=uint8) >>> ndim.T[0, 200, 200] 32 >>> ndim.T[1, 200, 200] 32 >>> ndim.T[2, 200, 200] 109 ...在这种情况下,我知道(200,200)处的像素具有RGB值(32,32,109)-我可以对此进行测试。 我想做的是查询ndarray的像素值并获取坐标。 在上述情况下,假定函数find_pixel(c)将返回(200
  • 存储查找表ID或纯数据之间的决定(Decision between storing lookup table id's or pure data)
    问题 我发现这很常见,而且我不确定解决此问题的最佳方法。 我的问题是如何在使用外键查找表还是直接在请求表中使用查找表值之间做出决定,从而完全避免查找表之间的关系。 要记住的要点: 使用第二种方法,如果在查找表中更改了数据,则需要对所有引用该数据的记录进行批量更新。 这更侧重于表中有很多列引用许多查找表的表。因此,每当您查询表时,大量的外键意味着大量的联接。 该数据将来自下拉列表,该下拉列表将从查找表中提取。 为了在重新加载时匹配数据,这些值需要在现有列表中(与第一点有关)。 这里是否有最佳实践,或要考虑的任何关键点? 回答1 您可以将查找表与VARCHAR主键一起使用,而主数据表在其列上使用FOREIGN KEY,并进行级联更新。 CREATE TABLE ColorLookup ( color VARCHAR(20) PRIMARY KEY ); CREATE TABLE ItemsWithColors ( ...other columns..., color VARCHAR(20), FOREIGN KEY (color) REFERENCES ColorLookup(color) ON UPDATE CASCADE ON DELETE SET NULL ); 该解决方案具有以下优点: 您可以查询主数据表中的颜色名称,而无需连接到查找表。 但是,颜色名称被限制为查找表中的颜色集
  • 如何在JSON中存储JavaScript函数(How to store a javascript function in JSON)
    问题 我有一个JS对象,我想保存在本地存储中以备将来使用,但无法将其解析为字符串。 代码: JSON.stringify({ a: 5, b: function (param) { return param; } }) 结果: "{"a":5}" 如果不使用JSON,如何保存它以备将来使用? (并且创建我自己的Lexer-Parser来中断我不认为是可选的字符串函数) 回答1 通常,这样的问题表示X / Y问题:您需要执行X,您认为Y会帮助您完成此操作,因此您尝试执行Y,不能执行,并询问如何执行Y。这通常会更多询问如何做X很有用。 但是回答以下问题:您可以使用replacer和reviver函数将函数转换为字符串(在stringify期间),然后再转换为函数(在parse期间),以存储函数的字符串版本,但是存在各种问题这样做,尤其是定义功能的范围可能对功能很重要。 (与您在问题中显示的功能无关紧要,但是我认为这并没有真正的代表性。)并将字符串从本地存储转换为您可以运行的代码意味着您相信本地存储内容没有被恶意破坏。 除非页面已经容易受到XSS攻击,否则这不可能,但这是一个需要牢记的问题。 这是一个示例,但是除非用尽其他选项,否则我不建议您这样做,不仅是因为它使用eval ,它(例如它的近亲new Function )可能是恶意代码的载体: // The object var obj
  • Metro应用程序-ListView-如何替换ListViewItems的背景颜色(Metro app - ListView - how to alternate background colour of ListViewItems)
    问题 在Windows 8的Metro风格应用中,我将一个Listview绑定到一个ObservableCollection,我希望每个ListViewItem的背景色都可以交替显示(白色,灰色,白色等)。 <ListView x:Name="stopsListView" ItemsSource="{Binding}" > <ListView.ItemTemplate> <DataTemplate> <Grid Height="66" > <TextBlock Text="{Binding Title}" /> </Grid> </DataTemplate> </ListView.ItemTemplate> 在WPF中,这可以通过使用带有触发器的样式来完成-参见此页面。 您如何在Metro应用中完成此任务? 更新: 在给出正确的答案后,我离开了,并对其进行了编码。 这是一些需要它的人的代码: 值转换器类的代码: public class AltBackgroundConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { if (!(value is int)) return null; int
  • 如何索引字典?(How to index into a dictionary?)
    问题 我在下面有一个字典: colors = { "blue" : "5", "red" : "6", "yellow" : "8", } 如何索引字典中的第一个条目? colors[0]出于明显的原因将返回KeyError 。 回答1 在Python版本(包括Python 3.6)及更高版本中,字典是无序的。 如果您不关心条目的顺序,并且仍然希望通过索引访问键或值,则可以使用d.keys()[i]和d.values()[i]或d.items()[i] 。 (请注意,这些方法会创建Python 2.x中所有键,值或项的列表。因此,如果一次又一次需要它们,请将列表存储在变量中以提高性能。) 如果您确实关心条目的顺序,那么从Python 2.7开始,您可以使用collections.OrderedDict。 或使用成对清单 l = [("blue", "5"), ("red", "6"), ("yellow", "8")] 如果您不需要通过密钥访问。 (为什么您的数字是字符串?) 在Python 3.7中,常规字典是有序的,因此您不再需要使用OrderedDict (但是您仍然可以–它基本上是相同的类型)。 Python 3.6的CPython实现已经包含了这一更改,但是由于它不是语言规范的一部分,因此您不能在Python 3.6中依赖它。 回答2 如果仍然有人在看这个问题
  • 如何将枚举设置为null(How to set enum to null)
    问题 我有一个枚举 string name; public enum Color { Red, Green, Yellow } 如何在加载时将其设置为NULL。 name = ""; Color color = null; //error 编辑:我不好,我没有正确解释。 但是所有与nullable有关的答案都是完美的。 我的情况是,如果我在类中具有其他元素(如名称等)的枚举值,那么该怎么办?在页面加载时,我初始化该类并尝试将值默认为null。 这是场景(代码在C#中): namespace Testing { public enum ValidColors { Red, Green, Yellow } public class EnumTest { private string name; private ValidColors myColor; public string Name { get { return name; } set { name = value; } } public ValidColors MyColor { get { return myColor; } set { myColor = value; } } } public partial class _Default : System.Web.UI.Page { protected void Page
  • 如何在Flutter中使用十六进制颜色字符串?(How do I use hexadecimal color strings in Flutter?)
    问题 如何将#b74093类的十六进制颜色字符串转换为Flutter中的Color ? 我想在Dart中使用十六进制颜色代码。 回答1 在Flutter中, Color类仅接受整数作为参数,或者可以使用命名构造函数fromARGB和fromRGBO。 因此,我们只需要将字符串#b74093转换为整数值。 此外,我们需要尊重始终需要指定不透明度。 255 (完全)不透明度由十六进制值FF 。 这已经给我们留下了0xFF 。 现在,我们只需要像这样添加颜色字符串即可: const color = const Color(0xffb74093); // Second `const` is optional in assignments. 可以选择是否将字母大写: const color = const Color(0xFFB74093); 从Dart 2.6.0开始,您可以为Color类创建扩展,该扩展允许您使用十六进制颜色字符串创建Color对象: extension HexColor on Color { /// String is in the format "aabbcc" or "ffaabbcc" with an optional leading "#". static Color fromHex(String hexString) { final buffer =
  • 如何将 18 位色深表示为 16 位色深?(How to represent 18bit color depth to 16bit color depth?)
    问题 我正在移植一个从 16 位色深构建到 18 位色深的软件。 如何将 16 位颜色转换为 18 位颜色? 谢谢。 回答1 在不了解设备的情况下,我只能推测。 设备通常是红色、绿色、蓝色,因此每种颜色都会有 6 位的变化。 这意味着每种颜色有 64 种变化,总共 262,144 种颜色。 任何位图都可以缩放到此显示。 如果您采用每个组件(例如红色),将其标准化,然后乘以 64,您将获得缩放版本。 如果您要问其他问题或想了解更多详细信息,请询问。 更新: 有两种 16 位位图格式。 一个是 5-5-5(每像素 5 位),另一个是 5-6-5(绿色多一点)。 为了这个转换,我将假设 5-5-5。 对于每个像素中的每种颜色,您需要这样的东西: NewColor = (oldColor/32.0)*64 这会将旧颜色转换为 0.0 和 1.0 之间的数字,然后将其缩放到新值范围。 回答2 假设 16 位颜色是 5-6-5 格式: // RRRRR-GGGGGG-BBBBB, 16bit --> //RRRRR0-GGGGGG-BBBBB0, 18bit with the formula below: Color18 = ((Color16 & 0xF800) << 2) | ((Color16 & 0x07E0) << 1) | ((Color16 & 0x1F) << 1); 回答3
  • 在Python中生成随机的十六进制颜色(Generating a Random Hex Color in Python)
    问题 对于Django应用,每个“成员”都分配有一种颜色以帮助识别它们。 它们的颜色存储在数据库中,然后在需要时将其打印/复制到HTML中。 唯一的问题是我不确定如何在python / django中生成随机的Hex颜色。 生成RGB颜色很容易,但是要存储它们,我要么需要a)在我的“成员”模型中增加三列,要么b)将它们全部存储在同一列中并使用逗号分隔它们,然后,解析HTML的颜色。 这些都不是很吸引人,因此,我再次想知道如何在python / django中生成随机的Hex颜色。 回答1 import random r = lambda: random.randint(0,255) print('#%02X%02X%02X' % (r(),r(),r())) 回答2 这是一个简单的方法: import random color = "%06x" % random.randint(0, 0xFFFFFF) 生成随机的3个字符的颜色: import random color = "%03x" % random.randint(0, 0xFFF) 基于C的语言中的%x是一个字符串格式化程序,用于将整数格式化为十六进制字符串,而0x是在base-16中写入数字的前缀。 如果需要,可以在颜色前面加上“#”(CSS样式) 回答3 将其存储为HTML颜色值: 更新:现在接受整数(0-255
  • 保存对此范围的访问权限(Save access to this scope)
    问题 我将颜色存储在按钮上的data属性中,该颜色要在切换中使用。 但是,当我尝试使用this访问数据信息时,没有可用的数据。 我如何才能保持对this范围的正确访问? 我试图只为不包含“跳过”的元素切换给定的颜色。 html <div> <input id="toggleButton" type="button" value="Toggle" data-color="Red" /> </div> <div id="toggleSet"> <div>Element</div> <div>Skip</div> <div>Element</div> </div> 的CSS .ActivateRed{ color: red; } js $('#toggleButton').click(function(){ $("#toggleSet div").each(function(index,element){ if( element.innerHTML != "Skip" ){ $(element).toggleClass("Activate"+$(this).data("color")); //^this has no data to access? //Why am I getting undefined? } }); }); 这是我尝试的的jsfiddle。
  • 如何将不透明度应用于CSS颜色变量?(How do I apply opacity to a CSS color variable?)
    问题 我正在设计电子应用程序,因此可以访问CSS变量。 我在vars.css定义了一个颜色变量: :root { --color: #f0f0f0; } 我想在main.css使用这种颜色,但是应用了一些不透明性: #element { background: (somehow use var(--color) at some opacity); } 我将如何去做呢? 我没有使用任何预处理器,只有CSS。 我希望使用全CSS的答案,但是我会接受JavaScript / jQuery。 我不能使用opacity因为我正在使用opacity的背景图像。 回答1 您不能采用现有的颜色值并对其应用Alpha通道。 即,您不能采用现有的十六进制值(例如#f0f0f0 ,不能给它一个alpha分量,并将结果值与另一个属性一起使用。 但是,自定义属性允许您将十六进制值转换为RGB三元组以与rgba() ,将该值存储在自定义属性中(包括逗号!),使用var()将该值替换为rgba()函数,您所需的alpha值,它将可以正常工作: :root { /* #f0f0f0 in decimal RGB */ --color: 240, 240, 240; } body { color: #000; background-color: #000; } #element { background-color
  • 【Vue,Vuex】为你的vue项目添加vuex支持,并实现全局动态主题颜色修改
    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述。读者请查阅时持自己的意见进行讨论。 本文原文:【Vue,Vuex】为你的vue项目添加vuex支持,并实现全局动态主题颜色修改。本文更新不及时建议到原文地址浏览。 为了让读者更加容易理解并快速掌握相关知识点,本文将从项目的创建开始进行内容的介绍。本文使用@vue/cli 3.x工具来创建vue项目,这是笔者在撰写本文时的版本。对于此工具的安装,点击这里 查看详细信息。 本文通过改变主题色来讲解vuex的使用,篇幅上可能vuex不是很多,你可以使用目录直接查看vuex部分,也可以根着内容实现效果。本文的主题效果不是最佳解决方案,只为效果演示,读者了解原理后需自己考究实用性,并加以自身优化。 一、创建项目 通过 cli 工具,可直接使用命令创建项目,本项目名为 vuex-theme , 那么使用命令: vue create vuex-theme 就可以很方便的创建好项目了。项目创建好之后,就可以先来一波测试运行,进入创建好的项目目录 vuex-theme, 打开命令窗口,运行命令 npm run serve 即可开启测试服务,在浏览器输入提示的地址即可看到初始项目的运行结果,如下所示: 看到了效果还不够,接下来再看看项目的目录结构: 为了不让初始项目内容对本文介绍的内容产生影响,先将自动生成的文件内容进行清理。 首先清理App
  • 如何防止浏览器存储密码(How to prevent a browser from storing passwords)
    问题 我需要停止浏览器存储用户名和密码值,因为我正在处理包含更多安全数据的Web应用程序。 我的客户要求我这样做。 我在HTML表单和密码字段中尝试使用autocomplete="off"属性。 但它无法在最新的浏览器(例如Chrome 55,Firefox 38 +,Internet Explorer 11等)中运行。 最好的解决方案是什么? 回答1 谢谢您给我回复。 我点击了以下链接 禁用浏览器的“保存密码”功能 我通过添加readonly & onfocus="this.removeAttribute('readonly');"解决了该问题onfocus="this.removeAttribute('readonly');" 除autocomplete="off"之外的其他属性,如下所示。 <input type="text" name="UserName" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" > <input type="password" name="Password" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" > 这对我来说很好。 回答2
  • 缩小图像调色板(Image palette reduction)
    问题 我是第一次玩计算机图形程序。 我想将RGB(24位)图像转换为索引调色板(8位)图像(如GIF)。 我最初的想法是使用k-均值(k = 256)。 如何为给定图像选择最佳调色板? 对我来说,这是一次学习的经历,因此我希望对源代码使用概述式的答案。 编辑:抖动当前是题外话。 我仅指的是“简单”的颜色转换,除了心理视觉/感知模型之外; 颜色空间目前也离题,尽管我首先想到的是在颜色空间之间移动:) 回答1 编辑:更新以支持256色的调色板 如果您需要最简单的方法,那么我建议基于直方图的方法: Calculate histograms of R/G/B channels Define 4 intensity ranges For each channel in intensity range Split histogram into 4 equal parts For each histogram part Extract most frequent value of that part 现在您将拥有4 * 4 ^ 3 = 256个调色板。 将像素分配给调色板颜色时,只需计算像素的平均强度即可查看必须使用的强度区域。 之后,只需将强度区域的这64种颜色之一映射到像素值即可。 祝你好运。 回答2 http://en.wikipedia.org/wiki/Color
  • Go容器:映射(map)
    目录 1 散列表 2 map 2.1 map的声明和初始化 2.2 遍历 map 的键值对 2.3 从map中删除键值对 2.4 清空map中的所有元素 2.5 能够在并发环境中使用的map —— sync.Map 2.6 在函数间传递映射 参考 1 散列表 散列表,也称为哈希表,是设计精妙、用途广泛的数据结构之一。它是一个拥有键值对元素的无序集合。在这个集合中,键的值是唯一的,键对应的值可以通过键来获取、更新和删除。无论这个散列表有多大,这些操作基本上是通过常量时间的键比较就可以完成。 <提示> 大多数编程语言中映射关系容器使用两种算法:散列表和平衡树。 【散列表】 散列表可以简单描述为一个“数组”(俗称“桶”),数组的每个元素是一个列表。根据散列函数(也称为哈希函数)获得每个元素的特征值,将特征值作为映射的键。如果特征值重复,表示元素发生碰撞。碰撞的元素将放在同一个特征值的列表中进行保存。散列表查找时间复杂度为O(1),和数组一致。最坏的情况为O(n),n为元素总数。散列表需要尽量避免元素碰撞以提供查找效率,这样就需要对“通”进行扩容,每次扩容,元素需要重新放入“桶”中,较为耗时。 映射的散列表包含一组桶。在存储、删除或者查找键值对的时候,所有操作都要先选择一个桶。把操作映射时指定的键传给映射的散列函数,就能选中对应的桶。这个散列函数的目的是生成一个索引
  • 如何在Java中将RGB颜色转换为int(how to convert rgb color to int in java)
    问题 Paint.setColor需要一个整数。 但是我有一个Color对象。 我在Java color.getIntValue()不到color.getIntValue()吗? 那我该怎么做呢? 我想要的是类似的东西 public Something myMethod(Color rgb){ myPaint.setColor(rgb.getIntValue()); ... } 更正: android.graphics.Color; 我以为将android作为标签之一就足够了。 但显然不是。 回答1 首先,android.graphics.Color是仅由静态方法组成的类。 您如何以及为什么创建了新的android.graphics.Color对象? (这是完全无用的,对象本身不存储任何数据) 但是无论如何...我要假设您使用的是一些实际存储数据的对象... 整数由4个字节组成(在Java中)。 从标准java Color对象中查看函数getRGB(),我们可以看到java将每种颜色按照ARGB(Alpha-Red-Green-Blue)的顺序映射到整数的一个字节。 我们可以使用以下自定义方法来复制此行为: public int getIntFromColor(int Red, int Green, int Blue){ Red = (Red << 16) & 0x00FF0000
  • Vista / 7:如何获得玻璃颜色?(Vista/7: How to get glass color?)
    问题 您如何使用DwmGetColorizationColor? 文档说它返回两个值: 32位0xAARRGGBB其中包含用于玻璃合成的颜色一个布尔型参数,如果“颜色是不透明的混合色”,则为true(无论什么意思) 这是我喜欢的一种颜色,一种不错的呕吐绿色: 您会注意到颜色是绿色的,并且半透明的标题栏(针对白色背景)非常清楚地显示了鼻涕的颜色: 我尝试从Windows获取颜色: DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend); 我得到 dwColorization: 0x0D0A0F04 bIsOpaqueBlend: false 根据文档,此值的格式为AARRGGBB ,因此包含: AA: 0x0D (13) RR: 0x0A (10) GG: 0x0F (15) BB: 0x04 (4) 据推测这意味着颜色为(10、15、4),不透明度约为5.1%。 但是,如果您实际看一下该RGB值,它就远不是我想要的鼻涕绿色。 这是 (10、15、4)的不透明度为零(原始颜色),并且 (10,15,4),白色/棋盘背景的不透明度为5%: DwmGetColorizationColor而不是Lime绿色, DwmGetColorizationColor返回的是几乎完全透明的黑色。 所以问题是:如何在Windows Vista /