এক্সএমএল বর্ণনায় অঙ্কনযোগ্য ঘোরানো কি সম্ভব?


102

আমি এমন একটি অ্যাপ তৈরি করছি যা সংস্থানগুলি পুনরায় ব্যবহার করা যায় (কারণ বোতামগুলি সর্বদা একই থাকে, তবে মিররযুক্ত বা ঘোরানো হয়)। আমি একই সংস্থানটি ব্যবহার করতে চাই না তাই আমাকে আরও 3 টি সংস্থান যুক্ত করতে হবে না যা ঠিক একইর মতো ঘোরানো। তবে আমি এক্সএমএলে ঘোষিত হতে পারে এমন কোডগুলির সাথে কোডটি মিশ্রিত করতে বা কোনও ম্যাট্রিক্সের সাথে রূপান্তর করতে চাই না যা প্রক্রিয়াজাতকরণের জন্য ব্যয় করতে পারে।

আমি একটি এক্সএমএলে ঘোষিত একটি দুটি রাষ্ট্রীয় বোতাম পেয়েছি।

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/and_card_details_button_down_left_onclick" /> <!-- pressed -->
    <item android:drawable="@drawable/and_card_details_button_down_left" /> <!-- default -->
</selector>

এবং আমি অঙ্কনযোগ্যটিকে পুনরায় ব্যবহার করতে চাই কারণ এটি একই তবে 90 º এবং 45º ঘূর্ণিত হবে এবং আমি বোতামটি একটি অঙ্কনীয় হিসাবে নির্ধারণ করি।

<Button android:id="@+id/Details_Buttons_Top_Left_Button"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/details_menu_large_button" />

আমি জানি যে আমি এটিকে একটি RotateDrawableবা একটি দিয়ে ঘোরতে পারি Matrixতবে আমি ইতিমধ্যে ব্যাখ্যা করেছি যে আমি এই পদ্ধতির পছন্দ করি না।

এটি সরাসরি এক্সএমএলে অর্জন করা সম্ভব বা আপনি কী মনে করেন যে এটি করার সর্বোত্তম উপায় হবে? সমস্ত সংস্থান রাখুন তবে ঘোরানো, এগুলি কোডে ঘোরান?

--- সম্পাদনা --- @dmaxi এর উত্তর দুর্দান্ত কাজ করে, এটি কীভাবে এটি কোনও আইটেমের তালিকার সাথে একত্রিত করা যায় :)

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

    <item android:state_pressed="true">
        <rotate 
        android:fromDegrees="90"
        android:toDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:drawable="@drawable/and_card_details_button_up_onclick"/>
    </item>

    <item>
        <rotate
        android:fromDegrees="90"
        android:toDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:drawable="@drawable/and_card_details_button_up_onclick"/>
    </item>

</selector>

4
আপনার ইংরাজিকে ক্ষমা চাওয়ার দরকার নেই ঠিক। এবং তাই আপনাকে স্বাগতম!
PeeHaa

এই থ্রেড স্টকওভারফ্লো.com/ প্রশ্নগুলি / 14727426/… তে একই সমস্যার দিকে নজর দিন কোনও পরামর্শ দুর্দান্ত হবে!
সুকর্নো

ভেক্টর ভিত্তিক অঙ্কনযোগ্য বিষয়গুলি সহজতর করে (নীচে উত্তর দিন)।
সামিস

উত্তর:


136

আমি এক্সএমএলে ঘুরতে পারতাম :

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
        android:fromDegrees="90"
        android:toDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:drawable="@drawable/mainmenu_background">
</rotate>

fromDegreesগুরুত্বপূর্ণ।

মূলত এটি XML এ সংজ্ঞায়িত একটি ঘোরানো অ্যানিমেশন। আপনার সাথে fromDegreesপ্রাথমিক ঘোরানো অবস্থার সংজ্ঞা দিন। toDegreesঅ্যানিমেশন ক্রমানুসারে অঙ্কনযোগ্য চূড়ান্ত আবর্তিত রাষ্ট্র কিন্তু কিছু হতে পারে আপনি অ্যানিমেশন ব্যবহার করতে না চান।

আমি মনে করি না এটি অ্যানিমেশনের জন্য সংস্থানগুলি বরাদ্দ করে কারণ এটি অ্যানিমেশন হিসাবে লোড করতে হবে না। একটি অঙ্কনযোগ্য হিসাবে এটি প্রাথমিক অবস্থায় হিসাবে রেন্ডার করা হয় এবং এটি drawableসংস্থান ফোল্ডারে রাখা উচিত । এনিমেশন হিসাবে এটি ব্যবহার করার জন্য আপনার এটিকে animরিসোর্স ফোল্ডারে রাখা উচিত এবং এনিমেশনটি এটির মতো শুরু করতে পারেন (কেবল উদাহরণ):

Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);

