1. 程式人生 > >Constraintlayout全解析

Constraintlayout全解析

平時使用ConstraintLayout,斷斷續續的,基本都是在自己的小demo裡面使用.公司的專案暫時還沒有使用.這次公司專案需要大改,我決定用上這個nice的佈局.減少巢狀(之前的老程式碼,實在是巢狀得太深了…無力吐槽).

圖片看不了請到:https://juejin.im/post/5c0bd6b05188257c3045dc50 檢視.

首先,ConstraintLayout是一個新的佈局,它是直接繼承自ViewGroup的,所以在相容性方面是非常好的.官方稱可以相容到API 9.可以放心食用.

一、Relative positioning

先來看看下面一段簡單示例:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按鈕1"/>

    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toRightOf="@+id/btn1"
        android:text="按鈕2"/>

</android.support.constraint.ConstraintLayout>

image

上面有一個簡單的屬性:layout_constraintLeft_toRightOf,表示將按鈕2放到按鈕1的左邊.如果沒有這一句屬性,那麼兩個按鈕會重疊在一起,就像FrameLayout.

像這樣的屬性還有很多:

layout_constraintLeft_toLeftOf  我的左側與你的左側對齊
layout_constraintLeft_toRightOf  我的左側與你的右側對齊
layout_constraintRight_toLeftOf 我的右側與你的左側對齊
layout_constraintRight_toRightOf 我的右側與你的右側對齊
layout_constraintTop_toTopOf 我的頂部與你的頂部對齊
layout_constraintTop_toBottomOf 我的頂部與你的底部對齊 (相當於我在你下面)
layout_constraintBottom_toTopOf 
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf 基線對齊
layout_constraintStart_toEndOf 我的左側與你的右側對齊
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf

上面的屬性都非常好理解,除了一個相對陌生的layout_constraintBaseline_toBaselineOf基線對齊.咱們上程式碼:

 <TextView
        android:id="@+id/btn1"
        android:text="按鈕1"
        android:textSize="26sp"/>

    <TextView
        android:id="@+id/btn2"
        android:text="按鈕2"
        app:layout_constraintBaseline_toBaselineOf="@+id/btn1"
        app:layout_constraintLeft_toRightOf="@+id/btn1"/>

image

一目瞭然,相當於文字的基線是對齊了的.如果沒有加layout_constraintBaseline_toBaselineOf屬性,那麼是下面這樣的:

image

二、與父親邊緣對齊

當需要子view放在父view的底部或者最右側時. 我們使用:

<android.support.constraint.ConstraintLayout
        app:layout_constraintEnd_toEndOf="parent">

        <TextView
            android:text="按鈕2"
            app:layout_constraintBottom_toBottomOf="parent"/>

    </android.support.constraint.ConstraintLayout>

image

app:layout_constraintBottom_toBottomOf="parent"  我的底部與父親底部對齊
app:layout_constraintTop_toTopOf="parent"   我的頂部與父親的頂部對齊
app:layout_constraintLeft_toLeftOf="parent"  我的左側與父親的左側對齊
app:layout_constraintRight_toRightOf="parent"  我的右側與父親的右側對齊

三、居中對齊

image

下面的TextView,與父親左側對齊,與父親右側對齊,所以,最右,它水平居中對齊.

<TextView
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

image

可能你也想到了,居中對齊其實就是2個對齊方式相結合.最後產生的效果. 比如:

這是垂直居中
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
位於父親的正中央
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"

四、邊距

image

邊距和原來是一樣的.

android:layout_marginStart
android:layout_marginEnd
android:layout_marginLeft
android:layout_marginTop
android:layout_marginRight
android:layout_marginBottom

舉個例子:

<TextView
    android:id="@+id/btn1"
    android:text="按鈕1"
    android:textSize="26sp"/>
<TextView
    android:id="@+id/btn2"
    android:text="按鈕2"
    android:layout_marginStart="40dp"
    app:layout_constraintLeft_toRightOf="@+id/btn1"/>

