নেভিগেশন UI পরিবর্তন করুন

অ্যান্ড্রয়েডের জন্য নেভিগেশন SDK ব্যবহার করে, আপনি বিল্ট-ইন UI নিয়ন্ত্রণ এবং উপাদানগুলির মধ্যে কোনটি মানচিত্রে উপস্থিত হবে তা নির্ধারণ করে আপনার মানচিত্রের সাথে ব্যবহারকারীর অভিজ্ঞতা পরিবর্তন করতে পারেন৷ আপনি নেভিগেশন UI এর ভিজ্যুয়াল চেহারাও সামঞ্জস্য করতে পারেন। নেভিগেশন UI-তে গ্রহণযোগ্য পরিবর্তনের নির্দেশিকাগুলির জন্য নীতি পৃষ্ঠাটি পড়ুন।

এই নথিটি বর্ণনা করে কিভাবে আপনার মানচিত্রের ইউজার ইন্টারফেস দুটি উপায়ে পরিবর্তন করতে হয়:

মানচিত্র UI নিয়ন্ত্রণ

মানচিত্র UI নিয়ন্ত্রণ নেভিগেশন দৃশ্যের উপরে বসে। বিল্ট-ইন লেআউট পরিবর্তিত হলে Android এর জন্য নেভিগেশন SDK স্বয়ংক্রিয়ভাবে আপনার কাস্টম নিয়ন্ত্রণগুলিকে পুনঃস্থাপন করে৷ লেআউটের প্রতিটি অবস্থানের জন্য, আপনি একটি কাস্টম নিয়ন্ত্রণ সেট করতে পারেন। কাস্টম নিয়ন্ত্রণ একটি UI উপাদান হতে পারে বা, যদি আপনার ডিজাইনের জন্য আরও প্রয়োজন হয়, আপনি একাধিক UI উপাদান সহ একটি ViewGroup ব্যবহার করতে পারেন৷

setCustomControl পদ্ধতিটি CustomControlPosition enum- এ সংজ্ঞায়িত পজিশন প্রদান করে:

  • SECONDARY_HEADER (শুধুমাত্র প্রতিকৃতি মোডে প্রদর্শিত হয়)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

চিত্রটি একটি UI নিয়ন্ত্রণের বিভিন্ন অবস্থানের উদাহরণ দেখায় যা ড্রাইভারকে একজন রাইডারের অবস্থান সম্পর্কে অবহিত করে।

Custom Control Positions

একটি কাস্টম সেকেন্ডারি হেডার যোগ করুন

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

কাস্টম সেকেন্ডারি হেডার পজিশন প্রাথমিক হেডারের নিচের প্রান্তের সাথে তার উপরের প্রান্তটিকে সারিবদ্ধ করে। এই অবস্থানটি শুধুমাত্র portrait mode সমর্থিত। landscape mode , সেকেন্ডারি হেডার অনুপলব্ধ, এবং লেআউট পরিবর্তন হয় না।

  1. কাস্টম UI উপাদান বা ভিউগ্রুপ দিয়ে একটি অ্যান্ড্রয়েড ভিউ তৈরি করুন।
  2. সেকেন্ডারি হেডার হিসেবে ভিউয়ের একটি উদাহরণ পেতে XML স্ফীত করুন বা কাস্টম ভিউ ইনস্ট্যান্টিয়েট করুন।
  3. SECONDARY_HEADER হিসাবে CustomControlPosition সহ NavigationView.setCustomControl বা SupportNavigationFragment.setCustomControl ব্যবহার করুন।

    নীচের উদাহরণটি একটি খণ্ড তৈরি করে এবং সেকেন্ডারি হেডার অবস্থানে একটি কাস্টম নিয়ন্ত্রণ যোগ করে।

     mNavFragment.setCustomControl(getLayoutInflater().
       inflate(R.layout.your_custom_control, null),
       CustomControlPosition.SECONDARY_HEADER);
    

একটি সেকেন্ডারি হেডার সরান

সেকেন্ডারি হেডার মুছে ফেলতে এবং ডিফল্ট কন্টেন্টে ফিরে যেতে, setCustomControl পদ্ধতি ব্যবহার করুন।

ভিউ অপসারণ করতে ভিউটিকে null এ সেট করুন।

mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);

নেভিগেশন দৃশ্যের নীচে একটি কাস্টম নিয়ন্ত্রণ যোগ করুন

