⑴ android 如和自定義選項菜單
監聽menu,就可以自己定義方法了.
⑵ eclipse android怎麼自定義底部tab菜單
實現自定義tab過程如下:
1.製作4個9patch的tab樣式,可參考android默認的資源
tab_unselected.9.png tab_selected.9.pngtab_press.9.pngtab_focus.9.png
這4個資源分別代表Tab的4種狀態。
2.定義Tab的selector樣式(就叫它tab_indicator.xml好了),將其放入drawable文件夾下,代碼如下:
xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" />
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" />
<item android:state_pressed="true" android:drawable="@drawable/tab_press" />
selector>
3.編寫indicator的布局文件(不妨也叫tab_indicator.xml),將其放入layout文件夾下,代碼如下:
xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="64dip"
android:layout_weight="1"
android:layout_marginLeft="-3dip"
android:layout_marginRight="-3dip"
android:orientation="vertical"
android:background="@drawable/tab_indicator">
<ImageView android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
/>
<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
style="?android:attr/tabWidgetStyle" mce_style="?android:attr/tabWidgetStyle"
/>
4.接下來就是在TabActivity中使用我們自己編寫的Tab樣式了:
// 首先獲取TabWidget
mTabHost = getTabHost();
LinearLayout ll = (LinearLayout)mTabHost.getChildAt(0);
TabWidget tw = (TabWidget)ll.getChildAt(0);
RelativeLayout tabIndicator1 = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.tab_indicator, tw, false);
TextView tvTab1 = (TextView)tabIndicator1.getChildAt(1);
tvTab1.setText("tab1");
mTabHot = mTabHost.newTabSpec("TAB_1")
.setIndicator(tabIndicator1)
.setContent(contentIntent);
⑶ android系統如何自定義選擇軟體安裝位置
安卓系統默認安裝位置是在手機內置的存儲空間當中。
如果要切換到SD卡,需要按以下步驟遷移:
打開自己的手機,找到設置界面。
然後找到「通用」,不同版本的手機安卓系統可能不一樣。然後找到"應用"程序列表。
在找到的應用程序列表裡面,選擇那些應用未自動安裝到SD卡裡面的應用程序,選擇「已安裝」。
然後在打開的程序列表裡面,選擇移動的應用程序,點擊查看詳情。
點擊「移動到SD卡」即可將程序文件成功移動到SD卡裡面,如果已經移動在SD卡了,這里會顯示移動了手機內存。
⑷ android選項卡
用viewpager實現的,你搜一下viewpager使用方法,就知道了。其實很簡單。微信的開屏動畫,也是靠這樣實現滑動的。
⑸ Android中想實現多個選項卡的切換,該如何實
Android中使用TabHost和TabWidget來實現選項卡功能。TabHost必須是布局的根節點,它包含兩個子節點:
TabWidget,顯示選項卡;
FrameLayout,顯示標簽內容。
實現選項卡功能有兩種方法,一種是將多個View放在同一個Activity中,然後使用使用標簽來進行切換。另一種是直接使用標簽切換不同的Activity。
後一種方法更為常用一些。
1. 創建一個工程,名字可以叫HelloTabWidget。
2. 創建多個不同的Activity,用來表示各個標簽頁中的不同內容。
3. 為標簽設計不同的icon。每個標簽應該有兩個icon,一個表示選中,一個未選中。將圖片放在 res/drawable/文件夾下。然後創建一個相應的
StateListDrawable,用來實現在選中和未選中直接自動的切換。
⑹ android中tab選項卡怎麼做
第一步
res/values/strings.xml
[xhtml] view plain
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MyTabActivity!</string>
<string name="app_name">選項卡Demo</string>
<string name="andy">Andy Rubin--<a href="http://lib.csdn.net/base/15" class='replace_word' title="undefined" target='_blank' style='color:#df3434; font-weight:bold;'>Android</a>的創造者</string>
<string name="bill">Bill Joy--java的創造者</string>
<string name="torvalds">Linus Torvalds --Linux之父</string>
</resources>
第二步
res/layout/tab_layout.xml
[xhtml] view plain
<?xml version="1.0" encoding="utf-8"?>
<!--
FrameLayout:一個FrameLayout對象好比一塊在屏幕上提前預定好的空白區域,
然後可以填充一些元素到里邊,比方說一張圖片等。
需要注意的是所有元素都被放置在FrameLayout區域的左上的區域,
而且無法為這些元素指定一個確切的位置。如果有多個元素,則後邊的會重疊在前一個元素上。
android:gravity用於設置View組件的對齊方式
(另外,android:layout_gravity用於設置Container組件的對齊方式)
center_horizontal 不改變控制項大小,對其到容器橫向中間位置(也就是在豎直方向的中間)
android:scaleType="fitXY" 把圖片不按比例來擴大或者縮小顯示
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/linearLayout1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
>
<ImageView
android:id="@+id/imageView01"
android:layout_gravity="center"
android:scaleType="fitXY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/andy"/>
<TextView
android:id="@+id/testView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dip"
android:text="@string/andy"
/>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout2"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
>
<ImageView
android:id="@+id/imageView02"
android:layout_gravity="center"
android:scaleType="fitXY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bill"/>
<TextView
android:id="@+id/testView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dip"
android:text="@string/bill"
/>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout3"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
>
<ImageView
android:id="@+id/imageView03"
android:layout_gravity="center"
android:scaleType="fitXY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/torvalds"/>
<TextView
android:id="@+id/testView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dip"
android:text="@string/torvalds"
/>
</LinearLayout>
</FrameLayout>
第三步
src/com/myandroid/tab/MyTabActivity.java
[java] view plain
package com.myandroid.tab;
import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class MyTabActivity extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost tabHost = this.getTabHost();
/*
* LayoutInflater的作用類似於 findViewById(),
* 不同點是LayoutInflater是用來找layout文件夾下的xml布局文件,並且實例化
* 註:findViewById()只是找控制項之類(如Button和EditView)
*
* LayoutInflater.from(this)獲得context實例
* 也就是相當於this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
* LAYOUT_INFLATER_SERVICE 取得xml里定義的view
*-----------------------------------------------------------------------
* getSystemService:
* 根據傳入的NAME來取得對應的Object,然後轉換成相應的服務對象
* android的後台運行在很多service,
* 它們在系統啟動時被SystemServer開啟,支持系統的正常工作,
* 比如MountService監聽是否有SD卡安裝及移除,ClipboardService提供剪切板功能,
* 應用程序可以通過系統提供的Manager介面來訪問這些Service提供的數據
*-----------------------------------------------------------------------
*
* inflate是把xml表述的layout轉化為View
* tabHost.getTabContentView() 獲得Tab標簽頁的FrameLayout
* true表示將inflate綁定到根布局元素上
*/
LayoutInflater.from(this)
.inflate(R.layout.tab_layout,
tabHost.getTabContentView(), true);
/*
* tabHost.newTabSpec("Tab1") 創建TabHost.TabSpec,
* TabSpec即是選項卡的指示符,對於TabSpec可以設置一個標題或者設置一個標題和圖標
* setIndicator 是為選項卡指示符指定一個標簽和圖標
* setContent 為選項卡的內容指定視圖的ID
*/
tabHost.addTab(
tabHost.newTabSpec("Tab1")
.setIndicator("Tab1", getResources().getDrawable(R.drawable.png1)
).setContent(R.id.linearLayout1)
);
tabHost.addTab(
tabHost.newTabSpec("Tab2")
.setIndicator("Tab2", getResources().getDrawable(R.drawable.png2)
).setContent(R.id.linearLayout2)
);
tabHost.addTab(
tabHost.newTabSpec("Tab3")
.setIndicator("Tab3", getResources().getDrawable(R.drawable.png3)
).setContent(R.id.linearLayout3)
);
}
}
第四步
AndroidManifest.xml
[xhtml] view plain
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myandroid.tab"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MyTabActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
附上出處鏈接:http://blog.csdn.net/jamesliulyc/article/details/6324432
⑺ android 如何想選項卡中添加按鈕和列表控制項
th.addTab(th.newTabSpec("綱手").setIndicator("木葉").setContent(R.id.a1));
setContent(R.id.a1));這個是想要載入的布局文件,在布局文件里設置按鈕等等就ok了
⑻ Android如何自定義Menu
新建自定義Menu————>TabMenu.java如下:
package com.ncw;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout.LayoutParams;
public class TabMenu extends PopupWindow {
private GridView gridView;
private LinearLayout mLayout;
public TabMenu(Context context, OnItemClickListener bodyClick, int colorBgTabMenu) {
super(context);
mLayout = new LinearLayout(context);
mLayout.setOrientation(LinearLayout.VERTICAL);
gridView = new GridView(context);
gridView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 選中的時候為透明色
gridView.setNumColumns(4);
gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
gridView.setVerticalSpacing(0);
gridView.setHorizontalSpacing(0);
gridView.setPadding(0, 0, 0, 0);
gridView.setGravity(Gravity.CENTER);
gridView.setOnItemClickListener(bodyClick);
mLayout.addView(gridView);
// 設置默認項
this.setContentView(mLayout);
this.setWidth(LayoutParams.FILL_PARENT);
this.setHeight(LayoutParams.WRAP_CONTENT);
this.setBackgroundDrawable(new ColorDrawable(colorBgTabMenu));// 設置TabMenu菜單背景
this.setFocusable(true);// menu菜單獲得焦點 如果沒有獲得焦點menu菜單中的控制項事件無法響應
}
public void SetBodySelect(int index, int colorSelBody) {
int count = gridView.getChildCount();
for (int i = 0; i < count; i++) {
if (i != index)
((LinearLayout) gridView.getChildAt(i))
.setBackgroundColor(Color.TRANSPARENT);
}
((LinearLayout) gridView.getChildAt(index))
.setBackgroundColor(colorSelBody);
}
public void SetBodyAdapter(MenuBodyAdapter bodyAdapter) {
gridView.setAdapter(bodyAdapter);
}
/**
* 自定義Adapter,TabMenu的每個分頁的主體
*
*/
static public class MenuBodyAdapter extends BaseAdapter {
private Context mContext;
private int[] resID;
/**
* 設置TabMenu的分頁主體
*
* @param context
* 調用方的上下文
* @param resID
*/
public MenuBodyAdapter(Context context, int[] resID) {
this.mContext = context;
this.resID = resID;
}
@Override
public int getCount() {
return resID.length;
}
public Object getItem(int position) {
return makeMenyBody(position);
}
public long getItemId(int position) {
return position;
}
private LinearLayout makeMenyBody(int position) {
LinearLayout result = new LinearLayout(this.mContext);
result.setOrientation(LinearLayout.VERTICAL);
result.setGravity(Gravity.CENTER_HORIZONTAL
| Gravity.CENTER_VERTICAL);
result.setPadding(0, 0, 0, 0);
ImageView img = new ImageView(this.mContext);
img.setBackgroundResource(resID[position]);
result.addView(img, new LinearLayout.LayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)));
return result;
}
public View getView(int position, View convertView, ViewGroup parent) {
return makeMenyBody(position);
}
}
}
?
1
使用自定義Menu————>testTabMenu.java
package com.ncw;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
public class testTabMenu extends Activity {
TabMenu.MenuBodyAdapter bodyAdapter = new TabMenu.MenuBodyAdapter(this,
new int[] { R.drawable.menu_01, R.drawable.menu_02,
R.drawable.menu_03, R.drawable.menu_04 });
TabMenu tabMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabMenu = new TabMenu(this, new BodyClickEvent(), R.drawable.menu_bg);// 出現與消失的動畫
tabMenu.update();
tabMenu.SetBodyAdapter(bodyAdapter);
}
class BodyClickEvent implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
tabMenu.SetBodySelect(arg2, Color.GRAY);
Log.i("Log", " BodyClickEvent implements OnItemClickListener "
+ arg2);
}
}
@Override
/**
* 創建MENU
*/
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("menu");// 必須創建一項
return super.onCreateOptionsMenu(menu);
}
@Override
/**
* 攔截MENU
*/
public boolean onMenuOpened(int featureId, Menu menu) {
if (tabMenu != null) {
if (tabMenu.isShowing())
tabMenu.dismiss();
else {
tabMenu.showAtLocation(findViewById(R.id.LinearLayout01),
Gravity.BOTTOM, 0, 0);
}
}
return false;// 返回為true 則顯示系統menu
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="自定義Menu————張亞龍" >
</TextView>
</LinearLayout>
運行效果圖:
⑼ Android之自定義控制項
一、簡單自定義控制項MyButton
每一個控制項都是一個java類,有對應的代碼,只要你能正確的編寫java代碼,那麼電腦培訓http://www.kmbdqn.cn/發現可以創造出符合你需求的控制項,即自定義控制項。
1.通過繼承的方式,創建自定義控制項
通過繼承一個現有的控制項,覆蓋其界面的呈現
通過繼承一個包含若乾子控制項的布局
通過繼承一個現有的控制項,覆蓋某個響應事件
繼承一個View來完整自定義一個心控制項
2.使你的自定義控制項繼承自某個最接近的Android控制項,必須是public
一般都會調用父類的構造方法,注意一般有三個構造方法
覆蓋原來控制項的方法,注意是否要再調用super中的方法
在XML中以類全名的方式引用此控制項
二、復雜自定義控制項MyLogin
需要設計包含一組控制項的自定義控制項就需要用到復雜的自定義控制項
1)使得你的自定義控制項繼承自某個接近的布局
2)正確的實現構造方法:構造方法中實例化目標布局,同時查找到各個子布局
3)添加相應的響應代碼來修改屬性,使得外部能訪問布局中的子控制項
4)在XML中以類全名的方式引用此控制項,完整的包名+類名。
⑽ Android studio怎麼自定義logcat提示信息
一、下載安裝 下載後,打開並將Android Studio拖動到Applications中去,拷貝完畢即可,可以到應用程序下將圖標拖動到Dock上。 二、新建工程 安裝完成後,選擇默認選項點擊OK即可: 進入Android Studio,開始界面和Xcode有點類似,點擊New project新建一個工程,新建過程和在Eclipse上差不多。 新建工程完畢後就進入了Android Studio主界面。第一次進去可能什麼也沒有,點擊箭頭所示按鈕目錄結構, 後可以看到Android Studio的目錄結構,和Eclipse的工程還是有一點區別的: 區別: 1.Android Studio的目錄結構本來就代表一個workspace,一個workspace裡面可以有Mole,可以將一個Mole理解成Eclipse中的一個Project; 2.目錄中將java代碼和資源文件(圖片、布局文件等)全部歸結為src,在src目錄下有一個main的分組,同時劃分出java和res兩個Group,res和Eclipse下的結構一樣,java下就是源碼的包和類文件; 3.新建文件方式的不同,右鍵選擇New或Command+N後出現新建菜單,類型有Java Class,也就是一般的java類,File就是普通文件,Package就是建包,值得注意的就是Android Component,它直接提供了Android中基本組件的創建。 可以選擇創建Android中不同類型的組件: 三、窗口布局及主題介紹 另外,主界面底部有一個名為Android的選項卡,打開可以看到DDMS中的設備信息和Logcat輸出: 頂部工具欄中可以看到和Eclipse中功能一樣的一個選項,這些相信大家都比較熟悉了: 最後需要說明的是,大家看到我的主界面是暗色風格,和Google演示的是一樣的風格,大家第一次使用打開的是默認風格(亮色),如果想要修改的話,進入Preferences(按Command+,)到IDE Settings下選擇Colors&font並設置Schema name為Darcula就可以設置成暗色風格,如果需要自己定義樣式,比如字體大小顏色等,可以新建一個Schema來自己定義 四、布局文件編寫(實時預覽) 最炫的功能要來了,實時編寫並預覽布局文件,此項功能著實大大提高開發效率,打開一個xml布局文件點擊右側Preview選項卡即可喚出預覽界面,可以選擇很多尺寸的手機進行預覽: 同時,還可以同時預覽多種不同型號和尺寸的設備,編寫代碼的同時適配多種機型,這不就是當初夢寐以求的嘛! 上面介紹了Android Studio的基本使用,包括安裝、新建工程、工程結構以及主題設置。下面介紹一些其他技巧,以及與Eclipse之前的一些對比。需要重申一下,我所有的操作與版本是基於Mac系統,在Windows上的同學基本類似,下面就分主題開始吧: 一、從Eclipse導入工程到Android Studio 根據官方的介紹,Android Studio可以兼容Eclipse的現有工程,但需要做一些操作: 首先升級ADT到最新版本,目前為版本號為22(注意和ADT相關的組件最好一並升級,避免後期可能出現的錯誤) 選擇需要從Eclipse導出的工程,右鍵選擇Export並選擇Android下的Generate Gradle Build Files 選擇完畢後並不會導出到其他地方,而是在本地工程生成了一個build.gradle文件,在Eclipse工程中也可以看到,這個文件是Android Studio識別的 3.隨後進入Android Studio並選擇Import Project,可以看到剛剛在Eclipse中的項目圖標變成了一個Android機器人圖標,說明轉換成功,這時候選擇工程導入即可: 至此,就完成了從Eclipse導入現有Android工程到Android Studio,現在可以開始對工程進行操作了! 二、Eclipse工程與Android Studio的區別 Eclipse工程可以導入Android Studio運行,而反過來在Android Studio建立的工程不能在Eclipse中運行; 二者的工程結構不一樣,在Eclipse中一個Project就代表一個項目工程,而在Android Studio中就和Intellij一樣,一個Project代表一個工作空間,相當於Eclipse中的workspace,而在Android Studio中一個Mole就相當於Eclipse中的一個Project,這個概念需要弄明白,不要混了或覺得糊塗了。 在編輯操作上,在Eclipse中編輯修改後必須手動command+s保存文件,而在Android Studio中就和Intellij一樣是自動保存的,這一點和第二點和Xcode也是類似的。 工程目錄上的區別,在Eclipse中src部分一般是java文件,res部分是資源文件,包括布局文件和多媒體資源等。在Android Studio中 包括java文件和資源文件全部放到了src目錄下,src目錄下包括一個main文件夾,再下面就是java文件夾和res文件夾,其實這里,java文件夾就相當於Eclipse中的src,res還是那個res,這里想起了本山老師的小品「src已經不是那個src了,res還是那個res」 三、真機運行以及常用快捷鍵 在Android Studio中點擊界面下方的Android選項卡可以看到Device信息和Logcat,連上設備後打開Android選項卡會檢測真機,成功後會顯示在Device中,點擊頂部的綠色小箭頭就可以開始運行工程了。有一點需要注意的是,運行時可以選擇模擬器也可以選擇真機,由於在Android Studio中運行工程的時候有一個Device優先順序選擇,如果不設置的話可能會出現只運行在模擬器上的現象,我們可以自行設置一下:先點擊Run菜單選擇Run Configuration,並選擇你想選擇的目標設備,可以是模擬器和真機,也可以在運行選由用戶選擇: 快捷鍵大家可以對照官方文檔進行熟悉,如下表,也可以自己修改配置選項進行自定義: 個人覺得Android Studio還是有一定的前景的,這里就需要Google不斷進行完善和改進了,趕緊把大家從Eclipse中解救出來吧。另外,在此期間,大家其實可以嘗試使用一下Intellij IDEA,這個默認也是集成Android開發環境的。Android Studio是基於前者改進而來,二者在使用上差不多,也是Eclipse的一個不錯的替代者。