অ্যান্ড্রয়েড: ক্লিক এলোমেলো রঙ উত্পন্ন?


100

আমার একটি রয়েছে ImageView, যাতে আমি প্রোগ্রামিয়ালি ড্রয়াবল তৈরি করে ব্যবহারকারীর সামনে উপস্থাপন করছি। আমার লক্ষ্যটি হ'ল ক্লিক করুন ImageViewএবং আঁকারের রঙ পরিবর্তন করুন।

আমি এলোমেলো রঙ পরিবর্তন করার বিট সম্পর্কে কীভাবে যাব? আমি বর্তমানে সঙ্গে tinkering করছি Random(), Color.argb()কয়েক অন্যান্য জিনিস এবং, কিন্তু আমি কাজ এটি পেতে মনে করতে পারছি না!

উত্তর:


336
Random rnd = new Random();
paint.setARGB(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));

বা

Random rnd = new Random(); 
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));   
view.setBackgroundColor(color);

যদিও আপনার ক্ষেত্রে এটি মনে হয় আপনি একটি নতুন অঙ্কনযোগ্য তৈরি করতে এবং এটি আপনার দৃষ্টিতে নির্ধারণ করতে চান। আপনার ক্ষেত্রে আসলে অঙ্কনীয় কী? এটি কি কোনও চিত্র, আকার, পূর্ণতা ...


16
এটি সর্বত্র 255 এর পরিবর্তে 256 হওয়া উচিত নয়? নেক্সটইন্ট () এর এপিআই বলে যে "অর্ধ-খোলা পরিসীমা [0, n) এ ছদ্ম-এলোমেলোভাবে সমানভাবে বিতরণ করা
ইনটার্ন প্রদান করে

4
কসিউলা, আপনি ঠিক ঠিক এনটি
javase

int color = 0xFF000000 | rnd.nextInt (0xFFFFFF); "3 এর পরিবর্তে কেবল 1 টি এলোমেলো ব্যবহার করুন"
উমেশ ছাবরা

Color.argb ফাংশনটিতে কমপক্ষে 26 টি কাজ করার জন্য এপিআই দরকার।
এটি এনাম ২

@ এটিএনম নাহ, দুটি কালার.আরজিবি ফাংশন রয়েছে, একটি এন্টি আর্গুমেন্ট গ্রহণ করে এবং এপিআই স্তর 1 থেকে অস্তিত্ব নিয়েছে, আপনি যার কথা বলছেন তা ভাসা যুক্তি গ্রহণ করে এবং হ্যাঁ, কেবলমাত্র এপিআই 26
শেন মোনস ও'বায়ার্ন

16

সুতরাং আপনি যদি কোনও সুন্দর রঙের প্যালেট সন্ধান করছেন তবে সম্পূর্ণরূপে এলোমেলো মান ব্যবহার করার জন্য এটি এমন দুর্দান্ত ধারণা নয়। এই পদ্ধতির সেরা ফলাফল নাও পেতে পারে, এটি সর্বদা একই রকম রঙের নির্বাচনের সাথে শেষ হয় that পথে খুব অন্ধকার বা উপায় খুব উজ্জ্বল।

আধা-এলোমেলো পদ্ধতি:

আপনার যদি কিছু টাটকা এবং চকচকে রঙের প্রয়োজন হয় তবে নীচের সহজ ক্লাসটি ব্যবহার করুন, যা আমি আগে লিখেছিলাম যখন আমার একই সমস্যা ছিল। এটি semi-randomএবং একটি পূর্বনির্ধারিত রঙ প্যালেট ব্যবহার করে:

class RandomColors {
    private Stack<Integer> recycle, colors;

    public RandomColors() {
        colors = new Stack<>();
        recycle =new Stack<>();
        recycle.addAll(Arrays.asList(
                0xfff44336,0xffe91e63,0xff9c27b0,0xff673ab7,
                0xff3f51b5,0xff2196f3,0xff03a9f4,0xff00bcd4,
                0xff009688,0xff4caf50,0xff8bc34a,0xffcddc39,
                0xffffeb3b,0xffffc107,0xffff9800,0xffff5722,
                0xff795548,0xff9e9e9e,0xff607d8b,0xff333333
                )
        );
    }