আপনার অ্যাপটি নেভিগেশন ভিউয়ের নিচের প্রান্তে সারিবদ্ধ একটি কাস্টম নিয়ন্ত্রণ নির্দিষ্ট করতে পারে। যখন আপনার অ্যাপ কাস্টম কন্ট্রোল যোগ করে, তখন রি-সেন্টার বোতাম এবং Google লোগো এটিকে সামঞ্জস্য করতে উপরে চলে যায়।

  1. আপনি যোগ করতে চান এমন UI উপাদান বা ভিউ গ্রুপ সহ একটি Android ভিউ তৈরি করুন।
  2. নেভিগেশন ভিউ বা ফ্র্যাগমেন্ট তৈরি করুন।
  3. নেভিগেশন ভিউ বা ফ্র্যাগমেন্টে setCustomControl পদ্ধতিতে কল করুন এবং নিয়ন্ত্রণ এবং ব্যবহার করার অবস্থান নির্দিষ্ট করুন।

নিম্নলিখিত উদাহরণটি একটি SupportNavigationFragment ফ্র্যাগমেন্টে যোগ করা একটি কাস্টম View দেখায়:

private SupportNavigationFragment mNavFragment;
mNavFragment = (SupportNavigationFragment)
  getFragmentManager().findFragmentById(R.id.navigation_fragment);

// Create the custom control view.
MyCustomView myCustomView = new MyCustomView();

// Add the custom control to the bottom end corner of the layout.
mNavFragment.setCustomControl(myCustomView, CustomControlPosition.
  BOTTOM_END_BELOW);

একটি কাস্টম নিয়ন্ত্রণ সরান

কাস্টম নিয়ন্ত্রণ সরাতে, setCustomControl পদ্ধতিটি ব্যবহার করুন এবং আপনি যে নিয়ন্ত্রণটি সরাতে চান তার অবস্থান নির্দিষ্ট করুন।

যে অবস্থানের জন্য null ভিউ সেট করুন.

mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);

ম্যাপ UI আনুষাঙ্গিক

অ্যান্ড্রয়েডের জন্য ন্যাভিগেশন SDK UI আনুষাঙ্গিক সরবরাহ করে যা নেভিগেশনের সময় Android অ্যাপ্লিকেশনের জন্য Google মানচিত্রের মতোই দেখা যায়। এই বিভাগে বর্ণিত হিসাবে আপনি এই নিয়ন্ত্রণগুলির দৃশ্যমানতা বা চাক্ষুষ চেহারা সামঞ্জস্য করতে পারেন। আপনি এখানে যে পরিবর্তনগুলি করেছেন তা ড্রাইভারের পরবর্তী ভ্রমণের সময় প্রতিফলিত হয়৷

নেভিগেশন UI-তে গ্রহণযোগ্য পরিবর্তনের নির্দেশিকাগুলির জন্য নীতি পৃষ্ঠাটি পড়ুন।

কোডটি দেখুন

নেভিগেশন হেডার পরিবর্তন করুন

ন্যাভিগেশন হেডারের থিম পরিবর্তন করতে SupportNavigationFragment.setStylingOptions() অথবা NavigationView.setStylingOptions() ব্যবহার করুন এবং উপলভ্য থাকাকালীন হেডারের নিচে প্রদর্শিত পরবর্তী-টার্ন নির্দেশক।

আপনি নিম্নলিখিত বৈশিষ্ট্য সেট করতে পারেন:

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

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে স্টাইলিং বিকল্পগুলি সেট করতে হয়:

private SupportNavigationFragment mNavFragment;
mNavFragment = (SupportNavigationFragment) getFragmentManager()
  .findFragmentById(R.id.navigation_fragment);

// Set the styling options on the fragment.
mNavFragment.setStylingOptions(new StylingOptions()
  .primaryDayModeThemeColor(0xff1A237E)
  .secondaryDayModeThemeColor(0xff3F51B5)
  .primaryNightModeThemeColor(0xff212121)
  .secondaryNightModeThemeColor(0xff424242)
  .headerLargeManeuverIconColor(0xffffff00)
  .headerSmallManeuverIconColor(0xffffa500)
  .headerNextStepTypefacePath("/system/fonts/NotoSerif-BoldItalic.ttf")
  .headerNextStepTextColor(0xff00ff00)
  .headerNextStepTextSize(20f)
  .headerDistanceTypefacePath("/system/fonts/NotoSerif-Italic.ttf")
  .headerDistanceValueTextColor(0xff00ff00)
  .headerDistanceUnitsTextColor(0xff0000ff)
  .headerDistanceValueTextSize(20f)
  .headerDistanceUnitsTextSize(18f)
  .headerInstructionsTypefacePath("/system/fonts/NotoSerif-BoldItalic.ttf")
  .headerInstructionsTextColor(0xffffff00)
  .headerInstructionsFirstRowTextSize(24f)
  .headerInstructionsSecondRowTextSize(20f)
  .headerGuidanceRecommendedLaneColor(0xffffa500));

ট্র্যাফিক স্তর বন্ধ করুন

