অ্যান্ড্রয়েডে দেখার জন্য কীভাবে অস্পষ্টতা (আলফা) সেট করবেন


211

নিম্নলিখিতগুলির মতো আমার একটি বোতাম রয়েছে:

<Button 
     android:text="Submit" 
     android:id="@+id/Button01" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content">
</Button>

আমার onCreate()ইভেন্টে, আমি বোতাম01 কে এইভাবে কল করছি:

setContentView(R.layout.main);

View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);

অ্যাপ্লিকেশনটিতে একটি পটভূমি রয়েছে এবং আমি এই জমা বোতামে একটি অস্বচ্ছতা সেট করতে চাই। এই দর্শনটির জন্য আমি কীভাবে অস্বচ্ছতা সেট করতে পারি? এটি জাভা সাইডে সেট করতে পারি এমন কি আমি, বা আমি মেইন.এক্সএমএল ফাইলটিতে সেট করতে পারি?

জাভা দিকে আমি চেষ্টা করেছি Button01.mutate().SetAlpha(100), তবে এটি আমাকে একটি ত্রুটি দিয়েছে।

উত্তর:


64

একটি টেক্সটভিউয়ের সাথে একই ধরণের সমস্যা হওয়ার সময় আমি আপনার প্রশ্নটি সন্ধান করেছি। আমি টেক্সটভিউ প্রসারিত করে এবং ওভাররাইড করে এটি সমাধান করতে সক্ষম হয়েছি onSetAlpha। আপনার বোতামের সাহায্যে আপনিও অনুরূপ কিছু চেষ্টা করতে পারেন:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class AlphaTextView extends TextView {

  public AlphaTextView(Context context) {
    super(context);
  }

  public AlphaTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public AlphaTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  @Override
  public boolean onSetAlpha(int alpha) {
    setTextColor(getTextColors().withAlpha(alpha));
    setHintTextColor(getHintTextColors().withAlpha(alpha));
    setLinkTextColor(getLinkTextColors().withAlpha(alpha));
    return true;
  }
}

12
ধন্যবাদ, এটিও আমাকে সাহায্য করেছিল। তবে এটি একটি হাস্যকর বিষয় যে কোনও পাঠ্যদর্শন এবং একটি চিত্রভিউয়ের আলফা সেট করার বিভিন্ন উপায় রয়েছে।
জেরাল্ডো ন্যাসিমেণ্টো

এটি দ্বিতীয় সংস্থান ছাড়াই চিত্র দর্শনে ক্লিক প্রভাব প্রয়োগ করার জন্য আমাকেও সহায়তা করেছিল। ধন্যবাদ !!
স্কাইজেক

568

আমি সবার অন্য দ্বারা বিস্মিত করছি অনেক বেশি জটিল উত্তর।

এক্সএমএল

আপনি খুব সহজেই আপনার এক্সএমএলে বাটনটির রঙিন সংজ্ঞা (বা অন্য কোনও দৃশ্য) -এর সাথে আলফাটিকে সংজ্ঞায়িত করতে পারেন:

android:color="#66FF0000"    // Partially transparent red

উপরের উদাহরণে, রঙটি আংশিক স্বচ্ছ লাল হবে।

কোনও দৃশ্যের রঙ নির্ধারণ করার সময়, ফর্ম্যাটটি হয় #RRGGBBবা হেক্স আলফার মানটি #AARRGGBBকোথায় হতে পারে AAFFসম্পূর্ণ অস্বচ্ছ হবে এবং 00সম্পূর্ণ স্বচ্ছ হবে।

পরিবর্তনশীল

আপনার কোডটিতে যদি আপনার ধূলিকণাকে অস্বচ্ছভাবে পরিবর্তন করতে হয় তবে ব্যবহার করুন

myButton.getBackground().setAlpha(128);  // 50% transparent

যেখানে আইএনটি 0(সম্পূর্ণ স্বচ্ছ) থেকে শুরু করে 255(সম্পূর্ণ অস্বচ্ছ)।


18
আপনার যদি কোনও যৌগিক অঙ্কনযোগ্য হয় তবে এটি এখনও সমাধান নয়
মাইকা কে

6
দেখার অর্ধেক স্বচ্ছ সবুজ রঙ সেট করুন: <আপেক্ষিক লেআউট অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড = "# 8700FF00" />
জনি

2
দর্শনটির android:colorবৈশিষ্ট্য নেই।
রনি

6
@ মোশেরসান আপনি অ্যান্ড্রয়েডে রঙ নির্ধারণ করতে পারেন: ব্যাকগ্রাউন্ড সম্পত্তি নিজেই!
ধীররাজ ভাস্কর