效果如下:

image

Bias(偏向某一邊)

上面的水平居中,是使用的與父親左側對齊+與父親右側對齊. 可以理解為左右的有一種約束力,預設情況下,左右的力度是一樣大的,那麼view就居中了.

當左側的力度大一些時,view就會偏向左側.就像下面這樣.

image

當我們需要改變這種約束力的時候,需要用到如下屬性:

layout_constraintHorizontal_bias  水平約束力
layout_constraintVertical_bias  垂直約束力

來舉個例子:

<android.support.constraint.ConstraintLayout
    <Button
        android:text="按鈕1"
        app:layout_constraintHorizontal_bias="0.3"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>        

image

可以看到,左右有2根約束線.左側短一些.那麼就偏向於左側

五、Circular positioning (Added in 1.1)

翻譯為:圓形的定位 ?

這個就比較牛逼了,可以以角度和距離約束某個view中心相對於另一個view的中心,

可能比較抽象,來看看谷歌畫的圖:

image

他的屬性有:

layout_constraintCircle :引用另一個小部件ID
layout_constraintCircleRadius :到其他小部件中心的距離
layout_constraintCircleAngle :小部件應該處於哪個角度(以度為單位,從0到360)

舉個例子:

<Button
    android:id="@+id/btn1"
    android:text="按鈕1"/>
<Button
    android:text="按鈕2"
    app:layout_constraintCircle="@+id/btn1"
    app:layout_constraintCircleRadius="100dp"
    app:layout_constraintCircleAngle="145"/>

image

六、Visibility behavior 可見性行為

當一個View在ConstraintLayout中被設定為gone,那麼你可以把它當做一個點(這個view所有的margin都將失效). 這個點是假設是實際存在的.

image

舉個例子:

<Button
    android:id="@+id/btn1"
    android:text="按鈕1"
    android:textSize="26sp"/>


<Button
    android:id="@+id/btn2"
    android:layout_marginStart="20dp"
    android:text="按鈕2"
    android:visibility="gone"
    app:layout_constraintLeft_toRightOf="@+id/btn1"/>

<Button
    android:id="@+id/btn3"
    android:layout_marginStart="20dp"
    android:text="按鈕3"
    app:layout_constraintLeft_toRightOf="@+id/btn2"/>

image

可以看到,按鈕3和按鈕1中間的margin只有20.

再舉個例子:

 <Button
    android:id="@+id/btn2"
    android:layout_marginStart="20dp"
    android:text="按鈕2"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

<Button
    android:id="@+id/btn3"
    android:text="按鈕3"
    app:layout_constraintLeft_toRightOf="@+id/btn2"
    app:layout_constraintTop_toTopOf="@+id/btn2"
    app:layout_constraintBottom_toBottomOf="@+id/btn2"/>

我將按鈕3放到按鈕2的右側,這時是沒有給按鈕2加android:visibility="gone"的.

image

現在我們來給按鈕2加上android:visibility="gone"

image

這時,按鈕2相當於縮小成一個點,那麼按鈕3還是在他的右側不離不棄.

七、Dimensions constraints 尺寸限制

在ConstraintLayout中,可以給一個view設定最小和最大尺寸.

屬性如下(這些屬性只有在給出的寬度或高度為wrap_content時才會生效):

android:minWidth 設定佈局的最小寬度
android:minHeight 設定佈局的最小高度
android:maxWidth 設定佈局的最大寬度
android:maxHeight 設定佈局的最大高度

八、Widgets dimension constraints 寬高約束

平時我們使用android:layout_width和 android:layout_height來指定view的寬和高.

在ConstraintLayout中也是一樣,只不過多了一個0dp.

  • 使用長度,例如
  • 使用wrap_content,view計算自己的大小
  • 使用0dp,相當於“ MATCH_CONSTRAINT”