    public int getColor() {
        if (colors.size()==0) {
            while(!recycle.isEmpty())
                colors.push(recycle.pop());
            Collections.shuffle(colors);
        }
        Integer c= colors.pop();
        recycle.push(c);
        return c;
    }
}

অ্যান্ড্রয়েডের জন্য এলোমেলো রঙের জেনারেটর শ্রেণি


এলোমেলো পদ্ধতি:

তবে আপনি যদি এখনও ব্যবহার বিবেচনা করছেন তবে আপনি random approachএকাধিক কোডের লাইনের পরিবর্তে এই একক লাইনটি ব্যবহার করতে চাইতে পারেন:

int color= ((int)(Math.random()*16777215)) | (0xFF << 24);

এলোমেলো রঙ জেনারেটর

এটি ব্যবহারের উদ্দেশ্য (0xFF << 24)হ'ল আলফা মানটি সর্বাধিক স্থির করা যার অর্থ শূন্যতার স্বচ্ছতা।


4
আপনার দ্বারা নিয়ন্ত্রিত ডিজাইনের ক্ষেত্রে সেরা ;-)
নেমেসিসফিক্সেক্স

15

এলোমেলো রঙের মান পেতে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন:

public int getRandomColor(){
   Random rnd = new Random();
   return Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
}

তারপরে আপনার দর্শনে প্রয়োগ করুন:

myView.setBackgroundColor(getRandomColor());

এখানে চিত্র বর্ণনা লিখুন


5

আমি এটি পূরণ করেছি এবং এটি আমার কোড, কিছুটা সাহায্য করতে পারে

 /**
 * view-source:http://www.kareno.org/js/colors/ 参考
 *Get Random background color and the text color for the background
 * @return 0--》background
 *          1--》text color
 */
public static  int[] getRandomColor() {
    Random random = new Random();
    int RGB = 0xff + 1;
    int[] colors = new int[2];
    int a = 256;
    int r1 = (int) Math.floor(Math.random() * RGB);
    int r2 = (int) Math.floor(Math.random() * RGB);
    int r3 = (int) Math.floor(Math.random() * RGB);
    colors[0] = Color.rgb(r1, r2, r3);
    if((r1 + r2 + r3) > 450) {
        colors[1] = Color.parseColor("#222222");
    }else{
        colors[1] = Color.parseColor("#ffffff");
    }
    return colors;
}

আরজিবি পদ্ধতিটি কোথায়?
রচিত মিশ্র