1
ধন্যবাদ যে নিখুঁত! আমি আইটেমটি এবং এটির সাথে আমার যা প্রয়োজন ঠিক তা সংযুক্ত করে আমি কোডটি পোস্ট করতে চাই, আপনার উত্তর বা আমার প্রশ্নটি সম্পাদনা করা ভাল কিনা তা আমি জানি না ... এবং চিত্রটি মিরর করার জন্য আমাকে কি পাইভট দিয়ে খেলতে হবে? এক্স এবং ওয়াই?
Goofyahead

ঠিক আছে, আমি খুশি আমি সাহায্য করতে পারি, আপনি যদি চান উত্তরটি সম্পাদনা করতে পারেন। পাইভটএক্স এবং পিভোটওয়াই আবর্তনের কেন্দ্রবিন্দু নির্ধারণ করে। মিরর করার জন্য আমার ধারণা নেই কারণ এই এক্সএমএল কেবল 2D ঘূর্ণন সংজ্ঞায়িত করতে পারে।
dmaxi

1
@ dmaxi এই ঘূর্ণন অ্যানিমেশন মাধ্যমে অঙ্কনীয় ঘোরানো হয় তাই না? কিছুটা অকার্যকর হবে না?
স্টারকেজ 2

আমি এটি তৈরি করেছি তবে 0 থেকে 360 ডিগ্রি পর্যন্ত কারণ আমি একটি পূর্ণ ঘূর্ণন চাই, সমস্যাটি ছোট পর্দায় রয়েছে এটি বিকৃতভাবে ঘোরে, কোনও ক্লু?
ফায়ারট্রপ

1
অ্যান্ড্রয়েড এম বাগ ঠিক এই ঘোরান অঙ্কনযোগ্য প্রভাবিত, এটি সম্পূর্ণরূপে disappears, তাই আপনি এই sollution তারপর এটি এম ভাঙ্গা বেছে নিতে যদি এন জন্য পাতানো হয়েছিল ছিল
androidguy

34

আমি এক্সএমএলে বাম তীরটি ডানদিকে ঘোরতে পারি:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="180"
    android:toDegrees="0"
    android:drawable="@drawable/left">
</rotate>

রেফারেন্সের জন্য সংযুক্ত চিত্র।

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


আমি এটি করছি তবে আমি কোনও ধারণা বিন্যাসের জন্য পটভূমি সেট করতে পারি না?
মতিন চৌধুরী চৌধুরী

18

যদি ভেক্টর ভিত্তিক অঙ্কনযোগ্য চিত্র ব্যবহার করা হয় তবে চিত্রকল্প , শৈলী এবং রঙের রাজ্যের তালিকার সাথে মিলিয়ে , আপনার বোতামটি নীচে রিফেক্টর করা যেতে পারে:

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

দ্রষ্টব্য: অ্যান্ড্রয়েড স্টুডিও ভেক্টর সম্পদের একটি দুর্দান্ত উত্স।

মাঝামাঝি \ মান \ styles.xml

<!--ImageView-->
<style name="Details_Buttons_Top_Left_Button">
  <item name="android:layout_width">match_parent</item>
  <item name="android:layout_height">match_parent</item>    
  <item name="android:tint">@color/button_csl</item>    
</style>

মাঝামাঝি \ রঙ \ button_csl.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
  <item android:state_enabled="false" android:color="@color/grey_disabled"/>
  <item android:state_pressed="true" android:color="@color/orange_hilite"/>
  <item android:color="@color/black"/>  
</selector>

details_menu_large_button.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true"
        android:drawable="@drawable/and_card_details_button_down_left_onclick" /> <!-- pressed -->
  <item android:drawable="@drawable/and_card_details_button_down_left" /> <!-- default -->
</selector>

Details_Buttons_Top_Left_Button

<ImageView android:id="@+id/Details_Buttons_Top_Left_Button"
           style="@style/Details_Buttons_Top_Left_Button"
           android:src="@drawable/details_menu_large_button" />

এবং_কার্ড_ডেটেলস_বাটন_ডাউন_ লেফট.এক্সএমএল (আইসি_প্লে_আরো_ব্ল্যাক_24 ডিপি.এক্সএমএল)

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">  
  <path
        android:fillColor="#FF000000"
        android:pathData="M8,5v14l11,-7z"/>

</vector>

এবং_কার্ড_ডেটেলস_বাটন_ডাউন_ বাম_অনিক্লিক.এক্সএমএল (আইসি_প্লে_আরো_ব্ল্যাক_৪৪ ডিপি.এক্সএমএল পরিবর্তিত)

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
  <group android:name="rotationGroup"
         android:pivotX="12"
         android:pivotY="12"
         android:rotation="90" >
    <path
          android:fillColor="#FF000000"
          android:pathData="M8,5v14l11,-7z"/>
  </group>
</vector>

3
rotationGroupবৈশিষ্ট্যের জন্য দুর্দান্ত উত্তর , এটি ভেক্টরটিকে খুব ভালভাবে ঘোরায়
ব্লুওয়্যার

0

যদি আপনি চাই প্রতি rotationমধ্যে অঙ্কনযোগ্য xmlফাইল সহজ অ্যাড android:rotation="180"মধ্যেImageView

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_dropdown"
    android:rotation="180"/>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.