編輯:關於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添加進窗口中。
至此,界面設計部分已完成。
Android之PreferenceActivity應用詳解
為了引入這個概率 首先從需求說起 即:現有某Activity專門用於手機屬性設置 那麼應該如何做呢? 根據已學知識 很快一個念頭閃過 即:Activity + Prefe
太極越獄沒有蘋果驅動應該如何解決
有些在使用越獄工具的朋友反映,使用過程中會提示“沒有找到蘋果設備”,由於這個錯誤提醒導致越獄不能繼續進行。當遇到這種情況我們應該怎麼
解決Android SDK Manager下載太慢問題
在極客頭條上看到的方法,Mark一下,以後可能經常用到。1、打開android sdk manager2、打開tool->options,如圖所示https://&
小米筆記本Air配置一覽 小米筆記本Air完整配置說明
小米筆記本Air已經發布,在配置上有兩個版本,一款是13寸的高配版和12寸的輕薄款,具體的配置我們來看看。小米筆記本配置小米筆記本Air采用全金屬超輕薄設計