1
এটি ভুল backgroundঅস্বচ্ছতা অস্বচ্ছ নয় view। অনেকগুলি ব্যবহারের ক্ষেত্রে সমতুল্য নয়
জকি ডো

215

আমার ধারণা আপনি ইতিমধ্যে উত্তরটি খুঁজে পেয়েছেন, তবে যদি না হয় (এবং অন্যান্য বিকাশকারীদের জন্য), আপনি এটি এটি করতে পারেন:

btnMybutton.getBackground().setAlpha(45);

এখানে আমি অস্বচ্ছতাটিকে 45 এ সেট করেছি You আপনি মূলত 0 (সম্পূর্ণ স্বচ্ছ) থেকে 255 (সম্পূর্ণ অস্বচ্ছ) এর মধ্যে যে কোনও কিছু থেকে সেট করতে পারেন completely


5
এই API 11+ উপর কেবল প্রাপ্তিসাধ্য developer.android.com/reference/android/view/...
গ্রায়েম

8
@ গ্রেমে আপনি ভিউ ক্লাসে সেট আলফা পদ্ধতির সাথে লিঙ্ক করেছেন তবে পোস্টটি ড্রয়যোগ্য ক্লাসে সেট আলফা ব্যবহার করছে is গেটব্যাকগ্রাউন্ড পদ্ধতিটি একটি অঙ্কনযোগ্যকে ফেরত দেয়। এই পদ্ধতি থেকে এপিআই লেভেল 1. developer.android.com/reference/android/graphics/drawable/...
Geekygecko

ওহ আকর্ষণীয়! আমি তা দেখিনি। এর অর্থ কি পটভূমিটি স্বচ্ছতে সেট করা থাকলেও পাঠ্যটি সম্পূর্ণরূপে দৃশ্যমান ছিল।
গ্রিম 8

-1 এটি আমার ক্ষেত্রে কাজ করে না যেখানে আমার ব্যাকগ্রাউন্ডের অঙ্কনযোগ্য একজন নির্বাচক।
মাইক এস

3
এটি দুর্দান্ত তবে এক পার্শ্ব প্রতিক্রিয়া সহ কার্যকর: আমার অনেকগুলি বোতাম একই ব্যাকগ্রাউন্ডে ভাগ করছে এবং সেগুলি সব স্বচ্ছ হয়ে যায়! :(
চিহ্নিত

66

আমি আপনাকে যা পরামর্শ দিচ্ছি তা হ'ল আপনার রঙগুলি। এক্সএমএল ফাইলে একটি কাস্টম এআরজিবি রঙ তৈরি করা যেমন:

<resources>
<color name="translucent_black">#80000000</color>
</resources>

তারপরে আপনার বোতামের পটভূমিটি সেই রঙে সেট করুন:

android:background="@android:color/translucent_black"

আপনি বোতামের আকারের সাথে খেলতে চাইলে আপনি করতে পারেন এমন আরেকটি জিনিস হ'ল শেপ আঁকতে সক্ষম উত্স তৈরি করা যেখানে আপনি বৈশিষ্ট্যগুলি সেট আপ করবেন যেখানে বোতামটি দেখতে কেমন হবে:

ফাইল: পুনরায় / অঙ্কনযোগ্য / বৃত্তাকার_কর্ণার_বক্স.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#80000000"
        android:endColor="#80FFFFFF"
        android:angle="45"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

তারপরে এটিকে বোতামের পটভূমি হিসাবে ব্যবহার করুন:

    android:background="@drawable/rounded_corner_box"

6
যদি আপনি ৪০% অস্বচ্ছতা থেকে
হেক্সের মানকে রূপান্তরিত করার

54

অ্যান্ড্রয়েড ডক্স অনুসারে দেখুন আলফা 0 এবং 1 এর মধ্যে একটি মান So

View v;
v.setAlpha(.5f);

এটাই কেবলমাত্র আমার জন্য পুরো দর্শনের জন্য কাজ করেছিল ... আমি তালিকাভিউ আইটেমটিতে চেষ্টা করেছি, যার একাধিক পাঠ্যদর্শন রয়েছে। এই একক লাইনটি আলফা এবং তার বাচ্চাদের দৃষ্টিভঙ্গি স্থাপনে সহায়তা করেছে। ধন্যবাদ @ cange1
Alyas

আমার পক্ষে কাজ করা কেবলমাত্র জিনিস। আমি জানি এটি পুরানো, তবে ধন্যবাদ @ ক্যানজি 1
মাসআফথুন্ড

50

উপরের থেকে আরও অনেক সহজ। ডিফল্ট আলফা বৈশিষ্ট্য বোতামের জন্য রয়েছে

android:alpha="0.5"

সম্পূর্ণ স্বচ্ছতার জন্য পরিসীমা 0 এবং সম্পূর্ণ অস্বচ্ছতার জন্য 1 এর মধ্যে থাকে।


এটি আমি ঠিক 21 এপ্রি-তে পরীক্ষিত, দুর্দান্ত, অনুসন্ধান করছিলাম
ফার্নান্দো টরেস

নিখুঁত উত্তর!!
হ্যারি। নাeম

18
android:background="@android:color/transparent"

উপরের কিছু যা আমি জানি ... আমি মনে করি একটি কাস্টম বোতাম শ্রেণি তৈরি করা সেরা ধারণা

এপিআই লেভেল 11
সম্প্রতি আমি এই জুড়ে এসেছিল আলফা: Android XML গুণটি যা 0 এবং 1 এর মধ্যে একটি মান লাগে সংশ্লিষ্ট পদ্ধতি setAlpha (ভাসা)


হাই জোসনিধীন ধন্যবাদ তোমার উত্তরের জন্য. তবে এটি পুরো বোতামটি সম্পূর্ণ স্বচ্ছ করে তোলে। আমি যা দেখছি তা বোতামটিতে কিছুটা অস্বচ্ছতা (সম্ভবত আলফা মানের মাধ্যমে) লাগানো হচ্ছে।
ncakmak

এটি একটি ভাসমান, সুতরাং আপনি উদাহরণস্বরূপ 0 এবং 1, 0.5 এর নীচে মানগুলি ব্যবহার করতে পারেন।
স্ট্যাকওভার প্রবাহিত হয়েছে

@ স্ট্যাকওভারফ্লোড - আমি বিশ্বাস করি এনকাকমাক মানে প্রথম সমাধান। @android:color/transparentব্যাকগ্রাউন্ড হিসাবে সেট করা দৃশ্যটিকে সম্পূর্ণ স্বচ্ছ করে তুলবে। @android:alpha- পার্ট একটি সংযোজন বলে মনে হয়।
katzenhut

17

যদিও btnMybutton.getBackground().setAlpha(45);এটি দুর্দান্ত ধারণা, এটি কেবল ব্যাকগ্রাউন্ডে আলফা প্রয়োগ করে পুরো ভিউয়ের সাথে নয়।

আপনি যদি btnMybutton.setAlpha(0.30f);পরিবর্তে ব্যবহার দেখতে আলফা প্রয়োগ করতে চান । এটি দেখার জন্য অস্বচ্ছতা প্রয়োগ করে। এটি 0 এবং 1 এর মধ্যে একটি মান গ্রহণ করে।

ডক বলেছেন:

দৃশ্যের অস্বচ্ছতা সেট করে। এটি 0 থেকে 1 এর মান, যেখানে 0 এর অর্থ ভিউ সম্পূর্ণ স্বচ্ছ এবং 1 এর অর্থ ভিউটি সম্পূর্ণ অস্বচ্ছ। যদি এই দৃষ্টিভঙ্গি সত্যায়িত করতে সেটআল্ফার (অন্তর্নিহিত) উপর ওভাররাইড করে তবে এই দৃষ্টিভঙ্গিটি নিজেই অস্বচ্ছতা প্রয়োগ করার জন্য দায়ী। অন্যথায়, এই পদ্ধতিটি কল করা সেটলেটারটাইপ (ইনট্রয়েড.গ্রাফিক্স.পাইন্ট) কল করা এবং একটি হার্ডওয়্যার স্তর সেট করার সমতুল্য। নোট করুন যে আলফাকে একটি স্বচ্ছ মান (0 <আলফা <1) এ সেট করার ক্ষেত্রে পারফরম্যান্সের প্রভাব থাকতে পারে। বিবর্ণ অ্যানিমেশনগুলির ক্ষেত্রে যেমন আলফা সম্পত্তি স্বল্প ও ক্ষণস্থায়ীভাবে ব্যবহার করা ভাল best


7

আমি এই সমস্যাটি আইসিএস / জেবিতে নিয়ে এসেছি কারণ হলো থিমের ডিফল্ট বোতামগুলিতে কিছুটা স্বচ্ছ চিত্র রয়েছে। একটি পটভূমি জন্য এটি বিশেষভাবে লক্ষণীয়।

জিঞ্জারব্রেড বনাম আইসিএস +:

জিনজার ব্রেড ছাত্রশিবির

প্রতিটি রেজোলিউশনের জন্য সমস্ত অঙ্কনযোগ্য রাজ্য এবং চিত্রের অনুলিপি করা এবং স্বচ্ছ চিত্রগুলি শক্ত করে তোলা একটি ব্যথা, তাই আমি একটি ডায়রিয়ার সলিউশন বেছে নিয়েছি: একটি সাদা পটভূমির ধারকটির বোতামটি মোড়ানো। এখানে একটি অপরিশোধিত এক্সএমএল অঙ্কনযোগ্য (বাটনহোল্ডার) যা ঠিক তা করে:

আপনার এক্সএমএল ফাইল

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              style="@style/Content">
  <RelativeLayout style="@style/ButtonHolder">
      <Button android:id="@+id/myButton"
              style="@style/Button"
              android:text="@string/proceed"/>
    </RelativeLayout>
</LinearLayout>

ButtonHolder.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <solid android:color="@color/white"/>
    </shape>
  </item>

</layer-list>

styles.xml

.
.
.      
  <style name="ButtonHolder">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:background">@drawable/buttonholder</item>
  </style>

  <style name="Button" parent="@android:style/Widget.Button">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:textStyle">bold</item>
  </style>
.
.
.

যাইহোক, এটি একটি সাদা সীমানায় ফলাফল দেয় কারণ হলো বোতামের চিত্রগুলিতে চেপে রাখা স্থানটির জন্য অ্যাকাউন্টে মার্জিন অন্তর্ভুক্ত থাকে:

অনেক বেশি সাদা অনেক বেশি সাদা চাপা

সুতরাং সমাধানটি হ'ল সাদা ব্যাকগ্রাউন্ডটিকে একটি মার্জিন (4dp আমার জন্য কাজ করেছে) এবং বৃত্তাকার কোণগুলি (2 ডিপি) পুরোপুরি সাদা আড়াল করার জন্য বোতামটি শক্ত করে তোলে:

ButtonHolder.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item>
    <shape android:shape="rectangle">
      <solid android:color="@android:color/transparent"/>
    </shape>
  </item>

  <item android:top="4dp" android:bottom="4dp" android:left="4dp" android:right="4dp">
    <shape android:shape="rectangle">
      <solid android:color="@color/white"/>
      <corners android:radius="2dp" />
    </shape>
  </item>

</layer-list>

চূড়ান্ত ফলাফলটি এরকম দেখাচ্ছে:

সাদা নেই কোনও সাদা চাপ দেওয়া নেই

আপনার এই স্টাইলটি ভি 14+ এর জন্য লক্ষ্যযুক্ত করা উচিত, এবং এটিকে জিঞ্জারব্রেড / মধুচাক্সের জন্য ঝাঁকুনা বা বাদ দেওয়া উচিত কারণ তাদের নেটিভ বোতামের চিত্রের আকার আইসিএস এবং জেবি'র থেকে পৃথক (উদাহরণস্বরূপ জিঞ্জারব্রেড বোতামের পিছনে এই সঠিক শৈলীর বোতামের নীচে কিছুটা সাদা)।


7

একটি দর্শনের জন্য আপনি নিম্নলিখিতটি দ্বারা অস্বচ্ছতা সেট করতে পারেন।

view_name.setAlpha(float_value);

সম্পত্তি view.setAlpha(int)চেয়ে 11. অত: পর, সম্পত্তি মত API সংস্করণ বৃহত্তর জন্য অসমর্থিত হয়েছে .setAlpha(0.5f)ব্যবহার করা হয়।


6

টেক্সটভিউ রঙের জন্য এপিআই <11 এর জন্য আমি নিম্নলিখিতগুলি করেছি:

int textViewColor = textView.getTextColors().getDefaultColor(); 
textView.setTextColor(Color.argb(128, Color.red(textViewColor), Color.green(textViewColor), Color.blue(textViewColor))); //50% transparent

একটু কষ্টকর, তবে ওহে, এটি কাজ করে :-)


1

আমি জানি এটি ইতিমধ্যে উত্তরগুলির একগুচ্ছ রয়েছে তবে আমি দেখতে পেলাম যে বোতামগুলির জন্য আপনার নিজের .xML নির্বাচকগুলি তৈরি করা খুব সহজ এবং সেটিকে বোতামের পটভূমিতে সেট করা। এইভাবে আপনি চাপলে বা সক্ষম হওয়ার সময় এবং এ জাতীয় অবস্থারও পরিবর্তন করতে পারেন। আমি যেটি ব্যবহার করি তার একটি দ্রুত স্নিপেট এখানে। আপনি যদি রঙের যে কোনও একটিতে স্বচ্ছতা যুক্ত করতে চান, তবে একটি শীর্ষস্থানীয় হেক্স মান (#XXcccccc) যুক্ত করুন। (XX == "বর্ণের আলফা")

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#70c656" />
            <stroke
                android:width="1dp"
                android:color="#53933f" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#70c656"
                android:endColor="#53933f"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#53933f" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.