دوره مجازی اندروید (آپدیت خرداد 96) آموزش ویدیویی کار با ConstraintLayout

- visibility ۱۲۱ mode_comment

ConstraintLayout یکی از ViewGroup های تازه به بلوغ رسیده ی گوگل است که در نسخه ی جدید اندروید استودیو به صورت پیش فرض از آن استفاده شده است. به عنوان مثال زمانی که یه اکتیویتی جدید ایجاد می کنید٬ این ViewGroup به عنوان ریشه در نظر گرفته می شود.

مهمترین ویژگی که گوگل خیلی روی آن مانور می دهد٬ سرعت بهتر Render شدن این Viewgroup است. این ViewGroup به شما اجازه می دهد که لایوت های پیچیده و بزرگ را با سلسه مراتب کم (اکثرا صفر) پیاده سازی کنید. خب همانطور که می دانید در اندروید هرچه View های شما بیشتر تودرتو باشند سرعت Render شدن آن ها افت بیشتری می کند. اگر این سلسله مراتب خیلی زیاد باشد و پیچیدگی لایوت بیش از حد باشد کاربر به احتمال زیاد شاهد لگ در اپ شما خواهد بود.

این ViewGroup از جهاتی بسیار به RelativeLayout شباهت دارد. به دلیل اینکه نحوه ی چیدمان یک View بر اساس نسبت با دیگر View ها سنجیده می شود. اما می توان گفت در مقایسه با RelativeLayout انعطاف پذیری بیشتری دارد.

یکی از نکات مثبت استفاده از ConstraintLayout سهولت کار با آن می باشد٬ به این دلیل که تمامی فرآیند پیاده سازی رابط کاربری می تواند با Drag and drop صورت گیرد و تا حد زیادی نیازی به ویرایش فایل xml نیست.

ConstraintLayout از Api 9  یعنی نسخه ی اندروید ۲٫۳ به بالا قابل استفاده است که خب درصد بسیار زیادی از کاربران حال حاضر ایران را پوشش می دهد و از این بابت مشکلی نخواهید داشت.

جهت اضافه کردن کتابخانه به پروژه تکه کد زیر را مطابق آموزش داخل فایل build.gradle اضافه کنید:

    compile 'com.android.support.constraint:constraint-layout:1.0.2'
info توجه

این مطلب یک جلسه از دوره آموزش اندروید می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره آموزش اندروید

comment دیدگاه کاربران
Mohammad Reza

سلام استاد میشه جواب مارو هم بدید بعنوان یه دانشجوتون چون بار اول جواب ندادید یک هفته پیش تو برنامه genymoion صدا درست پخش نمیشن به نظرتون مشکلش چیه انگار پارازیت روش انداختن چطوری برطرفش کنم

سعید شاهینی

سلام، همچنین مشکلی تا به حال کسی نداشته، در ضمن دیگه از genymotion استفاده نکنید، از شبیه ساز خود اندروید استودیو استفاده کنید

حافظ عباسی

با سلام و عرض خسته نباشید خدمت استاد.
استاد جلسه 19 (sqlite database part 2) زمانی که میخواهم PostImageUrl رو image وقتی کد پایین را مینویسم.
پیکاسو رو نمیشناسه مشکل از کجاست لطفا راهنمایی بکنید.باتشکر

Picasso.with(this).load(postImage).into(imageView)
سعید شاهینی

منظورتون از نمی شناسه چیه؟
ورژن جدید Picasso دیگه متدی به اسم with نداره و به جاش باید از get استفاده کنید

علی رجبی

سلام استاد،ببخشید بنده وقتی مو به مو مثل شما صفحه پروفایل رو با کانسترینت لایوت میسازم،عکس رو نشون نمیده اول،یعنی در حالت پیش فرض فقط یه تولبار نشون میده وقتی یه بار صفحه رو اسکرول به پایین کنم اونوقت میتونم عکس رو ببینم
دلیلش چی میتونه باشه؟
این عکسه حالت اوله http://s9.picofile.com/file/8329915476/2018_06_23_114556.png
وقتی اسکرول به پایین کنم اینطوری میشه http://s9.picofile.com/file/8329915650/2018_06_23_114752.png
در صورتی که من میخام در حالت اول عکس نشون داده بشه و وقتی اسکرول به بالا کنم عکس محو شه ولی این کد،اکشنه عکس رو انجام میده،لطفا اگه وقتتون کشید به مشکل منم یه نگاهی کنید

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:theme="@style/Base.ThemeOverlay.AppCompat">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:toolbarId="@+id/toolbar"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollInterpolator="@android:anim/decelerate_interpolator"
            app:titleEnabled="false">

            <android.support.constraint.ConstraintLayout
                app:layout_collapseMode="parallax"

                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <ImageView
                    android:id="@+id/app_bar_image"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:adjustViewBounds="true"
                    android:scaleType="centerCrop"
                    android:src="@drawable/form_background"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"/>

                <Button
                    android:id="@+id/button5"
                    android:layout_width="wrap_content"
                    android:layout_height="31dp"
                    android:layout_marginBottom="8dp"
                    android:layout_marginEnd="8dp"
                    android:layout_marginRight="8dp"
                    android:background="@drawable/selector_orange_button"
                    android:text="@string/txt_edite_Pic"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent" />

                <ImageView
                    android:id="@+id/imageView3"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="8dp"
                    app:layout_constraintBottom_toTopOf="@+id/button5"
                    app:layout_constraintEnd_toEndOf="@+id/button5"
                    app:layout_constraintHorizontal_bias="1.0"
                    app:layout_constraintStart_toStartOf="@+id/button5"
                    app:srcCompat="@drawable/avatar" />

            </android.support.constraint.ConstraintLayout>


            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"/>




        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">

        <include layout="@layout/content_constraint_layout"/>


    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