image

下面是例子

<Button
    android:id="@+id/btn1"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="按鈕1"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"/>

<Button
    android:id="@+id/btn2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="按鈕2"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/btn1"/>


<Button
    android:id="@+id/btn3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="60dp"
    android:text="按鈕3"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/btn2"/>

展示出來的是:

image

九、WRAP_CONTENT:強制約束(在1.1中新增)

當一個view的寬或高,設定成wrap_content時,如果裡面的內容實在特別寬的時候,他的約束會出現問題.我們來看一個小栗子:

<Button
    android:id="@+id/btn1"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Q"/>

<Button
    android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
    app:layout_constraintLeft_toRightOf="@id/btn1"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@id/btn1"/>

image

從右側的圖片可以看出,按鈕2裡面的內容確實是在按鈕1的內容的右側.但是按鈕2整個來說,卻是沒有整個的在按鈕1的右側.

這時需要用到下面2個屬性

app:layout_constrainedWidth=”true|false”
app:layout_constrainedHeight=”true|false”

給按鈕2加一個app:layout_constrainedWidth="true",來看效果:

image

哈哈,又看到了我們想要的效果.爽歪歪.

十、MATCH_CONSTRAINT尺寸(在1.1中新增)

當一個view的長寬設定為MATCH_CONSTRAINT(即0dp)時,預設是使該view佔用所有的可用的空間. 這裡有幾個額外的屬性

layout_constraintWidth_min和layout_constraintHeight_min:將設定此維度的最小大小
layout_constraintWidth_max和layout_constraintHeight_max:將設定此維度的最大大小
layout_constraintWidth_percent和layout_constraintHeight_percent:將此維度的大小設定為父級的百分比

這裡簡單舉個百分比的例子:居中並且view的寬是父親的一半

 <Button
    android:id="@+id/btn1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Q"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintWidth_percent="0.5"/>

image

It’s so easy! 這極大的減少了我們的工作量.

注意

  • 百分比佈局是必須和MATCH_CONSTRAINT(0dp)一起使用
  • layout_constraintWidth_percent 或layout_constraintHeight_percent屬性設定為0到1之間的值

十一、按比例設定寬高(Ratio)

可以設定View的寬高比例,需要將至少一個約束維度設定為0dp(即MATCH_CONSTRAINT),再設定layout_constraintDimensionRatio.

舉例子:

<Button
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="按鈕"
    app:layout_constraintDimensionRatio="16:9"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

image

該比率可表示為:

  • 浮點值,表示寬度和高度之間的比率
  • “寬度:高度”形式的比率

如果兩個尺寸都設定為MATCH_CONSTRAINT(0dp),也可以使用比率。在這種情況下,系統設定滿足所有約束的最大尺寸並保持指定的縱橫比。要根據另一個特定邊的尺寸限制一個特定邊,可以預先附加W,“或” H,分別約束寬度或高度。例如,如果一個尺寸受兩個目標約束(例如,寬度為0dp且以父節點為中心),則可以指示應該約束哪一邊,通過 在比率前新增字母W(用於約束寬度)或H(用於約束高度),用逗號分隔:

<Button android:layout_width="0dp"
   android:layout_height="0dp"
   app:layout_constraintDimensionRatio="H,16:9"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintTop_toTopOf="parent"/>

上面的程式碼將按照16:9的比例設定按鈕的高度,而按鈕的寬度將匹配父項的約束。

十二、Chains(鏈)

設定屬性layout_constraintHorizontal_chainStyle或layout_constraintVertical_chainStyle鏈的第一個元素時,鏈的行為將根據指定的樣式(預設值CHAIN_SPREAD)更改。

  • CHAIN_SPREAD - 元素將展開(預設樣式)
  • 加權連結CHAIN_SPREAD模式,如果設定了一些小部件MATCH_CONSTRAINT,它們將分割可用空間
  • CHAIN_SPREAD_INSIDE - 類似,但鏈的端點不會分散
  • CHAIN_PACKED - 鏈條的元素將被包裝在一起。然後,子項的水平或垂直偏差屬性將影響打包元素的定位

