android基類
⑴ android中創建片段基類繼承framelayout後不用返回當前頁面嗎
屏幕切換指的是在同一個Activity內屏幕見的切換,最長見的情況就是在一FrameLayout內有多個頁面,比如一個系統設置頁面;一個個性化設置頁面。
通過查看OPhone API文檔可以發現,有個android.widget.ViewAnimator類繼承至FrameLayout,ViewAnimator類的作用是為FrameLayout裡面的View切換提供動畫效果。該類有如下幾個和動畫相關的函數:
setInAnimation:設置View進入屏幕時候使用的動畫,該函數有兩個版本,一個接受單個參數,類型為android.view.animation.Animation;一個接受兩個參數,類型為Context和int,分別為Context對象和定義Animation的resourceID。
java代碼:
setOutAnimation: 設置View退出屏幕時候使用的動畫,參數setInAnimation函數一樣。
showNext: 調用該函數來顯示FrameLayout裡面的下一個View。
showPrevious: 調用該函數來顯示FrameLayout裡面的上一個View。
復制代碼
一般不直接使用ViewAnimator而是使用它的兩個子類ViewFlipper和ViewSwitcher。ViewFlipper可以用來指定FrameLayout內多個View之間的切換效果,可以一次指定也可以每次切換的時候都指定單獨的效果。該類額外提供了如下幾個函數:
java代碼:
isFlipping: 用來判斷View切換是否正在進行
setFilpInterval:設置View之間切換的時間間隔 ...
⑵ android 網路請求要進行封裝基類么
實例代碼: // 封裝的ajax網路請求函數 // obj 是一個對象 function AJAX(obj){ //跨域請求 if (obj.dataType == "jsonp") { //在這里 callback 必須是全局變數 保證函數消失的時候 這個變數不可以被銷毀 //處理一下函數名(防止多個網路請求 函數名字相同 出現紊亂的情況) var hehe = "callBack" + "_" + new Date().getTime() + "_" + String(Math.random()).replace(".",""); window[hehe] = obj.success; //創建 script標簽 var sc = document.createElement("script"); sc.src = obj.url + "?" + "cb=" + hehe; console.log(sc.src); document.body.appendChild(sc); document.body.removeChild(sc); return; } //1、創建 ajax 對象 var ajaxObj = null; if (window.XMLHttpRequest) { ajaxObj = new XMLHttpRequest(); }else{ ajaxObj = new ActiveXObject("Microsoft.XMLHTTP"); } //設置請求的類型 obj.type = obj.type.toUpperCase() "GET"; //如果是get請求 並且需要傳遞參數 則需要給 url 後面拼接參數 if (obj.type == "GET") { var arr = [];//定義數組 用於把對象存儲到數據裡面 for (var key in obj.data) { arr.push(key +"="+ obj.data[key]); } //用&分隔數組 讓其轉化為類似:name=lxl&age=18 的形式 var str = arr.join("&"); obj.url = obj.url +"?"+ str; //撥號 ajaxObj.open(obj.type,obj.url,true); //發送"name=123&age=18" ajaxObj.send(); }else{ var arr = [];//定義數組 用於把對象存儲到數據裡面 for (var key in obj.data) { arr.push(key +"="+ obj.data[key]); //console.log(arr); } //用&分隔數組 讓其轉化為類似:name=lxl&age=18 的形式 var str = arr.join("&"); //console.log(str); ajaxObj.open(obj.type,obj.url,true); ajaxObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajaxObj.send(str); } //監聽 ajaxObj.onreadystatechange = function(){ if (ajaxObj.readyState == 4) { if (ajaxObj.status >= 200 && ajaxObj.status < 300 ajaxObj.status == 304) { //請求成功 obj.success(ajaxObj.responseText); }else{ //請求失敗 obj.error(ajaxObj.status); } } } } 以上這篇關於ajax網路請求的封裝實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
⑶ android四大組件繼承哪個父類
Android四組件別activity、service、content provider、broadcast receiver 、android四組件詳解 1、activity (1)Activity通單獨屏幕(窗口) (2)Activity間通Intent進行通信 (3)android應用每Activity都必須要AndroidManifest.xml配置文件聲明否則系統識別執行該Activity 2、service (1)service用於台完用戶指定操作service兩種: (a)started(啟):應用程序組件(activity)調用startService()啟服務服務處於started狀態 (b)bound(綁定):應用程序組件調用bindService()綁定服務服務處於bound狀態 (2)startService()與bindService()區別: (a)started service(啟服務)由其組件調用startService()啟導致服務onStartCommand()調用服務started狀態其命周期與啟組件關並且台限期運行即使啟服務組件已經銷毀服務需要完任務調用stopSelf()停止或者由其組件調用stopService()停止 (b)使用bindService()啟用服務調用者與服務綁定起調用者旦退服務終止求同必須同死特點 (3)發員需要應用程序配置文件聲明全部service使用標簽 (4)Service通位於台運行般需要與用戶交互Service組件沒圖形用戶界面Service組件需要繼承Service基類Service組件通用於其組件提供台服務或監控其組件運行狀態 3、content provider (1)android平台提供Content Provider使應用程序指定數據集提供給其應用程序其應用通ContentResolver類該內容提供者獲取或存入數據 (2)需要應用程序間共享數據才需要內容提供者例通訊錄數據應用程序使用且必須存儲內容提供者處統數據訪問式 (3)ContentProvider實現數據共享ContentProvider用於保存獲取數據並使其所應用程序見同應用程序間共享數據唯式android沒提供所應用共同訪問公共存儲區 (4)發員直接使用ContentProvider類象數通ContentResolver象實現ContentProvider操作 (5)ContentProvider使用URI唯標識其數據集URIcontent://作前綴表示該數據由ContentProvider管理 4、broadcast receiver (1)應用使用外部事件進行濾興趣外部事件(電呼入或者數據中國絡用)進行接收並做響應廣播接收器沒用戶界面啟activity或serice響應收信息或者用NotificationManager通知用戶通知用種式吸引用戶注意力例閃背燈、震、播放聲音等般說狀態欄放持久圖標用戶打並獲取消息 (2)廣播接收者注冊兩種別程序態注冊AndroidManifest文件進行靜態注冊 (3)態注冊廣播接收器特點用注冊Activity關掉廣播失效靜態注冊需擔憂廣播接收器否關閉要設備啟狀態廣播接收器打著說哪怕app本身未啟該app訂閱廣
⑷ android怎麼用基類控制標題欄
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_titlebar"
android:layout_width="match_parent"
android:layout_height="52dp"
android:background="#ed4255" >
<TextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:ellipsize="marquee"
android:gravity="center_horizontal|center"
android:singleLine="true"
android:text="標題欄"
android:textColor="#ffffffff"
android:textSize="20dp" />
<TextView
android:id="@+id/button_backward"
android:layout_width="60dp"
android:layout_height="match_parent"
android:drawableLeft="@drawable/back_arrow"
android:drawablePadding="6dp"
android:ellipsize="end"
android:gravity="center"
android:paddingLeft="5dp"
android:singleLine="true"
android:text="返回"
android:textColor="#ffffffff"
android:textSize="18dp"
android:visibility="invisible" />
<TextView
android:id="@+id/button_forward"
android:layout_width="60dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:drawablePadding="6dp"
android:ellipsize="end"
android:gravity="center"
android:paddingLeft="5dp"
android:singleLine="true"
android:text="提交"
android:textColor="#ffffffff"
android:textSize="18dp"
android:visibility="invisible" />
</RelativeLayout>
⑸ 選題android對話框的基類是什麼 a,infodialog b,alertdialog c,dialog d,sysdi
是dialog
Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示對話框、進度對話框、時間選擇對話框、日期選擇對話框
⑹ android 有沒有基類的概念
有啊,不過在android裡面我們叫父類或者抽象類
⑺ android 怎麼在基類里操作控制項
我們另外寫一個Activity的基類BaseActivity,這個類也是繼承自FinalActivity,而且在這個基類裡面我們可以實現一些公共的方法,這樣其他的Activity繼承自我們這個BaseActivity基類,既可以使用FinalActivity裡面封裝好的方法,也可以使用我們在BaseActivity裡面擴展的一些公共的方法。如果我們再抽象一層的話,我們可以把這些公共的方法抽象到一個介面裡面,然後我們的BaseActivity實現這個介面,這樣也可以實現程序的擴展。
下面貼一些我整理的一些代碼
首先是抽象出來的一個Activity的介面
/**
* Activity的支持類介面,主要定義了Activity中常用的功能
*
* @Package com.example.myallutils
*
* TODO
* @author ZhaoKaiQiang
*
* @time 2014年5月7日
*/
public interface IBaseActivity {
/**
* 獲取Application對象
*
* @return
*/
public abstract Application getApplication();
/**
* 開啟服務
*/
public abstract void startService();
/**
* 停止服務
*/
public abstract void stopService();
/**
* 判斷是否有網路連接,若沒有,則彈出網路設置對話框,返回false
*
* @return
*/
public abstract boolean validateInternet();
/**
*
* 判斷是否有網路連接,沒有返回false
*
*/
public abstract boolean hasInternetConnected();
/**
* 退出應用
*/
public abstract void isExit();
/**
* 判斷GPS是否已經開啟.
*
* @return
*/
public abstract boolean hasLocationGPS();
/**
* 判斷基站是否已經開啟.
*/
public abstract boolean hasLocationNetWork();
/**
* 檢查內存卡.
*/
public abstract void checkMemoryCard();
/**
* 獲取進度條.
*
* @return
*/
public abstract ProgressDialog getProgressDialog();
/**
* 返回當前Activity上下文.
*/
public abstract Context getContext();
/**
* 獲取當前登錄用戶的SharedPreferences配置.
*/
public SharedPreferences getLoginUserSharedPre();
/**
* 用戶是否在線(當前網路是否重連成功)
*/
public boolean getUserOnlineState();
/**
* 設置用戶在線狀態 true 在線 false 不在線
*
* @param isOnline
*/
public void setUserOnlineState(boolean isOnline);
/**
*
* 發出Notification的method.
*
* @param iconId
* 圖標
* @param contentTitle
* 標題
* @param contentText
* 內容
* @param activity
*/
public void PushNotification(int iconId, String contentTitle,
String contentText, Class<?> activity, String from);
}
下面是對這個介面的實現,是所有Activity的基類
/**
* Activity的基類,實現了IActivitySupport介面
*
* @Package com.example.myallutils
*
* TODO
* @author ZhaoKaiQiang
*
* @time 2014年5月7日
*/
public abstract class BaseActivity extends FinalActivity implements
IBaseActivity {
protected Context mContext = null;
protected SharedPreferences preferences;
protected MyApplication myApplication;
protected ProgressDialog pg = null;
protected NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
preferences = getSharedPreferences("TAG", 0);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
pg = new ProgressDialog(mContext);
myApplication = (MyApplication) getApplication();
}
/**
* 初始化頁面布局
*/
abstract void iniView();
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public ProgressDialog getProgressDialog() {
return pg;
}
/**
* 在這里開啟所有需要開啟的服務
*/
@Override
public void startService() {
}
/**
* 在這里關閉所有需要開啟的服務
*/
@Override
public void stopService() {
}
/**
* 停止服務並結束所有的Activity退出應用
*/
@Override
public void isExit() {
new AlertDialog.Builder(mContext).setTitle("確定退出嗎?")
.setNeutralButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
stopService();
myApplication.exit();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).show();
}
/**
* 判斷是否有網路連接,沒有返回false
*/
@Override
public boolean hasInternetConnected() {
ConnectivityManager manager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager != null) {
NetworkInfo network = manager.getActiveNetworkInfo();
if (network != null && network.isConnectedOrConnecting()) {
return true;
}
}
return false;
}
/**
* 判斷是否有網路連接,若沒有,則彈出網路設置對話框,返回false
*/
@Override
public boolean validateInternet() {
ConnectivityManager manager = (ConnectivityManager) mContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager == null) {
openWirelessSet();
return false;
} else {
NetworkInfo[] info = manager.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
openWirelessSet();
return false;
}
/**
* 判斷GPS定位服務是否開啟
*/
@Override
public boolean hasLocationGPS() {
LocationManager manager = (LocationManager) mContext
.getSystemService(Context.LOCATION_SERVICE);
if (manager
.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
return true;
} else {
return false;
}
}
/**
* 判斷基站定位是否開啟
*/
@Override
public boolean hasLocationNetWork() {
LocationManager manager = (LocationManager) mContext
.getSystemService(Context.LOCATION_SERVICE);
if (manager
.isProviderEnabled(android.location.LocationManager.NETWORK_PROVIDER)) {
return true;
} else {
return false;
}
}
/**
* 檢查內存卡可讀
*/
@Override
public void checkMemoryCard() {
if (!Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
new AlertDialog.Builder(mContext)
.setTitle("檢測內存卡")
.setMessage("請檢查內存卡")
.setPositiveButton("設置",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
Intent intent = new Intent(
Settings.ACTION_SETTINGS);
mContext.startActivity(intent);
}
})
.setNegativeButton("退出",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
}
}).create().show();
}
}
/**
* 打開網路設置對話框
*/
public void openWirelessSet() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext);
dialogBuilder
.setTitle("網路設置")
.setMessage("檢查網路")
.setPositiveButton("網路設置",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.cancel();
Intent intent = new Intent(
Settings.ACTION_WIRELESS_SETTINGS);
mContext.startActivity(intent);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
dialogBuilder.show();
}
/**
* 關閉鍵盤
*/
public void closeInput() {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null && this.getCurrentFocus() != null) {
inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus()
.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
/**
*
* 發出Notification
*
* @param iconId
* 圖標
* @param contentTitle
* 標題
* @param contentText
* 你內容
* @param activity
*/
@SuppressWarnings("deprecation")
public void PushNotification(int iconId, String contentTitle,
String contentText, Class<?> activity, String to) {
// 創建新的Intent,作為點擊Notification留言條時, 會運行的Activity
Intent notifyIntent = new Intent(this, activity);
notifyIntent.putExtra("to", to);
// 創建PendingIntent作為設置遞延運行的Activity
PendingIntent appIntent = PendingIntent.getActivity(mContext, 0,
notifyIntent, 0);
/* 創建Notication,並設置相關參數 */
Notification myNoti = new Notification();
// 點擊自動消失
myNoti.flags = Notification.FLAG_AUTO_CANCEL;
/* 設置statusbar顯示的icon */
myNoti.icon = iconId;
/* 設置statusbar顯示的文字信息 */
myNoti.tickerText = contentTitle;
/* 設置notification發生時同時發出默認聲音 */
myNoti.defaults = Notification.DEFAULT_SOUND;
/* 設置Notification留言條的參數 */
myNoti.setLatestEventInfo(mContext, contentTitle, contentText,
appIntent);
/* 送出Notification */
notificationManager.notify(0, myNoti);
}
/**
* 返回上下文對象
*/
@Override
public Context getContext() {
return mContext;
}
/**
* 返回登錄用戶的SharedPreferences對象
*/
@Override
public SharedPreferences getLoginUserSharedPre() {
return preferences;
}
/**
* 獲取用戶在線狀態
*/
@Override
public boolean getUserOnlineState() {
return false;
}
/**
* 設置用戶在線狀態
*/
@Override
public void setUserOnlineState(boolean isOnline) {
}
}
⑻ android annotations 怎麼寫baseactivity 基類
這個要看實際應用用到的功能模塊來提取,首先基類必須是抽象類,然後裡麵包含抽象方法,讓子類去實現。
⑼ Android為什麼要創建Activity基類以及Activity基類中一般有哪些方法
1、創建基類的原因:根本原因就是要減少重復的代碼。
2、有哪些方法:比如你的每個activity上都要顯示時間,你就可以把這個做到基類里去。然後每個activity都繼承基類,就都有時間了不用各個都寫。所以基類里就是寫共用的方法。
這樣 的好處首先代碼量少了,第二維護的時候方便,比如時間出了問題,就只需要改基類就行了不用各個activity都改。
⑽ 安卓開發 有個例子不是很明白
這是安卓給控制項綁定事件的基本寫法,也是最簡單的方法,如果你控制項的事件比較少,可以直接這么寫,但是如果有很多個按鈕,你全寫一遍new OnclickListener(){xxxxx};這樣很容易出現代碼冗餘,就可以讓activity實現OnclickListener介面,重新Onclick事件,在裡面做switch判斷,button1.setOnclickListener(this);就可以這樣寫了。