سعید شاهینی

سلام، وقت بخیر داخل AppBar که نباید از ConstraintLayout استفاده کنید. ConstraitnLayout برای پیاده سازی بخش Content صفحه استفاده می شه، با این کار فقط زحمت خودتونو زیاد کردید، به جاش از RelativeLayoutاستفاده کنید.

Mohammad Amiri

سلام استاد
من جدیدا ویندوز عوض و اندوروید استدیو را مجدد نصب کردم نصب نرم افزار و دانلود اس دی کا ها خوب پیش رفت وقتی نرم افزار باز شد و پروژه جدید درست کردم شروع به دانلود Gradle ها کرد بعد از نیم ساعت اندروید استدیو بالا امو و اخطار زیر را میدهد و کلی از گزینه ها در ستون سمت چپ که مربوط به اپ هست موجود نیست .
روی (Re-download dependencies and sync project (requires network هم کلیک میکنم کاری انجام نمیدهد .ممنون میشم راهنمایی بفرمایید

Failed to open zip file.Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)
سعید شاهینی

باید vpn روشن باشه! چون تحریم هستیم بدون vpn نمی تونید دانلود کنید

sal yar

سلام در درس16 که کار با متد get json رو آموزش دادید میشه یه آموزش هم برای متد post بزارین. یعنی کاربر از خود اپ بتونه یک پست جدید رو به سمت سرور ارسال کنه.

سعید شاهینی

در ادامه جلسات آموزش داده شده

مهدی موسوی

سلام استاد شاهینی بزرگوار
استاد راهی هست که بشه رشته های تولید شده توسط SpannableStringBuilder رو در دیتابیس ذخیره کرد و دقیقا به همون صورت ذخیره شده بازیابی کرد؟
من روش toHtml رو چک کردم ولی در بازیابی رشته های تولید شده بهم می ریزن.
ممنون می شم راهنمایی کنید.

سعید شاهینی

سلام، خیر

سلام
موقع شخصی سازی اندروید استودیو خطای sdk میده و نمیشه هیچ پروژه ای ایمپورت کرد یا پروژه جدیدی ساخت.
من مراحل نصب رو دقیقا مثل شما سپری کردم.
لطفا لینک دانلود sdk tools و نرم افزار های جانبی را ارسال کنید تا دانلود کنم.
حتی در آخر نصب با اینکه به vpn متصل بودم اما هیچ فایلی به صورت خودکار دانلود نشد.
با تشکر

سعید شاهینی

سلام، وقت بخیر من لینک دانلودی که می شناسم ولی تاییدش نمی کنم رو می فرستم، https://soft98.ir/mobile/13883-android-sdk.html

علی اصغر جهانی

سلام استاد .
اپلیکیشن هایی که برای پخش زنده شبکه های تلویریونی و کلا برای تلویزیون هست رو چه طور پیاده سازی میکنند ؟

سعید شاهینی

سلام وقت بخیر، اگه خودتون می خواید داخل اپتون این feature رو داشته باشید و نمی خواید درگیر پیچیدگی هاش بشید از api لحظه نگار استفاده کنید.
https://lahzenegar.com/

امیر اسماعیلی

سلام استاد
من هرچی ویو اضافه میکنم به xml چیزی نشون نمیده حتی وقتی refresh میکنم بازم تاثیر نداره ، اما زمان اجرا داخل emulator ویوها نشون داده میشن
نسخه اندرویدم 3.1.3 هست

سعید شاهینی

سلام، این نسخه داخل perview باگ زیاد داره، آپدیت جدید که بیاد مشکل حل می شه. ولی ممکنه دلیلش این باشه که خطایی چیزی داخل لایوت شما وجود داره

محمد محمد

سلام ویدیو این جلسه دانلود نمیشه!

محمد

مشکل حل شد.

سعید شاهینی

بررسی شد، دانلود ویدیو مشکلی نداره

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.

1 4 5 6