image

下面是一個類似LinearLayout的weight的效果,需要用到layout_constraintHorizontal_weight屬性:

<Button
    android:id="@+id/btn1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="A"
    app:layout_constraintEnd_toStartOf="@id/btn2"
    app:layout_constraintHorizontal_chainStyle="spread"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toStartOf="parent"/>


<Button
    android:id="@+id/btn2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="按鈕2"
    app:layout_constraintEnd_toStartOf="@id/btn3"
    app:layout_constraintHorizontal_weight="2"
    app:layout_constraintStart_toEndOf="@id/btn1"/>

<Button
    android:id="@+id/btn3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="問問"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_weight="3"
    app:layout_constraintStart_toEndOf="@id/btn2"/>

例子的效果圖如下:

image

十三、Guideline

這是一個虛擬檢視

Guideline可以建立相對於ConstraintLayout的水平或者垂直準線. 這根輔助線,有時候可以幫助我們定位.

layout_constraintGuide_begin   距離父親起始位置的距離(左側或頂部)
layout_constraintGuide_end    距離父親結束位置的距離(右側或底部)
layout_constraintGuide_percent    距離父親寬度或高度的百分比(取值範圍0-1)

我們拿輔助線幹嘛??? 比如有時候,可能會有這樣的需求,有兩個按鈕,在螢幕中央一左一右. 如果是以前的話,我會搞一個LinearLayout,.然後將LinearLayout居中,然後按鈕一左一右.

效果圖如下:

image

現在我們使用Guideline的話,就超級方便了,看程式碼:

<!--水平居中-->
<android.support.constraint.Guideline
    android:id="@+id/gl_center"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="按鈕1"
    app:layout_constraintEnd_toStartOf="@id/gl_center"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="按鈕2"
    app:layout_constraintLeft_toRightOf="@id/gl_center"/>

十四、Barrier

虛擬檢視

Barrier是一個類似於屏障的東西.它和Guideline比起來更加靈活.它可以用來約束多個view.

比如下面的姓名和聯絡方式,右側的EditText是肯定需要左側對齊的,左側的2個TextView可以看成一個整體,Barrier會在最寬的那個TextView的右邊,然後右側的EditText在Barrier的右側.

image

Barrier有2個屬性

  • barrierDirection,取值有top、bottom、left、right、start、end,用於控制 Barrier 相對於給定的 View 的位置。比如在上面的栗子中,Barrier 應該在 姓名TextView 的右側,因此這裡取值right(也可end,可隨意使用.這個right和end的問題,其實在RelativeLayout中就有體現,在RelativeLayout中寫left或者right時會給你一個警告,讓你換成start和end)。
  • constraint_referenced_ids,取值是要依賴的控制元件的id(不需要@+id/)。Barrier 將會使用ids中最大的一個的寬(高)作為自己的位置。

ps:這個東西有一個小坑,如果你寫完程式碼,發現沒什麼問題,但是預覽出來的效果卻不是你想要的.這時,執行一下程式即可.然後預覽就正常了,在手機上展示的也是正常的.

例子的程式碼如下(如果預覽不正確,那麼一定要執行一下,不要懷疑是自己程式碼寫錯了):

<TextView
    android:id="@+id/tv_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="姓名:"
    app:layout_constraintBottom_toBottomOf="@id/tvTitleText"/>

<TextView
    android:id="@+id/tv_phone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="聯絡方式:"
    app:layout_constraintBottom_toBottomOf="@id/tvContentText"
    app:layout_constraintTop_toBottomOf="@+id/tv_name"/>

<EditText
    android:id="@+id/tvTitleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="null"
    android:text="張三"
    android:textSize="14sp"
    app:layout_constraintStart_toEndOf="@+id/barrier2"/>