@twntee আরজিবি একটি স্থির পদ্ধতি দেখুন: [ বিকাশকারী.অ্যান্ড্রয়েড
রেফারেন্স

হ্যাঁ! নামের সাথে আমার ফাইলে একাধিক আমদানি হয়েছিল?
রচিত মিশ্র


1

এটি আমার কোড যা আমি একটি অ্যাপ্লিকেশনটিতে ব্যবহার করেছি এটি আপনাকে সহায়তা করতে পারে।

এটি স্পর্শে একটি এলোমেলো রঙ উত্পাদন করে

 public boolean onTouch(View v, MotionEvent event) {
            int x = (int)event.getX();
            int y = (int) event.getY();
            float w = v.getWidth();

            if(x < (w * (1.0/3) )){
                layout.setBackgroundColor(Color.rgb(255,x,y));
            }else if(x < (w * (2.0 / 3))){
                layout.setBackgroundColor(Color.rgb(x,255,y));
            }else{
                layout.setBackgroundColor(Color.rgb(x,y,255));
            }
            return true;
   }

এটি ঠিক কী করে? দেখে মনে হচ্ছে এটি স্পর্শের অবস্থানে ফ্যাক্টর বোঝাতে চেয়েছিল
কার্তিক চুগ

এটি স্পর্শে দৃশ্যের ব্যাকগ্রাউন্ড পরিবর্তন করবে, আপনি যখন স্পর্শ করবেন এবং সরে যাবেন, এটি জাই অবস্থান অনুসারে এলোমেলো রঙ তৈরি করবে এবং দেখার জন্য আবেদন করবে
সুমিত

1
 public static int randomColor(){
    float[] TEMP_HSL = new float[]{0, 0, 0};
    float[] hsl = TEMP_HSL;
    hsl[0] = (float) (Math.random() * 360);
    hsl[1] = (float) (40 + (Math.random() * 60));
    hsl[2] = (float) (40 + (Math.random() * 60));
    return ColorUtils.HSLToColor(hsl);
}

এই কোডটি নীল একাধিক সময় উত্পন্ন করে, এটি এলোমেলো নয়
हितেশ সাহু

1

আপনি এলোমেলো রঙ বাছাইয়ের জন্য কালারগেনেটর ব্যবহার করতে পারেন

ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT

int color1 = generator.getRandomColor();      // generate random color

আপনি যদি একই ব্যবহারকারীর পুনরাবৃত্তির জন্য একই নির্দিষ্ট রঙের কোডটি পেতে চান। আপনি নীচের মত ব্যবহার করতে পারেন

public int getColorCode(String userName)
    {
        ColorGenerator generator = ColorGenerator.MATERIAL; // or use DEFAULT
        // generate color based on a key (same key returns the same color), useful for list/grid views
        int colorCode = generator.getColor(userName);

        return colorCode;
    }


0

এই সমস্যার সর্বাধিক নির্ভুল সমাধান:

প্রথম, গ্রেড (অ্যাপ) এ এটি যুক্ত করুন,

compile 'com.github.lzyzsd.randomcolor:library:1.0.0'

তারপরে অ্যাপটি সংকলন এবং পুনর্নির্মাণ করুন।

-দ্বিতীয় পদক্ষেপটি কেবল এটি এভাবে ব্যবহার করুন,

RandomColor randomColor = new RandomColor();

Button l = findviewbyid(R.id.B1);
l.setBackgroundColor(randomColor.randomColor());

রেফারেন্স লিংক:

https://github.com/lzyzsd/AndroidRandomColor


0

আপনার ক্ষেত্রে আপনার এখানে কাজ করা উচিত, এটি আমার কাজ work

@Override
public void onBindViewHolder(@NonNull WeatherMainAdapter.ViewHolder holder, int position) {
    Random rnd = new Random();
    int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
    holder.date.setText(items.get(position).getDt_txt());
    holder.temp.setText(items.get(position).main.getTemp());
    holder.press.setText(items.get(position).main.getPressure());
    holder.cardView.setBackgroundColor(color);
}

0
public static String rndColor()
    {
        Random random = new Random();
        int num = random.nextInt(16777215);
        String hex = "";
        while (num != 0)
        {
            if (num % 16 < 10)
                hex = Integer.toString(num % 16) + hex;
            else
                hex = (char)((num % 16)+55) + hex;
            num = num / 16;
        }

        return "#"+((hex.length()<6)?String.format("%0"+(6-hex.length())+"d", 0):"") + hex;
    }

0

কোটলিনে:

val rnd = Random()
val color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256))
myView.setBackgroundColor(color)

0

আমি আশা করি নিম্নলিখিত দুটি সমাধান আপনাকে সহায়তা করতে পারে।

প্রোগ্রাম এমে র্যান্ডম রঙ পেতে দুটি উপায় আছে সেট করতে view

প্রথম সমাধান

public int randomColor()
       {
         Random random= new Random();
         return Color.argb(255, random.nextInt(256), random.nextInt(256), 
         random.nextInt(256));
       }

আপনি যদি adapterস্ক্রোলটিতে ব্যবহার করে থাকেন তবে একই রঙের জন্য আপনি এলোমেলো রঙ পেতে viewপারেন এটি দেখতে ভাল লাগবে না, এড়াতে আপনি দ্বিতীয় সমাধানটি ব্যবহার করতে পারেন।

2. সেকেন্ড সমাধান

আপনি আপনার পছন্দ অনুযায়ী ColorGenerator.DEFAULTপরিবর্তে ব্যবহার করতে পারেন ColorGenerator.MATERIAL। আপনি এর numberপরিবর্তে যে কোনও ব্যবহার করতে পারেনposition

 ColorGenerator generator = ColorGenerator.MATERIAL; 
    int color = generator.getColor(position);
    holder.mEvent_color_strip.setBackgroundColor(color);

4
কি রঙিন জেনারেটর? তুমি কোথা থেকে এলে?
ওরেলজিওন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.