يستمر سطوع الصورة في الازدياد حتى عند تحريك شريط تمرير شريط البحث إلى اليسار

StackOverflow https://stackoverflow.com//questions/22030727

سؤال

في بلدي التطبيق ، أريد أن أكون قادرا على تغيير سطوع صورة داخل إيماجيفيو.يمكنني استخدام سيكبار لهذا الغرض.إنه يغير سطوع الصورة عندما أقوم بتحريك شريط التمرير إلى اليمين ولكن عندما أرغب في تقليل السطوع والتحرك إلى اليسار ، يستمر السطوع في الزيادة وتصبح الصورة بيضاء تقريبا.كما أنه من الصعب جدا استخدام شريط البحث كمستخدم.لا يتحرك بسلاسة كبيرة.هل يمكن لشخص ما مساعدتي في تحسين الكود الخاص بي لأنني مبتدئ في البرمجة.This is how it looks when scrollbar of seekbar moved right (to increase brightness).This is how it looks when scrollbar of seekbar moved left(to decrease brightness).

هنا جزء من الكود:

على النقر على زر"تصفية" :

btn_filter.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
      Log.e("EditPhoto", "counter value = " + counter);
      counter++;
      sbarBrightness = (SeekBar) findViewById(R.id.seekBarForBrightness);
        if (counter % 2 == 0) {
            sbarBrightness.setVisibility(View.INVISIBLE);
        } else {
            sbarBrightness.setVisibility(View.VISIBLE);
        }
    sbarBrightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
     int brightness;
     @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean
                                          fromUser) {

    brightness = progress;
    imageBitmap = doBrightness(imageBitmap, brightness);
    putGestureImageOnScreen(imageBitmap);
 }
   });
  }
 });

public static Bitmap doBrightness(Bitmap src, int value) {
    Log.e("Brightness", "Changing brightnhjh");

    int width = src.getWidth();
    int height = src.getHeight();
    Bitmap bmout = Bitmap.createBitmap(width, height, src.getConfig());
    int A, R, G, B;
    int pixel;
    for (int i = 0; i < width; ++i) {
        for (int j = 0; j < height; ++j) {
            pixel = src.getPixel(i, j);
            A = Color.alpha(pixel);
            R = Color.red(pixel);
            G = Color.green(pixel);
            B = Color.blue(pixel);
            R += value;
            if (R > 255) {
                R = 255;
            } else if (R < 0) {
                R = 0;
            }
            G += value;
            if (G > 255) {
                G = 255;
            } else if (G < 0) {
                G = 0;
            }
            B += value;
            if (B > 255) {
                B = 255;
            } else if (B < 0) {
                B = 0;
            }
            bmout.setPixel(i, j, Color.argb(A, R, G, B));
        }
    }
    return bmout;

}

إعلان سيكبار في التخطيط:

<SeekBar
    android:id="@+id/seekBarForBrightness"
    android:layout_width="500dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    style="@style/tallerBarStyle"        
    android:layout_marginTop="64dp"
    android:visibility="invisible" />

وهذا أسلوبه هو على النحو التالي:

<style name="tallerBarStyle" parent="@android:style/Widget.SeekBar">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
    <item
     name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
    <item name="android:minHeight">8dip</item>
    <item name="android:maxHeight">10dip</item>
</style>

أريد أيضا حفظ مستوى سطوع الصورة بحيث عندما أقوم بتمرير الصورة إلى نشاط آخر ، لا تضيع السطوع.يمكن للشخص يرجى توجيه لي ، كيف يمكنني تحقيق ذلك.

شكرا.

هل كانت مفيدة؟

المحلول

سبب المشكلة هو القيام بالتلاعب على نفسه Bitmap المرجع (imageBitmap = doBrightness(imageBitmap, brightness);).ومن ثم ، عند سحب شريط التمرير إلى اليسار ، فإنك لا تزال تزيد باستمرار من سطوع الصورة.

حاول

brightness = progress;
//imageBitmap = doBrightness(imageBitmap, brightness);
putGestureImageOnScreen(doBrightness(imageBitmap, brightness));

لسؤالك 2 ، يمكنك استخدام Intent لنقل قيمة السطوع إلى التالي Activity والقيام التلاعب سطوع مرة واحدة للحصول على نفس النتيجة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top