最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開(kāi)發(fā)高仿課程表的布局實(shí)例詳解

 更新時(shí)間:2016年10月14日 10:37:42   作者:起風(fēng)的早晨  
這篇文章主要介紹了Android開(kāi)發(fā)高仿課程表的布局實(shí)例詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

先說(shuō)下這個(gè)demo,這是一個(gè)模仿課程表的布局文件,雖然我是個(gè)菜鳥(niǎo),但我還是想留給學(xué)習(xí)的人一些例子,先看下效果

這里寫(xiě)圖片描述 

然后再來(lái)看一下我們學(xué)校的app

這里寫(xiě)圖片描述

布局分析

先上一張劃分好了的布局圖

首先整個(gè)頁(yè)面放在一個(gè)LinearLayout布局下面,分為上面和下面兩個(gè)部分,下面一個(gè)是顯示課程表的詳細(xì)信息

1:這個(gè)沒(méi)什么好講的,就是直接一個(gè)LinearLayout布局,然后將控件一個(gè)TextView用來(lái)顯示年份,一個(gè)View用來(lái)當(dāng)作豎線,一個(gè)Spinner用來(lái)顯示選擇周數(shù)

2:這個(gè)是顯示星期幾的部件,是我自定義的View,自己重寫(xiě)onDraw方法,然后畫(huà)出七個(gè)字,代碼如下:

public void onDraw(Canvas canvas)
{
//獲得當(dāng)前View的寬度
int width = getWidth();
int offset = width / 8;
int currentPosition = offset;
//設(shè)置要繪制的字體
mPaint.setTypeface(Typeface.create(Typeface.DEFAULT_BOLD, Typeface.BOLD));
mPaint.setTextSize(30);
mPaint.setColor(Color.rgb(0, 134, 139));
for(int i = 0; i < 7 ; i++)
{
//圈出當(dāng)前的日期
if( day == i)
{
System.out.println("畫(huà)出當(dāng)前的日期!");
}
canvas.drawText(days[i], currentPosition, 30, mPaint);
currentPosition += offset;
}
//調(diào)用父類(lèi)的繪圖方法
super.onDraw(canvas);
}

3:這個(gè)也是一個(gè)LinearLayout,直接手寫(xiě)布局,將寫(xiě)出來(lái)的,將LinearLayout的orientation 屬性設(shè)置為vertical 。

4:這是一個(gè)GridView ,然后自己繼承BaseAdapter 填充內(nèi)容,下面放上布局的xml文件

<?xml version="1.0" encoding="utf-8"?>
<!--模仿課程表的界面-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--顯示時(shí)間-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white">
<TextView
android:id="@+id/year"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginLeft="20dp"
android:textSize="20dp"
android:text="2016年"/>
<!--豎線-->
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="#00FFFF"
/>
<!--下拉方式選周數(shù)-->
<Spinner
android:id="@+id/switchWeek"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_gravity="center"
/>
</LinearLayout>
<!--分隔線-->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#00FF7F"/>
<!--顯示星期-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@android:color/white">
<cn.karent.demo.UI.WeekTitle
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="10dp"/>
</LinearLayout>
<!--顯示課表詳細(xì)信息-->
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--顯示多少節(jié)課-->
<LinearLayout
android:layout_width="25dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="92dp"
android:text="一"
android:textSize="10dp"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="92dp"
android:textSize="12dp"
android:text="二"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="92dp"
android:textSize="12dp"
android:text="三"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="92dp"
android:textSize="12dp"
android:text="四"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="92dp"
android:textSize="12dp"
android:text="五"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="92dp"
android:textSize="12dp"
android:text="六"
android:gravity="center"/>
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#E5E5E5"/>
<GridView
android:id="@+id/courceDetail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="7"
android:horizontalSpacing="1dp"
android:verticalSpacing="1dp"
android:stretchMode="columnWidth"
android:background="#E5E5E5">
</GridView>
</LinearLayout>
</ScrollView>
</LinearLayout>

下面是GridView的適配器代碼:

public class MyAdapter extends BaseAdapter {
private Context mContext;
//保存內(nèi)容的內(nèi)部數(shù)組
private List<String> content;
public MyAdapter(Context context, List<String> list) {
this.mContext = context;
this.content = list;
}
public int getCount() {
return content.size();
}
public Object getItem(int position) {
return content.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
if( convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.grib_item, null);
}
TextView textView = (TextView)convertView.findViewById(R.id.text);
//如果有課,那么添加數(shù)據(jù)
if( !getItem(position).equals("")) {
textView.setText((String)getItem(position));
textView.setTextColor(Color.WHITE);
//變換顏色
int rand = position % 7;
switch( rand ) {
case 0:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.grid_item_bg));
break;
case 1:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_12));
break;
case 2:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_13));
break;
case 3:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_14));
break;
case 4:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_15));
break;
case 5:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_16));
break;
case 6:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_17));
break;
case 7:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_18));
break;
}
}
return convertView;
}
}

下面來(lái)慢慢解釋一下,首先,要自定義適配器必須要繼承一個(gè)Adapter,這里我們從BaseAdapter繼承,繼承之后必須要重寫(xiě)getCount(),getItem(int),getItemId(int),getView(int,View,ViewGroup) 這些方法必須要重寫(xiě),最主要的就是重寫(xiě)getView() 這個(gè)方法,因?yàn)檫@個(gè)方法返回的是一個(gè)View,那么就是GridView的每一個(gè)子item的布局。

convertView=LayoutInflater.from(mContext).inflate(R.layout.grib_item, null);

這一行代碼是加載布局文件并返回一個(gè)View

if( !getItem(position).equals("")) {
textView.setText((String)getItem(position));
textView.setTextColor(Color.WHITE);
//變換顏色
int rand = position % 7;
switch( rand ) {
case 0:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.grid_item_bg));
break;
case 1:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_12));
break;
case 2:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_13));
break;
case 3:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_14));
break;
case 4:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_15));
break;
case 5:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_16));
break;
case 6:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_17));
break;
case 7:
textView.setBackground(mContext.getResources().getDrawable(R.drawable.bg_18));
break;
}
}

這里的代碼是判斷每一列然后實(shí)現(xiàn)更改view的背景,其中背景的代碼如下:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#75B7A0" />
<corners android:radius="3dip" />
</shape>

其他的類(lèi)似,還有就是item的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4FFF5EE">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:padding="2dp"
android:textSize="12dp"
android:gravity="center"/>
</RelativeLayout>

這個(gè)就是模仿課程表的布局,最后附上源碼Git地址:點(diǎn)我下載

以上所述是小編給大家介紹的android開(kāi)發(fā)高仿課程表的布局實(shí)例詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

桃园市| 虹口区| 枞阳县| 延长县| 正镶白旗| 德保县| 永川市| 万州区| 菏泽市| 清远市| 鄱阳县| 同江市| 广州市| 固镇县| 荔浦县| 莲花县| 竹北市| 綦江县| 台中县| 侯马市| 东宁县| 马鞍山市| 石楼县| 平江县| 山西省| 临高县| 沁水县| 庆元县| 将乐县| 武定县| 梅河口市| 大城县| 卫辉市| 沾化县| 赤水市| 武强县| 苗栗市| 德格县| 太保市| 巴塘县| 政和县|