মানচিত্রে ট্রাফিক স্তর সক্ষম বা অক্ষম করতে GoogleMap.setTrafficEnabled() ব্যবহার করুন৷ এই সেটিংটি সামগ্রিকভাবে মানচিত্রে দেখানো ট্রাফিক ঘনত্বের ইঙ্গিতকে প্রভাবিত করে৷ যাইহোক, এটি নেভিগেটর দ্বারা প্লট করা রুটে ট্র্যাফিক ইঙ্গিতকে প্রভাবিত করে না।

private GoogleMap mMap;
// Get the map, and when the async call returns, setTrafficEnabled
// (callback will be on the UI thread)
mMap = mNavFragment.getMapAsync(navMap -> navMap.setTrafficEnabled(false));

ট্রাফিক লাইট এবং স্টপ সাইন সক্রিয় করুন

আপনি মানচিত্র UI এ ট্রাফিক লাইট এবং স্টপ সাইন সক্ষম করতে পারেন। এই বৈশিষ্ট্যটির সাহায্যে, ড্রাইভার ট্র্যাফিক লাইট প্রদর্শন সক্ষম করতে পারে বা তাদের রুটে সাইন আইকন বন্ধ করতে পারে, আরও দক্ষ এবং সঠিক ভ্রমণের জন্য আরও ভাল প্রসঙ্গ প্রদান করে।

ডিফল্টরূপে, নেভিগেশন SDK-এ ট্র্যাফিক লাইট এবং স্টপ সাইনগুলি অক্ষম থাকে৷ এই বৈশিষ্ট্যটি সক্ষম করতে, প্রতিটি বৈশিষ্ট্যের জন্য স্বতন্ত্রভাবে DisplayOptions কল করুন।

DisplayOptions displayOptions =
  new DisplayOptions().showTrafficLights(true).showStopSigns(true);

কাস্টম মার্কার যোগ করুন

Android এর জন্য নেভিগেশন SDK এখন মার্কারগুলির জন্য Google মানচিত্র API ব্যবহার করে৷ আরও তথ্যের জন্য মানচিত্র API ডকুমেন্টেশনে যান।

ভাসমান পাঠ্য

আপনি আপনার অ্যাপের যেকোনো জায়গায় ভাসমান পাঠ্য যোগ করতে পারেন, যদি এটি Google অ্যাট্রিবিউশনকে কভার না করে। ন্যাভিগেশন SDK মানচিত্রের অক্ষাংশ/দ্রাঘিমাংশে বা লেবেলে পাঠ্যকে অ্যাঙ্করিং সমর্থন করে না। আরও তথ্যের জন্য তথ্য উইন্ডোতে যান।

গতি সীমা প্রদর্শন করুন

আপনি প্রোগ্রামগতভাবে গতি সীমা আইকন দেখাতে বা লুকাতে পারেন। গতিসীমা আইকন প্রদর্শন বা আড়াল করতে NavigationView.setSpeedLimitIconEnabled() বা SupportNavigationFragment.setSpeedLimitIconEnabled() ব্যবহার করুন। যখন সক্রিয় করা হয়, গতি সীমা আইকন নির্দেশিকা চলাকালীন নীচের কোণায় প্রদর্শিত হয়। আইকনটি গাড়িটি যে রাস্তায় চলাচল করছে তার গতিসীমা প্রদর্শন করে। আইকনটি শুধুমাত্র সেই স্থানেই প্রদর্শিত হবে যেখানে নির্ভরযোগ্য গতি সীমা ডেটা উপলব্ধ।

// Display the Speed Limit icon
mNavFragment.setSpeedLimitIconEnabled(true);

রিস্টার বোতামটি প্রদর্শিত হলে গতি সীমা আইকনটি সাময়িকভাবে লুকানো থাকে।

রাতের মোড সেট করুন

আপনি প্রোগ্রাম্যাটিকভাবে রাতের মোডের আচরণ নিয়ন্ত্রণ করতে পারেন। নাইট মোড চালু বা বন্ধ করতে NavigationView.setForceNightMode() বা SupportNavigationFragment.setForceNightMode() ব্যবহার করুন বা Android এর জন্য নেভিগেশন SDK কে এটি নিয়ন্ত্রণ করতে দিন।

  • AUTO নেভিগেশন SDK কে ডিভাইসের অবস্থান এবং স্থানীয় সময় অনুযায়ী উপযুক্ত মোড নির্ধারণ করতে দেয়।
  • FORCE_NIGHT নাইট মোড চালু করে।
  • FORCE_DAY ফোর্স ডে মোড চালু করে৷

নিম্নলিখিত উদাহরণটি একটি নেভিগেশন ফ্র্যাগমেন্টের মধ্যে জোর করে নাইট মোড চালু করতে দেখায়:

