Android的UI設計

來源:互聯網
上載者:User

標籤:progress   get   can   適應   ext   style   amd   點擊   new   

一、Android控制項

1、TextView

  屬性:id、width、height、gravity(對齊)、textSize(文字大小)、textColor(文字顏色)

2、Button

  屬性:id、width、height...

  監聽器:setOnClickListener()

3、EditText

  屬性:id、width、height、hint、android.maxLines(超出部分)

  方法:getText()

4、ImageView

  屬性:id、width、height、src()

  方法:setImageResource()

5、ProgressBar

  屬性:id、width、height、style、max(最大值)

  方法:控制項可見與不可見:setVisibility(visible、invisible、gone)

6、AlertDialog

  方法:setTitle()、setMessage()、setCancelable(false)(不能通過back鍵取消)、setPositiveButton()、setNegatiButton()、show()

7、ProgressDialog

  方法:setTitle()、setMessage()、setCancelable()、show()

二、布局

1、LinerLayout

  屬性:orientation(當設定為方向是horizontal時,控制項寬度不能為match_parent)、layout_gravity、layout_weight

2、RelativeLayout

  屬性:layout_alignParentLeft/Top/Right/bottom、layout_centerInParent

3、FrameLayout

  所有控制項都在布局的左上方

4、TableLayout

  表格的方式排列控制項

  屬性:layout_span(佔據的空間)、stretchColumns(自動適應螢幕寬度)

三、自訂控制項

自訂布局

  步驟:1、建立布局

     2、在activity_main.xml中插入<include layout="@layout/布局名">即可引入自己建立的布局

     3、隱藏原系統中內建的布局

自訂控制項

  載入布局title

public class TitleLayout extends LinearLayout{  public TitleLayout(Context context,AttributeSet attrs){
    super(context,attrs);
    LayoutInflater.from(context).inflate(R.layout.title,this);  //動態載入布局title
  }}

  修改activity_main.xml

<com.example.uicustomviews.TitleLayout  amdroid:layout_width="match_parent"  android:layout_height="wrap_parent"  ></com.example.uicustomvices.TitleLayout>

四、ListView

  資料、構建適配器、控制項對象、設定適配器  

自訂ListView

  1、構建實體類

  2、自訂布局

  3、自訂配接器,extends ArrayAdapter,傳遞參數包括context、子項布局textViewResource和資料data

  4、重寫getView(),在getView()方法中調用getItem()獲得當前實體的執行個體,然後用LayoutInflater將子項載入到布局,擷取控制項對象,並調用setImageResource()和setText()顯示圖片和文字。

最佳化ListView

  1、避免重複載入布局

  convertView將載入好的布局進行緩衝,便於以後重用。

public View getView(int position,View convertView,ViewGroup parent){  Fruit fruit = getItem(positiong);
  View view;
  if(convertView == null){
    view = Layoutflater.from(getContext()).inflate(resourceId,null);
  }else{
    viwe = convertView;
  }
  ......}

  2、避免重複調用findViewById()

  藉助ViewHolder

......    ViewHolder viewHolder;
  if(convertView == null){
  view = LayoutInflater.from(getContext()).inflate(resourceId,null);
  viewHolder = new ViewHolder();
  viewHolder.fruitImage = (ImageView)findViewById(R.id.fruit_image);
  viewHolder.fruitName= (TextView)findViewById(R.id.fruit_name);
  view.setTag(viewHolder);  //將viewHolder儲存都view中。
}else{
  view = convertView;
  viewHolder = (ViewHolder)view.getTag();  //重獲viewHolder
}
viewHolder.fruitImage.setImageResuource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
ruturn view;
}
class ViewHolder{
  ImageView fruitImage;
  TextView fruitName;
}

事件監聽

  調用setOnItemClickListener()方法,重寫onItemClick(AdapterView<?>parent,View view,int position,long id)方法,通過position來判斷點擊的是哪個item。

 

Android的UI設計

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.