অ্যান্ড্রয়েড - লেখায় ছায়া?


184

আমি ভাবছি কীভাবে অ্যান্ড্রয়েডে পাঠ্যে ছায়া যুক্ত করবেন?

আমার কাছে নিম্নলিখিত কোড রয়েছে যা একটি বিটম্যাপে প্রয়োগ করা হয়েছে এবং আমি ছায়াময় হতে চেয়েছিলাম ...

paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...

2
মনে রাখতে হবে আপনার অবশ্যই একটি ছায়া রেডিয়াস থাকতে হবে।

2
আপনার উত্তরটি @ ফুচোকে সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত; আমি একই জিনিসটি করার চেষ্টা করছিলাম এবং কোনও উত্তর সঠিক হিসাবে চিহ্নিত করা হয়নি বলে এই পোস্টটি প্রথম দেখলাম missed উত্তরটি বহুবার উপভোগ করা বিভ্রান্তিমূলক, কারণ এটি ছায়া প্রোগ্রামক্রমে যুক্ত করার সাথে সম্পর্কিত নয়।
এরিলিং

উত্তর:


390

আপনি স্টাইলটি যুক্ত করতে সক্ষম হবেন (রিংড্রয়েডের উত্স কোড থেকে নেওয়া):

  <style name="AudioFileInfoOverlayText">
    <item name="android:paddingLeft">4px</item>
    <item name="android:paddingBottom">4px</item>
    <item name="android:textColor">#ffffffff</item>
    <item name="android:textSize">12sp</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
  </style>

এবং আপনার বিন্যাসে, এই জাতীয় শৈলী ব্যবহার করুন:

 <TextView android:id="@+id/info"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       style="@style/AudioFileInfoOverlayText"
       android:gravity="center" />

সম্পাদনা করুন: উত্স কোডটি এখানে দেখা যাবে: https://github.com/google/ringdroid

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

TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),  
       R.style.AudioFileInfoOverlayText);

জন্য স্বাক্ষর setTextAppearanceহয়

