Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android項目 之 來電管家(1) ----- 界面設計

android項目 之 來電管家(1) ----- 界面設計

編輯:關於Android編程

因為需要,最近幾天忙著寫來電管家這個小軟件,現在已經基本寫的差不多了,基本的功能也都已實現,就剩下後續的完善了,而之前的記事本項目最近幾天沒寫,但是肯定還是會完成的。

來電管家的基本功能,這裡主要做的是攔截。

1. 添加黑白名單

2. 選擇攔截模式

3. 啟用攔截時間段

4. 攔截開關

主要功能,就是通過用戶選擇開啟攔截,並選擇攔截模式,這時就會啟動後台監聽服務,監聽來電,判斷是否掛斷,並且,用戶可以自由選擇攔截時間段,也就是在該時間段內才啟用監聽服務。

先來看界面:

\\ \

從界面其實也可以看出,這裡主要應用了ActivityGroup和Activity的組合使用,以達到分頁標簽的作用,類似很多軟件,如QQ。

直接上代碼:

main.xml 這個就是ActivityGroup的布局文件,圖中的四個頁面就是四個Activity,就位於主布局文件中的LinearLayout容器中<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">

其中GridView用於放置頂部的分布菜單,ImageView就是圖中的虛線,而最下面的LinearLayout則是放置四個頁面的容器。

下面給出四個頁面的布局文件

黑白名單頁面布局文件 activity_add.xml



   
        

        
        
    
    
     
       
       

攔截記錄的布局文件activity_callInfo.xml



    
  

        
        
  
       
       

設置頁面的布局文件activity_setting.xml



	
	    
		
	
	
	
	    
		
	
	
	
	    
		
	
	
	
	
	
	
	
	
	
	
	
    

圖中設置頁面中的四周包圍的線,其實是用到了.9.png圖片。

布局文件就上面這幾個,那麼頂部的分頁菜單,及如何將四個Activity添加進ActivityGroup中。

1)頂部菜單的實現:

既然是GridView,當然要用適配器了,這裡用的是自定義BaseAdapter,如下:

package com.example.callmanager;


import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;


public class TabBarAdapter extends BaseAdapter {
	private Context mContext; 
	private TextView[] txtItems;
	private int selResId;
    public TabBarAdapter(Context c,int[] tabMenuId,int width,int height,int selResId) { 
        mContext = c; 
        this.selResId=selResId;
        txtItems=new TextView[tabMenuId.length];
        for(int i=0;i

接下來就是將自定義的Adapter與GridView進行綁定了,主要代碼如下(位於ActivityGroupDemo.java中):

	public GridView gvTopBar;
	private TabBarAdapter topImgAdapter;
	/** 頂部菜單 **/
  int[] topbar_menu_array = { R.string.black_list,R.string.white_list,
    R.string.call_info,
    R.string.setting };
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		gvTopBar = (GridView) this.findViewById(R.id.gvTopBar);
		gvTopBar.setNumColumns(topbar_menu_array.length);// 設置每行列數
		gvTopBar.setSelector(new ColorDrawable(Color.TRANSPARENT));// 選中的時候為透明色
		gvTopBar.setGravity(Gravity.CENTER);// 位置居中
		
		int width = this.getWindowManager().getDefaultDisplay().getWidth()
					/ topbar_menu_array.length;
		topImgAdapter = new TabBarAdapter(this, topbar_menu_array, width, 48,
				R.drawable.menu_background);
		gvTopBar.setAdapter(topImgAdapter);// 設置菜單Adapter
	}
	

這樣,頂部菜單的功能就已完成,並且,你點擊某個菜單時,會有選中時的效果,如圖中所示,這裡同樣使用的是.9.png圖片。

2)將四個Activity添加進ActivityGroup,並點擊相應的分布標簽,進入對應的activity,四個Activity的代碼不用多說,就是加載布局文件而已,主要看activityGroup中代碼:

	public LinearLayout container;// 裝載sub Activity的容器
	
	gvTopBar.setOnItemClickListener(new ItemClickEvent());// 項目點擊事件
	container = (LinearLayout) findViewById(R.id.Container);
    	SwitchActivity(0);//默認打開第0頁


	class ItemClickEvent implements OnItemClickListener {

		@SuppressLint("NewApi") public void onItemClick(AdapterView arg0, View arg1, int arg2,
				long arg3) {
			SwitchActivity(arg2);
			
		}
	}
	/**
	 * 根據ID打開指定的Activity
	 * @param id GridView選中項的序號
	 */
	void SwitchActivity(int id)
	{
		topImgAdapter.SetFocus(id);//選中項獲得高亮
		container.removeAllViews();//必須先清除容器中所有的View
		Intent intent =null;
		if (id == 0 ) 
			intent = new Intent(ActivityGroupDemo.this, BlackListActivity.class);
		
		else if (id == 1)
			intent = new Intent(ActivityGroupDemo.this,WhiteListActivity.class);
		else if (id == 2) 
			intent = new Intent(ActivityGroupDemo.this, CallInfo.class);
		else if (id == 3)
			intent = new Intent(ActivityGroupDemo.this, SettingActivity.class);
		
		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		//Activity 轉為 View
		Window subActivity = getLocalActivityManager().startActivity(
				"subActivity", intent);
		//容器添加View
		container.addView(subActivity.getDecorView(),
				LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
	}
	

其實,就是利用Intent跳轉頁面,並將viiew添加進窗口中。

至此,界面設計部分已完成。







  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved