編輯:關於Android編程
谷歌在推出Android4.0的同時推出了一些新控件,Android4.0中最常用的新控件有下面5種。
Switch顧名思義,就是開關的意思,有開和關兩種狀態。
當Switch處於關閉狀態時:
當Switch處於打開狀態時:
android:textOff
屬性表示Switch關閉時顯示的文本 android:textOn
屬性表示Switch打開時顯示的文本
mSwitch= (Switch) findViewById(R.id._switch);
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Log.i("Switch","打開Switch");
}else{
Log.i("Switch","關閉Switch");
}
}
});
Space顧名思義是空間的意思,表示該控件占據一定的空間,但是卻不顯示任何東西。
GridLayout是指網格布局,GridLayout是為了彌補TableLayout的一些不足而推出來的。
- TableLayout不能同時在水平和垂直兩個方向上對齊,因為TableLayout繼承LinearLayout。
- TableLayout中的元素不能跨行或者跨列,因為TableLayout不能明確指出占多少行和多少列。
GridLayout中元素常用的屬性
android:layout_row : 固定顯示在第幾行。 android:layout_column : 固定顯示在第幾列 android:layout_rowSpan : 跨幾行 android:layout_columnSpan: 跨幾列
PopupMenu顧名思義是彈出菜單,它可以在一個控件的下面顯示彈出菜單。
在menu資源目錄下面新建一個菜單的xml文件
public void openPopupMenu(View view){
//popupMenu顯示在view下面
PopupMenu popupMenu=new PopupMenu(this,view);
//從xml文件中加載菜單到popupMenu中
popupMenu.inflate(R.menu.popup_menu);
//顯示 popupMenu
popupMenu.show();
}
TextureView是SurfaceView的補充,它不像SurfaceView一樣創建特殊的窗口,它創建一個常規的View,TextureView可以設置移動,旋轉,動畫等。
一個Textureview可以用來顯示內容流。這樣的內容流可以是視頻或OpenGL場景。內容流可以來自於應用程序的進程以及遠程進程。Textureview只能用於硬件加速的窗口。當渲染軟件,Textureview什麼都不會畫。
使用Textureview很簡單:你需要做的就是得到它的SurfaceTexture。然後,SurfaceTexture可用於呈現內容。
下面的示例演示如何渲染相機預覽到Textureview:
因為使用了相機,所以要在添加AndroidManifest.xml 文件中添加對應的權限
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener{
private TextureView mTexture;
private Camera mCamera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTexture= (TextureView) findViewById(R.id.texture_view);
//為mTexture設置表面結構監聽器
mTexture.setSurfaceTextureListener(this);
}
/**
* TextureView的SurfaceTexture准備開始用
*/
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mCamera = Camera.open();
try {
//設置mCamera的表面結構為surface
mCamera.setPreviewTexture(surface);
//啟動相機預覽
mCamera.startPreview();
//設置mTexture透明度
mTexture.setAlpha(1.0f);
//設置mTexture旋轉角度
mTexture.setRotation(90.0f);
} catch (IOException ioe) {
// Something bad happened
}
}
/**
* SurfaceTexture的緩存大小改變了
*/
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
/**
* SurfaceTexture銷毀了
*/
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mCamera.stopPreview();
mCamera.release();
return true;
}
/**
* SurfaceTexture更新了
*/
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
}
xml文件中TextureView是這樣定義的
注意:TextureView設置旋轉90度才是我們的正常視角。
為了方便學習,本人將這5個新控件放到一個Activity中進行使用。
程序原始界面講解
說明:這裡是借鑒:曉風殘月前輩的博客,他是將泰然網的跑酷教程,用cocos2d-x 2.X 版本重寫的,目前我正在學習cocos2d-X3.0 於是就用cocos2d-
生成的Android應用APK文件最好進行優化,因為APK包的本質是一個zip壓縮文檔,經過優化
一對一雙向關聯映射(六)上篇博文一對一單向關聯映射(五),我們介紹了一對一的單向關聯映射,單向是指只能從人(Person)這端加載身份證端(IdCard),但是反過來,不
最近在做一個Android的新聞客戶端,感覺收獲頗豐。這裡分享一下Volley獲取網絡數據的方法Volley是Google I/O 2013推出的網絡通信庫,它的拓展性很