পাবলিক অকার্যকর সেটটেক্সট অ্যাপিয়ারেন্স (প্রসঙ্গে

যেহেতু: এপিআই লেভেল 1
নির্দিষ্ট পাঠ্য উপস্থিতি সংস্থান থেকে পাঠ্যের রঙ, আকার, শৈলী, ইঙ্গিত রঙ এবং হাইলাইট রঙ সেট করে।


1
তবে ওপি কাস্টম উইজেট চাইছে!
এইচআরজে

এটি হতে পারে, তবে কোনও ইমেজভিউতে তিনি এই পদ্ধতিটি ব্যবহার করতে পারবেন না এমন প্রস্তাব দেওয়ার মতো কিছুই নেই। আমি ধরে নিয়েছিলাম যে তিনি সরাসরি চিত্র আঁকছেন কারণ তিনি অন্যথায় এটি বুঝতে পারেন না।
জিম শুবার্ট

দুর্দান্ত ... স্ট্যান্ডার্ড ফন্টে অনেক প্রয়োজনীয় গভীরতা যুক্ত করে এবং দৃ background় ব্যাকগ্রাউন্ডে এটি 10X আরও ভাল দেখায়।
ম্যাট কে

: এখানে দেখতে @Farhan stackoverflow.com/questions/4630440/...
জিম Schubert

2
সত্যিই সাহায্য করেছে, থাম্ব আপ আপ
সাদ বিলাল

72

আপনি কোড এবং এক্সএমএল উভয়ই করতে পারেন। সেট করতে হবে মাত্র 4 টি বেসিক জিনিস।

  1. ছায়ার রঙ
  2. ছায়া ডিএক্স - এটি ছায়ার এক্স-অক্ষ অফসেট নির্দিষ্ট করে। আপনি - / + মান দিতে পারেন, যেখানে -Dx পাঠ্যের বাম দিকে একটি ছায়া এবং ডানদিকে + ডেক্স আঁকেন
  3. ছায়া ডাই - এটি ছায়ার ওয়াই-অক্ষটি অফসেট নির্দিষ্ট করে। -ডি পাঠ্যের উপরে একটি ছায়া নির্দিষ্ট করে এবং + ডাই পাঠ্যের নীচে নির্দিষ্ট করে।
  4. ছায়ার ব্যাসার্ধ - প্রান্তে ছায়াটি কতটা ঝাপসা হওয়া উচিত তা নির্দিষ্ট করে। যদি ছায়া বিশিষ্ট হওয়ার প্রয়োজন হয় তবে একটি ছোট মান সরবরাহ করুন। অন্যথায়।

যেমন

    android:shadowColor="@color/text_shadow_color"
    android:shadowDx="-2"
    android:shadowDy="2"
    android:shadowRadius="0.01"

এটি পাঠ্যের বাম-নীচের দিকে একটি বিশিষ্ট ছায়া আঁকে। কোডে, আপনি এর মতো কিছু যুক্ত করতে পারেন;

    TextView item = new TextView(getApplicationContext());
    item.setText(R.string.text);
    item.setTextColor(getResources().getColor(R.color.general_text_color));
    item.setShadowLayer(0.01f, -2, 2,   getResources().getColor(R.color.text_shadow_color));

7
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="20dp" >

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:shadowColor="#000"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="50"
        android:text="Text Shadow Example1"
        android:textColor="#FBFBFB"
        android:textSize="28dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Text Shadow Example2"
        android:textColor="#FBFBFB"
        android:textSize="28dp"
        android:textStyle="bold" />

</LinearLayout>

উপরের এক্সএমএল লেআউট কোডটিতে, পাঠ্যদর্শন 1 লেআউটে শ্যাডো এফেক্টের সাথে দেওয়া হয়েছে। নীচে কনফিগারেশন আইটেম হয়

অ্যান্ড্রয়েড: শেওএডএক্স - ছায়ার এক্স-অক্ষ অফসেট নির্দিষ্ট করে। আপনি - / + মান দিতে পারেন, যেখানে -Dx পাঠ্যের বাম দিকে একটি ছায়া এবং ডানদিকে + ডেক্স আঁকেন

অ্যান্ড্রয়েড: শ্যাডডি - এটি ছায়ার ওয়াই-অক্ষটি অফসেট নির্দিষ্ট করে। -ডি পাঠ্যের উপরে একটি ছায়া নির্দিষ্ট করে এবং + ডাই পাঠ্যের নীচে নির্দিষ্ট করে।

অ্যান্ড্রয়েড: শেডো রেডিওস - প্রান্তগুলিতে ছায়াটি কতটা ঝাপসা করা উচিত তা নির্দিষ্ট করে। যদি ছায়া বিশিষ্ট হওয়ার প্রয়োজন হয় তবে একটি ছোট মান সরবরাহ করুন। অ্যান্ড্রয়েড: ছায়া রঙ - ছায়ার রঙ নির্দিষ্ট করে


ব্যবহারিকভাবে অ্যান্ড্রয়েড টেক্সটভিউতে ছায়া প্রভাব pra

দ্বিতীয় পাঠ্য ভিউতে ব্যবহারিকভাবে ছায়া প্রভাব পেতে নীচের কোড স্নিপেট ব্যবহার করুন।

TextView textv = (TextView) findViewById(R.id.textview2);
textv.setShadowLayer(30, 0, 0, Color.RED);        

আউটপুট:

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


3

অ্যান্ড্রয়েড যেভাবে লঞ্চারে করে সেটির মতো ছায়া অর্জন করতে যদি আমরা এই মানগুলি পরিচালনা করি। আপনি যদি টেক্সটভিউগুলি তৈরি করতে চান যা কোনও পটভূমি ছাড়াই উইজেট হিসাবে উপস্থিত হবে।

android:shadowColor="#94000000"
android:shadowDy="2"
android:shadowRadius="4"

2

2 টি পাঠ্য আঁকুন: একটি ধূসর (এটি ছায়া হবে) এবং এর উপরে দ্বিতীয় পাঠ্য আঁকুন (y 1px আরও তারপর ছায়ার পাঠ্যকে সমন্বিত করুন)।


1
আপনার পোস্টের জন্য ধন্যবাদ ছেলেরা। আমি দুটি পেইন্ট অবজেক্ট ব্যবহার করে এবং পেইন্ট-অবজেক্টের মধ্যে একটিতে সেটশ্যাডলায়ার ব্যবহার করে এটি সমাধান করেছি।
গ্র্যান্ডাইজার 15

2
আপনি আলফা ব্যবহার করেন তবে এটি দেখতে ঠিক আছে তবে দেখতে সুন্দর, নরম, ঘোষিত-সেট ছায়ার মতো দেখাবে না।
শিববুক

2
 <style name="WhiteTextWithShadow" parent="@android:style/TextAppearance">
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
    <item name="android:shadowColor">@android:color/black</item>
    <item name="android:textColor">@android:color/white</item>
</style>

তারপর হিসাবে ব্যবহার করুন

 <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            tools:text="Today, May 21"
            style="@style/WhiteTextWithShadow"/>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.