// Force night mode on.
mNavFragment.setForceNightMode(FORCE_NIGHT);

দিকনির্দেশের তালিকা প্রদর্শন করুন

প্রথমে, ভিউ তৈরি করুন এবং এটি আপনার ক্রমানুসারে যোগ করুন।

void setupDirectionsListView() {
  // Create the view.
  DirectionsListView directionsListView = new DirectionsListView(getApplicationContext());
  // Add the view to your view hierarchy.
  ViewGroup group = findViewById(R.id.directions_view);
  group.addView(directionsListView);

  // Add a button to your layout to close the directions list view.
  ImageButton button = findViewById(R.id.close_directions_button); // this button is part of the container we hide in the next line.
  button.setOnClickListener(
      v -> findViewById(R.id.directions_view_container).setVisibility(View.GONE));
}

জীবন চক্রের ইভেন্টগুলিকে DirectionsListView এ ফরোয়ার্ড করতে ভুলবেন না ঠিক যেমন সেগুলি NavigationView সাথে আছে। উদাহরণ স্বরূপ:

protected void onResume() {
  super.onResume();
  directionsListView.onResume();
}

বিকল্প রুট লুকানো

যখন ইউজার ইন্টারফেস অত্যধিক তথ্যের সাথে বিশৃঙ্খল হয়ে যায়, আপনি ডিফল্ট (দুটি) থেকে কম বিকল্প রুট প্রদর্শন করে বা কোন বিকল্প রুট প্রদর্শন করে বিশৃঙ্খলা কমাতে পারেন। আপনি নিম্নলিখিত গণনার মানগুলির একটি সহ RoutingOptions.alternateRoutesStrategy() পদ্ধতিতে কল করে রুটগুলি আনার আগে এই বিকল্পটি কনফিগার করতে পারেন:

গণনা মান বর্ণনা
AlternateRoutesStrategy.SHOW_ALL ডিফল্ট. দুটি বিকল্প রুট পর্যন্ত প্রদর্শন করে।
AlternateRoutesStrategy.SHOW_ONE একটি বিকল্প পথ প্রদর্শন করে (যদি একটি উপলব্ধ থাকে)।
AlternateRoutesStrategy.SHOW_NONE বিকল্প পথ লুকিয়ে রাখে।

নিম্নলিখিত কোড উদাহরণটি দেখায় যে কীভাবে বিকল্প রুটগুলি সম্পূর্ণভাবে লুকিয়ে রাখা যায়।

RoutingOptions routingOptions = new RoutingOptions();
routingOptions.alternateRoutesStrategy(AlternateRoutesStrategy.SHOW_NONE);
navigator.setDestinations(destinations, routingOptions, displayOptions);

ট্রিপ অগ্রগতি বার

ট্রিপ অগ্রগতি বার নেভিগেশন যোগ করা হয়েছে.

ট্রিপ প্রগ্রেস বার হল একটি উল্লম্ব বার যা নেভিগেশন শুরু হলে মানচিত্রের ডান প্রান্তে প্রদর্শিত হয়। সক্রিয় করা হলে, এটি ড্রাইভারের গন্তব্য এবং বর্তমান অবস্থান সহ একটি সম্পূর্ণ ট্রিপের একটি ওভারভিউ প্রদর্শন করে।

এটি ড্রাইভারদের জুম ইন করার প্রয়োজন ছাড়াই ট্র্যাফিকের মতো আসন্ন সমস্যাগুলি দ্রুত অনুমান করার ক্ষমতা প্রদান করে৷ প্রয়োজনে তারা ট্রিপটি পুনরায় রুট করতে পারে৷ ড্রাইভার যদি ট্রিপটি পুনরায় রুট করে, তাহলে অগ্রগতি বারটি পুনরায় সেট হয় যেন সেই স্থান থেকে একটি নতুন ট্রিপ শুরু হয়েছে।

ট্রিপ প্রগ্রেস বার নিম্নলিখিত স্থিতি সূচকগুলি প্রদর্শন করে:

  • পথ কেটে গেছে —যাত্রার অতিবাহিত অংশ।

  • বর্তমান অবস্থান —ট্রিপে চালকের বর্তমান অবস্থান।

  • ট্র্যাফিক অবস্থা - আসন্ন ট্র্যাফিকের অবস্থা।

  • চূড়ান্ত গন্তব্য —শেষ ভ্রমণের গন্তব্য।

NavigationView বা SupportNavigationFragment-setTripProgressBarEnabled() পদ্ধতিতে কল করে ট্রিপ অগ্রগতি বার সক্রিয় করুন। উদাহরণ স্বরূপ:

// Enable the trip progress bar.
mNavFragment.setTripProgressBarEnabled(true);