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