<EditText
    android:id="@+id/tvContentText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="null"
    android:text="xxxxxxxxxxxxxxx"
    android:textSize="14sp"
    app:layout_constraintStart_toEndOf="@+id/barrier2"
    app:layout_constraintTop_toBottomOf="@+id/tvTitleText"/>

<android.support.constraint.Barrier
    android:id="@+id/barrier2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="right"
    app:constraint_referenced_ids="tv_name,tv_phone"/>

十五、Group

固定思議,這是一個組. 這也是一個虛擬檢視.

可以把View放到裡面,然後Group可以同時控制這些view的隱藏.

<android.support.constraint.Group
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    app:constraint_referenced_ids="btn1,btn2"/>

<Button
    android:id="@+id/btn1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="按鈕1"/>

<Button
    android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="按鈕2"
    app:layout_constraintTop_toBottomOf="@id/btn1"/>
  • Group有一個屬性constraint_referenced_ids,可以將那些需要同時隱藏的view丟進去.
  • 別將view放Group包起來.這樣會報錯,因為Group只是一個不執行onDraw()的View.
  • 使用多個 Group 時,儘量不要將某個View重複的放在 多個 Group 中,實測可能會導致隱藏失效.

十六、何為虛擬檢視

上面我們列舉的虛擬檢視一共有:

  • Guideline
  • Barrier
  • Group

來我們看看原始碼

//Guideline


            
           

相關推薦

Constraintlayout解析

平時使用ConstraintLayout,斷斷續續的,基本都是在自己的小demo裡面使用.公司的專案暫時還沒有使用.這次公司專案需要大改,我決定用上這個nice的佈局.減少巢狀(之前的老程式碼,實在是巢狀得太深了…無力吐槽). 圖片看不了請到:https://jueji

ConstraintLayout 解析

平時使用ConstraintLayout,斷斷續續的,基本都是在自己的小demo裡面使用.公司的專案暫時還沒有使用.這次公司專案需要大改,我決定用上這個nice的佈局.減少巢狀(之前的老程式碼,實在是巢狀得太深了....無力吐槽). 首先,ConstraintLayout是一個新的佈局,它是直接繼

ConstraintLayout 用法解析

*本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 簡書地址 www.jianshu.com/p/502127a49… 本文是基於constraint-layout:1.1.2 一、前言 在以前,android是使用佈局如LinearLayout 、Re

Visual Studio 2017各版本安裝包離線下載、安裝解析

pla 離線文件 win10 unit splay and 文件下載 python擴展 erl 轉自 寂靜·櫻花雨 Visual Studio 2017各版本安裝包離線下載、安裝全解析 感謝IT之家網友 寂靜·櫻花雨 的投稿 關於Visual

jQuery Ajax 解析

windows 我不 編輯器 som lsp 開始 cif bob cache jQuery Ajax 全解析 本文地址: jQuery Ajax 全解析 本文作者:QLeelulu 轉載請標明出處! jQuery確實是一個挺好的輕量級的JS框架,能幫助我們快速的開發JS

Android異步載入解析之開篇瞎扯淡

com des turn pro 能夠 eat launch 卡頓 ring Android異步載入概述 Android異步載入在Android中使用的很廣泛,除了是由於避免在主線程中做網絡操作。更是為了避免在顯示時由於時間太長而造成ANR,添加顯示的流暢性,特別是像Li

Android studio 2.2新特性介紹,ConstraintLayout完全解析

穩定 iss 項目 ide 了解 需要 應用 let 左右 轉載郭霖大神的文章,轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/53122387 我正常寫隨筆,都是看了別人的文章,自己使用,把自己的體驗心得,

PHP 常量、PHP 變量解析(超局變量、變量的8種數據類型等)

ret each 回收 操作系統 js xml name static bject 單獨 常量特點 常量一旦被定義就無法更改或撤銷定義。 常量名不需要開頭的$ 與變量不同,常量貫穿整個腳本是自動全局的。 作用域不影響對常量的訪問 常量值只能是字符串或數字 設置 PHP

資深站長幹貨:小說網站從建立到盈利解析

網絡資源從2007年做站,剛好十年了。時間過得真快。因為自己是兼職做站,所以一直斷斷續續,也沒有什麽大的成績。做過地方論壇,電影站,股票站,文章站,小說站等,能嘗試的都嘗試了。學了很多東西,也浪費了不少時間,做為一種愛好,就這樣堅持下來了。從剛開始的虛擬主機,到後來的VPS,再到現在的獨立服務器;經歷過網站沒

Python 直接賦值、淺拷貝和深度拷貝解析

ima img 引入 對象的引用 print function 引用 輸出結果 ons 直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。 深拷貝(deepcopy): copy 模塊的 deepcopy 方法

java事務處理解析

成功 spa 做了 開發 overflow lan 進行 訪問 ksh 最近學習java事務,看到一位前輩的系列博客不錯,轉載過來作為記錄 轉載地址:http://www.davenkin.me/post/2013-02-16/40048284001 (一)Jav

Dagger2 使用解析

ember factor 控制器 oid 好處 人的 field 會有 幫我 Dagger2 使用全解析 Dagger是一個註入工具,何為註入,我們要生產一批機器人,每個機器人都有一個控制器,我們可以在機器人內部 new 出一個控制器: class Robot {

Android新特性介紹,ConstraintLayout完全解析

mat 區別 界面 -s 自己 解決 match roo pre 本篇文章的主題是ConstraintLayout。其實ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大會上重點宣傳的一個功能。我們都

【嵌入式】Arduino編程基礎到應用解析

接口 實現 關於 第一次 學習 wid 標誌位 解碼 post Arduino Author: Andrew.Du 基礎 基礎語法: setup() loop() pinMode(引腳,模式) pinMode(13,OUTPUT);

NGINX源碼安裝配置詳解(./configure),最解析

unzip roo without rpc服務 所有 googl 版本 並且 大文件 NGINX ./configure詳解 在"./configure"配置中,"--with"表示啟用模塊,也就是說這些模塊在編譯時不會自動構建&qu

Hadoop數據操作系統YARN解析

exe 結點 處理 滿足 apache 不同 容器 黑名單 registry   為了能夠對集群中的資源進行統一管理和調度,Hadoop 2.0引入了數據操作系統YARN。YARN的引入,大大提高了集群的資源利用率,並降低了集群管理成本。首先,YARN允

史上最解析!大數據在十大行業的應用

作用 方向 風險 追蹤 谷歌地圖 收集 合規 個人 所有 什麽是大數據?這次我們不談概念,不談理論,避虛就實,關註大數據在十大行業的實際應用。從證券行業到醫療領域,越來越多公司意識到大數據的重要性。2015年Gartner調查顯示,超過75%的公司正在投資或計劃在未來兩年內

DoTwe幸運28平臺搭建下載en解析(入門篇)

陌生 搭建 今天 入門 tween 幸運 開發人員 方式 開發 DoTween,Itw幸運28平臺搭建下載【征途源碼論壇zhengtuwl.com】聯系方式:QQ:2747044651幸運28平臺搭建下載een,這些名字作為一個Unity開發人員聽起來並不陌生,它們在動畫方

Android: 在native中訪問assets解析

lock mp4 cpp sets 這樣的 內容 jniexport opencl href 本文總結在Android Native C++開發中訪問APK中的assets資源的方法 在CMake中添加相關NDK LIB的 依賴 因為我們接下來用到的一些函數實現在NDK庫l

配置Spring項目上傳的兩種方式(解析

enc element xml配置 很多 files dir 前言 name 兩種 歡迎查看Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那麽本系列文章將帶您窺探Java龐大的體系。本系列教程希望