<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UI &#8211; Mahdi Tajik</title>
	<atom:link href="http://www.mahditajik.ir/tag/ui/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mahditajik.ir</link>
	<description>I&#039;m Mahdi Tajik. I am project manager and Full-stack Android developer. welcome to my personal website.</description>
	<lastBuildDate>Thu, 29 Nov 2018 14:23:55 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.6</generator>

<image>
	<url>http://www.mahditajik.ir/wp-content/uploads/2015/03/cropped-sample-logo-MT-2-32x32.png</url>
	<title>UI &#8211; Mahdi Tajik</title>
	<link>http://www.mahditajik.ir</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>کار با CollapsingToolBar به همراه مثالی ساده</title>
		<link>http://www.mahditajik.ir/how-to-use-collapsingtoolbar/</link>
					<comments>http://www.mahditajik.ir/how-to-use-collapsingtoolbar/#respond</comments>
		
		<dc:creator><![CDATA[mahdi]]></dc:creator>
		<pubDate>Wed, 26 Apr 2017 16:44:26 +0000</pubDate>
				<category><![CDATA[آموزش]]></category>
		<category><![CDATA[material-design]]></category>
		<category><![CDATA[UI]]></category>
		<guid isPermaLink="false">http://www.mahditajik.ir/?p=2254</guid>

					<description><![CDATA[<p>کار با CollapsingToolBar به همراه مثالی ساده حتماً شما هم افکت های زیبای Material Design را دیده اید که چگونه با اسکرول دادن لیست، toolBar و عناصر دیگر با یک افکت زیبا جمع شده و به بالا می روند. چی؟! راجع بهش می دونید و ازش استفاده می کنید؟ باشه من می خوام در این ...</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/how-to-use-collapsingtoolbar/">کار با CollapsingToolBar به همراه مثالی ساده</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>کار با CollapsingToolBar به همراه مثالی ساده</strong></p>
<p>حتماً شما هم افکت های زیبای <strong>Material Design</strong> را دیده اید که چگونه با اسکرول دادن لیست، <strong>toolBar</strong> و عناصر دیگر با یک افکت زیبا جمع شده و به بالا می روند. چی؟! راجع بهش می دونید و ازش استفاده می کنید؟ باشه من می خوام در این مقاله  نحوه صحیح پیاده سازی <strong>CollapsingToolBar</strong>  را  باهم برسی کرده و ابهامات احتمالی موجود در گوشه ذهنمون رو بر طرف کنم. پس چه دوستانی که با این کتابخانه آشنا هستند و چه شمایی که تازه می خواهید شروع کنید، تا آخر این مقاله با من باشید. پیشنهاد من اینکه یکبار مقاله را کامل بخوانید و بعد بروید سراغ کد. ۹۰ درصد سوالات برطرف می شود و اگر دوباره مقاله را بخوانید ۱۰ درصد بقیه نیز اوکی میشود. انشاء الله <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&nbsp;</p>
<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2261" src="http://www.mahditajik.ir/wp-content/uploads/2017/04/video_2017-04-26_17-02-07.gif" alt="" width="360" height="640" /></p>
<p><strong>تعریف:</strong></p>
<p><strong>CollapsingToolBar</strong> یک <strong>wrapper</strong> یا غلاف برای <strong>ToolBar</strong> هست که خودش مشتق شده از <strong>AppBar</strong> است و طراحی شده تا فرزند <strong>AppBarLayout</strong> باشد. خود <strong>AppBarLayout</strong> یک <strong>LinearLayout</strong> است با این امکان که اکثر افکت ها و امکانات <strong>Material Design</strong>  در فرزند های آن قابل استفاده است و اجازه می دهد تا <strong>ToolBar</strong> و <strong>View</strong> های دیگر نسبت اسکرول شدن View های وابسته (<strong>NestedScrollView</strong> و یا <strong>RecyclerView</strong>) عکس العمل نشان بدهند و افکت های Material Design را اعمال کنند.حتماً می دانید که AppBarLayout باید والد یا parent آن <strong>CoordinatorLayout</strong> باشد. خود <strong>CoordinatoLayout</strong> نیز <strong>Super FrameLayout</strong> است که معمولا به عنوان والد اصلی لیوت ها بکار گرفته می شود. برای جلو گیری از پیچیده شدن مطلب به نمودار زیر توجه کنید:</p>
<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2259" src="http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout.jpg" alt="" width="500" height="800" srcset="http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout.jpg 500w, http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout-188x300.jpg 188w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>خیلی خوب بیاید یکبار بالعکس دفعه قبل از بالا به پایین برسی کنیم:</p>
<p><strong>CoordinatorLayout</strong> لازم است تا بتوانیم <strong>AppBarLayout</strong> داشته باشیم. <strong>AppBarLayout</strong> هم باید باشد تا بتوانیم <strong>CollapsingToolBarLayout</strong> داشته باشیم. درون <strong>CollapsingToolBarLayout</strong> هم یک <strong>ToolBar</strong> برای برنامه می گذاریم و یک <strong>ImageView</strong>. ما می خواهیم با اسکرول خوردن لایه محتوا، کل <strong>CollapsingToolBarLayout</strong> و کامپوننت های داخل آن به جز <strong>ToolBar</strong>جمع شود. در هر کدام از این کامپوننت ها هم باید <strong>Property</strong> های مخصوص را به درستی مقدار دهی کنیم. اول اینکه در <strong>CollapsingToolBarLayout</strong> باید فلگ اسکرول را بدهیم که مشخص می کند نسبت به اسکرول لایه محتوا چه عکس العملی نشان دهد. در ضمن می توان برای <strong>ToolBar</strong> یا کامپوننت های داخل <strong>CollapsingToolBarLayout</strong> نوع جمع شدن ان را مشخص کرد که می تواند بصورت <strong>Paralex</strong> یا <strong>pin</strong> باشد. استفاده از <strong>paralex</strong> برای <strong>ImageView</strong> بسیار جالب خواهد بود و با سرعتی کمتر از سرعت اسکرول از صفحه خارج خواهد شد. ( سایت های <strong>paralex</strong> رو حتماً دیده اید!) البته گزینه <strong>pin</strong> فقط روی <strong>ToolBar</strong> کار می کند و توسط آن بعد از جمع شدن کل <strong>CollapsingToolBarLayout</strong> فقط <strong>ToolBar</strong> بالای صفحه باقی می ماند و به اصطلاح <strong>Pin</strong> می شود. البته توجه کنید که نمی توان <strong>Pin</strong> را مثلا روی <strong>ImageView</strong> اعمال کرد.</p>
<p>بسیار خوب، از طرفی هم به لایه محتوی باید بگوییم که قرار است تغییرات اسکرولش به <strong>AppBarLayout</strong> اطلاع داده شود که این امر با ست کردن <strong> layout_behavior</strong> محقق می شود.</p>
<p>همه اینها در تصویر پایین رسم کرده ام تا بسیار راحت جمع بندی کنیم.</p>
<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2269" src="http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout2-1.jpg" alt="" width="1300" height="800" srcset="http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout2-1.jpg 1300w, http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout2-1-300x185.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout2-1-768x473.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2017/04/coordinatorlayout2-1-1024x630.jpg 1024w" sizes="(max-width: 1300px) 100vw, 1300px" /></p>
<p>حالا می تونید برگردید و تعریف رو دوباره بخونید. خیلی خوب! ببینیم چطور می تونیم این افکت ها را ایجاد و مدیریت کنیم. استفاده از <strong>Component</strong> های یاد شده به همراه چند <strong>Scroll_flags</strong> باعث ایجاد افکت های <strong>Scrolll</strong> می شود که بصورت زیر است:</p>
<p><strong>Scroll</strong><br />
اگر از فلگ<br />
<pre class="crayon-plain-tag">scroll</pre>
استفاده نکنیم اصلا ToolBar اسکرول نخواهد خورد و از این فلگ را معمولا با ترکیب فلگ های دیگر استفاده می کنیم.</p>
<p><strong>enterAlways</strong><br />
با استفاده از فلگ<br />
<pre class="crayon-plain-tag">enterAlways</pre>
بعد از اینکه آیتم از صفحه خارج شد با اولین اسکرول برعکس بعدی دوباره نمایان می شود. اگر از فلگ<br />
<pre class="crayon-plain-tag">scroll</pre>
به تنهایی استفاده کرده بودیم باید تمامی صفحات اسکرول شده را برگردیم تا دوباره آیتم خارج شده (ToolBar یا هر آیتمی که این فلگ به او نسبت داده شده) به صفحه باز گردد. موارد را در مثال می توانید مشاهده کنید و حتی با دانلود کل کد از gitHub تک تک آنها را خودتان امتحان نمایید. پس نگران نباشید!</p>
<p><strong>exitUntilCollapsed</strong><br />
با استفاده از این فلگ، لیست بصورتی عمل می کند که با اسکرول لیست به سمت بالا کم کم فضای آیتم را گرفته و آیتم از بالا به بیرون می رود و باید همه صفحه های اسکرول شده در<br />
<pre class="crayon-plain-tag">exitUntilCollapsed</pre>
بصورت عکس اسکرول شوند تا آیتم (ToolBar یا هر آیتمی که این فلگ به او نسبت داده شده) دوباره باز گردد. فقط حواسمان باشد که این فلگ برای CollapsingToolBar عمل می کند و برای آیتم های دیگر کارایی ندارد!</p>
<p>کد نمودار بالا بصورت زیر است:</p><pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"&gt;
    &lt;!-- fitsSystemWindows: hen enabled, the AppBarLayout assumes that the status bar is not available and it has to occupy the entire real estate. --&gt;

    &lt;android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="256dp"
        android:theme="@style/AppTheme.AppBarOverlay"&gt;

        &lt;android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsingToolBar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="@color/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"&gt;
            &lt;!-- * contentScrim: when collapsing the toolbar color change to this, if you want to use this feature do not set background color for toolBar --&gt;

            &lt;ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                android:src="@drawable/ic_back"/&gt;

            &lt;android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:elevation="7dp"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin"/&gt;

            &lt;!-- * layout_collapseMode: indicate how our tool bar act to collapsing pin on top or paralex --&gt;

        &lt;/android.support.design.widget.CollapsingToolbarLayout&gt;


    &lt;/android.support.design.widget.AppBarLayout&gt;

    &lt;include layout="@layout/content_main"/&gt;

    &lt;android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|right"
        app:srcCompat="@android:drawable/ic_dialog_email"/&gt;
    &lt;!-- * layout_anchorGravity: layout_gravity should removed so the layout_anchorGravity works --&gt;
    
&lt;/android.support.design.widget.CoordinatorLayout&gt;</pre><p>
<strong>نکته۱:</strong><br />
گزینه<br />
<pre class="crayon-plain-tag">contentScrim</pre>
در<br />
<pre class="crayon-plain-tag">CollapsingToolbarLayout</pre>
باعث می شه که بعد از جمع شدن بجای استفاده از بخش مانده از تصویر به عنوان بک گراند، رنگش به رنگ مورد نظر ما تغییر بکنه. حواستون باشه این گزینه وقتی کار میکنه که شما<br />
<pre class="crayon-plain-tag">toolBar</pre>
رنگ پس زمینه نگذاشته باشین.</p>
<p><strong>نکته۲:</strong><br />
گزینه<br />
<pre class="crayon-plain-tag">layout_anchor</pre>
باعث میشه که کامپوننت های درون<br />
<pre class="crayon-plain-tag">CoordinatorLayout</pre>
بتونند به آیتم های دیگه اصطلاحاً لنگر بندازن و بهشون وصل بشوند و اتفاقات مربوط به اسکرول روی انها نیز تاثیر بگذارد. همانطور که در کد می بینید ما<br />
<pre class="crayon-plain-tag">floatingActionButton</pre>
را به<br />
<pre class="crayon-plain-tag">appBarLayout</pre>
وصل کردیم و توسط گزینه<br />
<pre class="crayon-plain-tag">layout_anchorGravity</pre>
موقعیت آن را نیز مشخص کردیم. اگر این مشخصه نبود ما باید احتمالا یک انیمیتی دستی به<br />
<pre class="crayon-plain-tag">floatingActionButton</pre>
می دادیم تازه اونم سینک کردنش با انیمیت اسکرول داستانی برای خودش. پس به راحتی می تونیم این طوری هندلش کنیم.</p>
<p>همانطور که می بینید با استفاده از کامپوننت های <strong>CollapsingToolBar </strong> و <strong>AppBarLayout</strong> و <strong>CoordinatorLayout</strong> با دادن چند Property ساده تونستیم افکت زیبای <strong>Material Design</strong> را داشته باشیم. امیدوارم این مقاله براتون مفید بوده باشه.</p>
<p>کد کامل رو از اینجا بگیرید و خودتان تست کنید.</p>
<p><a href="https://github.com/mahdit83/CollapsingToolBarDemo/tree/master" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2146" src="http://www.mahditajik.ir/wp-content/uploads/2016/12/github_download.png" alt="github_download" width="230" height="70" /></a>منبع: <a href="http://www.biitecode.ir" target="_blank" rel="noopener">بایت کد</a></p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/how-to-use-collapsingtoolbar/">کار با CollapsingToolBar به همراه مثالی ساده</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.mahditajik.ir/how-to-use-collapsingtoolbar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>مفاهیم مهندسی رابط کاربر</title>
		<link>http://www.mahditajik.ir/ui-engineering/</link>
					<comments>http://www.mahditajik.ir/ui-engineering/#comments</comments>
		
		<dc:creator><![CDATA[mahdi]]></dc:creator>
		<pubDate>Wed, 22 Jun 2016 09:55:44 +0000</pubDate>
				<category><![CDATA[آموزش]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[رابط کاربر]]></category>
		<category><![CDATA[مهندسی]]></category>
		<guid isPermaLink="false">http://www.mahditajik.ir/?p=1882</guid>

					<description><![CDATA[<p>در این مقاله قصد دارم تا شما را با مفاهیم اصلی مهندسی رابط کاربر آشنا کنم. اول از همه لازم است تا با مبحث HCI یا ارتباط بین انسان و کامپیوتر آشنا شویم: HCI (human-computer interaction) is the study of how people interact with computers and to what extent computers are or are not developed ...</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/ui-engineering/">مفاهیم مهندسی رابط کاربر</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">در این مقاله قصد دارم تا شما را با مفاهیم اصلی مهندسی رابط کاربر<div class="checklist"></div> آشنا کنم. اول از همه لازم است تا با مبحث HCI یا ارتباط بین انسان و کامپیوتر آشنا شویم:</p>
<blockquote><p>HCI (human-computer interaction) is the study of how people interact with computers and to what extent computers are or are not developed for successful interaction with human beings.</p></blockquote>
<p>در HCI یکی از مهمترین مفاهیم  Usability یا قابلیت استفاده است که شامل اجزاء زیر است:</p>
<p>&nbsp;</p>
<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1895" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/0_HCI.png" alt="0_HCI" width="450" height="339" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/0_HCI.png 450w, http://www.mahditajik.ir/wp-content/uploads/2016/06/0_HCI-300x226.png 300w" sizes="(max-width: 450px) 100vw, 450px" /></p>
<ol>
<li style="text-align: justify;">یادگیری: کاربران باید بتوانند راحت کار با سیستم را بیاموزند و یاد بگیرند.</li>
<li style="text-align: justify;">بهره وری: با بهترین روش بهترین نتیجه را بدست آورد و باعث رضایت کاربر شود.</li>
<li style="text-align: justify;">به یادسپاری: کاربر به راحتی بتواند به خاطر بسپارد و در برخورد های بعدی نحوه ارتباط را به یاد آورد.</li>
<li style="text-align: justify;">کاهش نرخ خطا: خطا نه تنها کرش و پیغام خطا در سیستم است بلکه رسیدن به یک وضعیتی که کاربر نداند در کجا قرار گرفته است نیز خطا محسوب می شود و باید تا جای ممکن نرخ خطا کاهش پیدا کند.</li>
<li style="text-align: justify;">رضایت شخصی: بالابردن رضایت شخصی در حد اعلاء.</li>
</ol>
<p>قوانین طلایی اشنایدرمن در طراحی رابط کاربری<img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1884" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/1_shneidermans_8_ruls.png" alt="1_shneidermans_8_ruls" width="1300" height="971" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/1_shneidermans_8_ruls.png 1300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1_shneidermans_8_ruls-300x224.png 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1_shneidermans_8_ruls-768x574.png 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1_shneidermans_8_ruls-1024x765.png 1024w" sizes="(max-width: 1300px) 100vw, 1300px" /></p>
<p>&nbsp;</p>
<p>قوانین که در زیر مشاهده می کنید به قوانین اشنایدرمن معروفند که اصول کلی برای طراحی UI را بصورت زیر تعریف می کند که ما عوامل یادشده Usability را در تک تک قوانین آن برسی خواهیم کرد.</p>
<ol>
<li>یکپارچگی: در تمامی سیستم از یک روش برای نمایش و یا ارتباط کاربر استفاده نماییم. مثلا اگر در یک بخش از برنامه بازگشت توسط دکمه خاصی باشد در تمامی برنامه برای بازگشت از همان روش استفاده نماییم. این قضیه هم باعث یادگیری بهتر می شود، هم بهره وری بالا می رود و هم اینکه بهتر به خاطر کاربر می ماند.</li>
<li>میانبر: به فکر همه کاربر ها باشید. هم کاربران جدید تازه وارد و هم کاربران حرفه ای. همانگونه که رابط کاربری ما باید بسیار گویا برای کاربران جدید باشد باید کلیدهای میانبری برای کاربران قدیمی بگذاریم تا بعد از مدتی برنامه کسل کننده نشود و بتوانند سریع تر به اهداف خود برسند.</li>
<li>دادن فیدبک به کاربر: وقتی اتفاقی دارد می افتد کاربر ازآن مطلع کنیم. مثلا کاربر فرم  اطلاعات را پر می کند و دکمه ثبت را می زند.  وقتی برنامه  درحال ارسال اطلاعات به سرور و منتظر بازگشت اطلاعات است باید پیغام لطفاً &#8220;منتظر باشید، دستور شما در حال اجرا است!&#8221; را به کاربر بدهیم. این باعث می شود رضایت شخصی بالابرود.</li>
<li>تایید کاربر: وقتی اتفاقات مهمی دارد رخ می دهد حتماً  تایید  مربوطه را بگیریم. &#8220;آیا مایلید تمامی فایل ها حذف شوند؟&#8221; و این باعث ایجاد کاهش نرخ خطا و رضایت شخصی بیشتر می شود.</li>
<li>از خطا جلوگیری کنید: تا جای ممکن جلوی بروز هرگونه خطا را بگیرید. چه خطای سیستمی چه خطایی که ممکن از ناشی استفاده نادرست کاربر از برنامه باشد. مثلا اگر قرار است در جایی فقط عدد وارد شود نوع فیلد ورودی با کنترل کننده عدد بگذارید که فرضاً اگر کاربر در فیلد مربوط به سن  &#8220;۱۹ سال&#8221; را نتواند وارد کند. این قلانون باعث افزایش بهره وری و رضایت شخصی بیشتر می شود.</li>
<li>امکان بازگشت: دکمه پشیمان شدم را برای اتفاقات مهم بگذاریم تا کاربر بتواند بعد از انجام کاری حساس و در صورت پشیمانی بتواند به وضعیت قبلی برگردد.</li>
<li>حسن کنترل به کاربر: کاربر همیشه باید حس کنترل روی برنامه داشته باشد نه اینکه برنامه او را کنترل کند. قابلیت شخصی سازی های گوناگون، ابزارهای در دسترس، اطلاع رسانی های کامل و بی نقض باعث افزایش این حس می شود.</li>
<li>حساب نکردن روی حافظه کوتاه مدت کاربر: باید تمام تلاش خود را در جهت ساده سازی روند انجام دستورات توسط برنامه بکارگیریم تا کاربر به سهولت با برنامه ارتباط برقرار کند. به عنوان مثال اگر قرار است کدفعال سازی را بصورت دستی وارد کند کد ۸ رقمی به او ندهیم و اگر ناچاراً ۸ رقمی است روند وارد کردن آن را اتوماتیک کنیم.</li>
</ol>
<p>&nbsp;</p>
<p><strong>قانون فیتسfitt&#8217;s law</strong></p>
<blockquote><p>Faster to hit larger Targets closer to you  than  smaller targets further from you</p></blockquote>
<p style="text-align: justify;">طبق قانون فیتس می توان شاخص سختی دسترسی به یک آیتم در صفحه را بدست آورد که به آن ID می گویند. ID متاثر از اندازه آیتم و فاصله ما تا آن آیتم می باشد. قانون فیتس به ما می گوید که انتخاب هدف بزرگتر که در نزدیک ماست سریع تر از انتخاب هدف کوچی است که در دور دست می باشد. البته شاید به نظر برسد که ایشان چشم بسته غیب گفته اند، لکن خواهید دید که همین امر بدیهی وقتی فرموله شود چقدر می تواند مفید واقع گردد.</p>
<p style="text-align: justify;"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1887" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/Fitts_law.png" alt="Fitts_law" width="902" height="233" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/Fitts_law.png 902w, http://www.mahditajik.ir/wp-content/uploads/2016/06/Fitts_law-300x77.png 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/Fitts_law-768x198.png 768w" sizes="(max-width: 902px) 100vw, 902px" />قانون فیتس بصورت زیر است.  A همان فاصله یا d می باشد. طبق این قانون درجه سختی با اندازه ( عرض) آیتم رابطه معکوس و با فاصله مان تا آن رابطه مستقیمی دارد. هرچه درجه سختی (ID) بیشتر باشد دسترسی به آن آیتم سخت تر خواهد بود.</p>
<p style="text-align: justify;"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1888" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/shannon.png" alt="shannon" width="640" height="174" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/shannon.png 640w, http://www.mahditajik.ir/wp-content/uploads/2016/06/shannon-300x82.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p style="text-align: justify;">البته در کاربر نیازی به استفاده از فرمول نداریم بلکه باید بتوانیم این قانون را درست پیاده سازی کنیم. یعنی باید تعادلی بین سایز آیتم ها و فاصله بین آنها پیدا کنیم که بهینه باشد. در فاصله های بسیار دور اندازه بزرگ خیلی تاثیری ندارد و در فاصله های خیلی نزدیک آیتم ها، اندازه کوچک آن نیز انتخاب را بسیار سخت می کند. آزمایشی در اینجا قرار دادم تا با نصب آن برروی گوشی بتوانید بصورت عملی متوجه این قضیه شوید. فایل را از <a href="http://www.mahditajik.ir/download_apk/fitts_test.apk" target="_blank" rel="noopener">اینجا <span class="highlight">دانلود </span>کنید</a>. این فایل را توسط Fiddler تست کردم و امن است. می توانید از تنظیمات زیر استفاده کنید و یا با تنظیمات دلخواه آزمایش کنید:</p>
<p><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1890" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/Screenshot_20160622-1257042.jpg" alt="Screenshot_20160622-1257042" width="500" height="889" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/Screenshot_20160622-1257042.jpg 500w, http://www.mahditajik.ir/wp-content/uploads/2016/06/Screenshot_20160622-1257042-169x300.jpg 169w" sizes="(max-width: 500px) 100vw, 500px" />نتیجه نهایی به این صورت تفسیر کنید:</p>
<p style="text-align: right;">ID = Index of difficulty</p>
<p style="text-align: right;">A | d = distance</p>
<p style="text-align: right;">W = width of object</p>
<p style="text-align: right;">MT = Movement time to hit Target</p>
<p style="text-align: right;">TP = throughput   توان عملیاتی</p>
<p style="text-align: justify;">نتایج برایتان جذاب بود، نه؟ علاوه بر فاصله و اندازه ایتم تعداد آیتم ها نیز در زمان انتخاب تاثیر گذار هستند. هرچه تعداد آیتمی که جهت انتخاب موجودند بیشتر باشند زمان تصمیم گیری و در نتیجه انخاب نیز بیشتر می شود. به عنوان مثال فرض کنید می خواهیم یک پلت رنگی به کاربر بدهیم جهت انتخاب رنگ برای آیتم خاصی. دو پلت زیر قابل قبول هستند. اما زمان انتخاب بین آنها چندین برابر می باشد.</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1892" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/ColorPalette-1024x768.jpg" alt="ColorPalette" width="620" height="465" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/ColorPalette-1024x768.jpg 1024w, http://www.mahditajik.ir/wp-content/uploads/2016/06/ColorPalette-300x225.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/ColorPalette-768x576.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/ColorPalette.jpg 1600w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: right;">انتخاب بین رنگ های بالا برایتان ساده تر است یا انتخاب از پلت رنگی زیر:</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1893" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/slidevana_dark_color_palette-1024x768.jpg" alt="slidevana_dark_color_palette" width="620" height="465" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/slidevana_dark_color_palette.jpg 1024w, http://www.mahditajik.ir/wp-content/uploads/2016/06/slidevana_dark_color_palette-300x225.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/slidevana_dark_color_palette-768x576.jpg 768w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: right;"><strong>کاربران چگونه گوشی خود را دردست می گیرند</strong></p>
<p style="text-align: justify;">حال می خواهیم رابط کاربری را با دید تخصصی تر موبایل مورد برسی قرار دهیم و با توجه به اطلاعات بدست آمده از نحوه دست گرفتن گوشی و راحتی کاربر، مکان و نقاط مناسب جهت قرار دادن آیتم ها را کشف کنیم! اول باید ببینیم اکثر کاربران گوشی را چگونه در دست می گیرند. سپس نقاط مناسب برای قرار دادن آیتم ها کدامند؟</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1896" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/e1-1024x386.jpg" alt="e1" width="620" height="234" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/e1-1024x386.jpg 1024w, http://www.mahditajik.ir/wp-content/uploads/2016/06/e1-300x113.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/e1-768x290.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/e1.jpg 1392w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: justify;">همانطور که ملاحظه می کنید بیشتر آمار ما برای کاربران راست دست است. زیرا آنها بیشترین سهم کاربران ما را تشکیل می دهند. حال با توجه به نحوه در دست گرفتن نقاط  صفحه را باتوجه به راحتی دسترسی به سه قسمت  Easy و OK و forbidden تقسیم می کنیم که به ترتیب به رنگ های سبز و زرد و قرمز می باشد. آیتم های پرکاربرد که زیاد لمس می شوند باید در  بخش Easy قرار گیرد. آیتم هایی که خیلی پر استفاده نیستند در OK و یا Forbidden قرار گیرند. حتی المقدور نباید آیتم ها را در ناحیه قرمز قرار داد، زیرا لمس کردن آنها بسیار سخت است. البته گاهی پیش می آید که آیتم کم کاربردی را در این بخش قرار دهیم. مثلا آیکون تنظیمات اگر قرار است در صفحه اول قرار گیرد با توجه به ارجاعات کم به آن ( شاید روزی یک بار یا کمتر) بهتر است در ناحیه قرمز قرار گیرد. مثلا گوشه بالا سمت چپ.</p>
<p style="text-align: justify;">امیدوارم بعد از دیدن تصاویر آتی متوجه سیاست های UI در اپ های معروف و موفق خواهید شد و که احتمالا برایتان جذاب خواهد بود.</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1897" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.4-thumb-zone-2x-953x1024.jpg" alt="1.4-thumb-zone-2x" width="620" height="666" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.4-thumb-zone-2x-953x1024.jpg 953w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.4-thumb-zone-2x-279x300.jpg 279w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.4-thumb-zone-2x-768x825.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.4-thumb-zone-2x.jpg 1392w" sizes="(max-width: 620px) 100vw, 620px" />و این آمار برا چپ دست ها بصورت زیر است:</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1898" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.8-phablet-choke-2x-844x1024.jpg" alt="1.8-phablet-choke-2x" width="620" height="752" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.8-phablet-choke-2x-844x1024.jpg 844w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.8-phablet-choke-2x-247x300.jpg 247w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.8-phablet-choke-2x-768x931.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.8-phablet-choke-2x.jpg 1392w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: right;">در سایز های مختلف گوشی بدین شکل تغییر می کند:</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1899" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.7-phablet-zones-2x-1024x569.jpg" alt="1.7-phablet-zones-2x" width="620" height="345" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.7-phablet-zones-2x-1024x569.jpg 1024w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.7-phablet-zones-2x-300x167.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.7-phablet-zones-2x-768x427.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.7-phablet-zones-2x.jpg 1392w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: right;">در تبلت بصورت زیر است:</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1900" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.9-tablet-zones-2x-1024x911.jpg" alt="1.9-tablet-zones-2x" width="620" height="552" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.9-tablet-zones-2x-1024x911.jpg 1024w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.9-tablet-zones-2x-300x267.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.9-tablet-zones-2x-768x683.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.9-tablet-zones-2x.jpg 1392w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: right;">و در تبلت بصورت افقی:</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-large wp-image-1901" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.10-hybrid-zones-2x-1024x299.jpg" alt="1.10-hybrid-zones-2x" width="620" height="181" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/1.10-hybrid-zones-2x-1024x299.jpg 1024w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.10-hybrid-zones-2x-300x88.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.10-hybrid-zones-2x-768x225.jpg 768w, http://www.mahditajik.ir/wp-content/uploads/2016/06/1.10-hybrid-zones-2x.jpg 1382w" sizes="(max-width: 620px) 100vw, 620px" /></p>
<p style="text-align: right;">همچنین در سه مدل آیفون به شکل زیر است:</p>
<p style="text-align: right;"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1902" src="http://www.mahditajik.ir/wp-content/uploads/2016/06/thumb-reach.png" alt="thumb-reach" width="600" height="464" srcset="http://www.mahditajik.ir/wp-content/uploads/2016/06/thumb-reach.png 600w, http://www.mahditajik.ir/wp-content/uploads/2016/06/thumb-reach-300x232.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p style="text-align: right;">پس ما باید با توجه به نوع کاربری برنامه و افقی یا عمودی بودن صفحه، در چینش آیتم های صفحه به نکات بالا توجه کنیم. البته توجه داشته باشید همانطور که قبلا اشاره کردم، اکثر آمارهای ارئه شده برای کاربران راست دست در نظر گرفته شده است. زیرا اکثریت آنها راست دست هستند.</p>
<p style="text-align: right;">امیدوارم مطالب فوق مفید واقع شده باشد. اگر سوال یا نکته نظری داشتید کامنت بگذارید.</p>
<p>&nbsp;</p>
<p>منبع: <a href="http://www.biitecode.ir" target="_blank" rel="noopener">بایت کد</a></p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/ui-engineering/">مفاهیم مهندسی رابط کاربر</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.mahditajik.ir/ui-engineering/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
