2015年4月28日 星期二
【Android 】設定 SurfaceView 的背景及透明度
SurfaceView surfViewDraw = (SurfaceView) findViewById(R.id.surfVDraw);
surfViewDraw.setZOrderOnTop(true);
surfViewDraw.getHolder().setFormat(PixelFormat.TRANSLUCENT);
// surfViewDraw.setBackgroundResource(R.drawable.step_bg);
surfViewDraw.setBackgroundColor(0Xffffffff);
surHolder = surfViewDraw.getHolder();
2015年4月27日 星期一
【Android UI】使用ScrollView屬性fillViewport解決全螢幕問題
ScrollView 留白的問題,可以在ScrollView中的android:fillViewport屬性設置為true。
當ScrollView裡的元素想填滿ScrollView時,使用"fill_parent"是沒用的,必需為ScrollView設置:android:fillViewport="true"。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"
android:fillViewport="true"
android:scrollbars="vertical">
</ScrollView>
【Android UI】EditText 文字垂直置中, 位置置右
LinearLayout 有兩個非常相似的屬性:
- android:gravity
- android:layout_gravity
android:gravity屬性
是對該view中內容的限定.比如一個button上面的text,你可以設置該text相對於view的靠左或靠右等位置。android:layout_gravity屬性
是用來設置該view相對與父view 的位置,比如一個button在linearlayout裡,你想把該button放在linearlayout裡靠左、靠右等位置就可以通過該屬性設置。範例:
1. 利用android:gravity設定EditText內文字垂直置中
2. 利用android:layout_gravityy設定EditText置右
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文字置中, 位置置右"
android:gravity="center"
android:layout_gravity="right"/>
</LinearLayout>
【Android】Navigation drawer 顏色設定(Title, Menu)
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
<item name="windowActionBar">true</item>
<item name="android:windowNoTitle">true</item>
<item name="colorPrimary">@color/accent_material_dark</item>
<item name="colorPrimaryDark">@color/accent_material_light</item>
<item name="android:windowBackground">@color/dim_foreground_material_dark</item>
<item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
</resources>
【Android】取得手機螢幕的解析度
// 取得螢幕解析度
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int vWidth = dm.widthPixels;
int vHeight = dm.heightPixels;
// 顯示資訊
TextView tv = ((TextView) findViewById(R.id.showText));
tv.setText("寬:" + vWidth + ", 高:" + vHeight);
【Android】取得 Android 系統的 SDK 版本
在 Android 系統的設備資訊中,我們使用 android.os.Build 來取得系統的資訊。
若是想進一步的取得 SDK 版本的話,可以可透過 Build.VERSION 來取出詳細內容:
import android.os.Build;
// 目前開發代號;如果是 REL 表示是發佈版本
String codeName = Build.VERSION.CODENAME;
// 內部識別碼
String incremental = Build.VERSION.INCREMENTAL;
// 軟體版本
String release = Build.VERSION.RELEASE;
// SDK 版本
String sdk = Build.VERSION.SDK;
int sdk_int = Build.VERSION.SDK_INT;
【Android】取得 Android 系統的設備資訊
import android.os.Build;
// 主機版名稱
String board = Build.BOARD;
// 品牌名稱
String brand = Build.BRAND;
// CPU + ABI
String cpu = Build.CPU_ABI;
// 設備名稱
String device = Build.DEVICE;
// 版本號碼
String display = Build.DISPLAY;
// 設備識別碼
String fingerprint = Build.FINGERPRINT;
// HOST
String host = Build.HOST;
// 版本號碼
String id = Build.ID;
// 製造商
String manufacturer = Build.MANUFACTURER;
// 模組號碼
String model = Build.MODEL;
// 產品名稱
String product = Build.PRODUCT;
// 設備描述
String tags = Build.TAGS;
// 設備類別; user or eng
String type = Build.TYPE;
// USER
String user = Build.USER;
【Android】取得目前日期時間
Date d = new Date();
CharSequence s = DateFormat.format("yyyy-MM-dd hh:mm:ss", d.getTime());
2015年4月24日 星期五
【Android】 取得路徑目錄,判斷目錄是否存在並建立目錄
轉載 http://www.dotblogs.com.tw/merlin/archive/2012/04/12/71432.aspx
Environment 常用方法:
* 方法:getDataDirectory()
解釋:返回 File ,得到 Android 資料目錄。
* 方法:getDownloadCacheDirectory()
解釋:返回 File ,得到 Android 下載/緩存內容目錄。
* 方法:getExternalStorageDirectory()
解釋:返回 File ,得到外部儲存目錄即 SDCard
* 方法:getExternalStoragePublicDirectory(String type)
解釋:返回 File ,取一個高端的公用的外部儲存目錄來擺放某些類型的文件
* 方法:getExternalStorageState()
解釋:返回 File ,得到外部儲存設備的目前狀態
* 方法:getRootDirectory()
解釋:返回 File ,得到 Android 的根目錄
public void getSDPath(){
File sdDir = null;
File sdDir1 = null;
File sdDir2 = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED); //判斷sd記憶卡是否存在
if (sdCardExist)
{
sdDir = Environment.getExternalStorageDirectory();//得到根目錄
sdDir1 = Environment.getDataDirectory();
sdDir2 =Environment.getRootDirectory();
}
System.out.println("getExternalStorageDirectory(): "+sdDir.toString());
System.out.println("getDataDirectory(): "+sdDir1.toString());
System.out.println("getRootDirectory(): "+sdDir2.toString());
}
//判斷一個路徑下的文件(文件夾)是否存在
public class IsExist {
public static void main(String[] args) {
isExist("e:\\12");
}
/**
*
* @param path 文件夾路徑
*/
public static void isExist(String path) {
File file = new File(path);
//判斷文件夾是否存在,如果不存在則建立文件夾
if (!file.exists()) {
file.mkdir();
}
}
}
//在SD記憶卡上建立一個文件夾
public class make extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File sd=Environment.getExternalStorageDirectory();
String path=sd.getPath()+"/notes";
File file=new File(path);
if(!file.exists())
file.mkdir();
}
Environment 常用方法:
* 方法:getDataDirectory()
解釋:返回 File ,得到 Android 資料目錄。
* 方法:getDownloadCacheDirectory()
解釋:返回 File ,得到 Android 下載/緩存內容目錄。
* 方法:getExternalStorageDirectory()
解釋:返回 File ,得到外部儲存目錄即 SDCard
* 方法:getExternalStoragePublicDirectory(String type)
解釋:返回 File ,取一個高端的公用的外部儲存目錄來擺放某些類型的文件
* 方法:getExternalStorageState()
解釋:返回 File ,得到外部儲存設備的目前狀態
* 方法:getRootDirectory()
解釋:返回 File ,得到 Android 的根目錄
public void getSDPath(){
File sdDir = null;
File sdDir1 = null;
File sdDir2 = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED); //判斷sd記憶卡是否存在
if (sdCardExist)
{
sdDir = Environment.getExternalStorageDirectory();//得到根目錄
sdDir1 = Environment.getDataDirectory();
sdDir2 =Environment.getRootDirectory();
}
System.out.println("getExternalStorageDirectory(): "+sdDir.toString());
System.out.println("getDataDirectory(): "+sdDir1.toString());
System.out.println("getRootDirectory(): "+sdDir2.toString());
}
//判斷一個路徑下的文件(文件夾)是否存在
public class IsExist {
public static void main(String[] args) {
isExist("e:\\12");
}
/**
*
* @param path 文件夾路徑
*/
public static void isExist(String path) {
File file = new File(path);
//判斷文件夾是否存在,如果不存在則建立文件夾
if (!file.exists()) {
file.mkdir();
}
}
}
//在SD記憶卡上建立一個文件夾
public class make extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File sd=Environment.getExternalStorageDirectory();
String path=sd.getPath()+"/notes";
File file=new File(path);
if(!file.exists())
file.mkdir();
}
【Android】 ListView setAdapter has already been called 異常
這個不小心就會遇到, 有一篇寫得很好, 引用
http://blog.csdn.net/androiddevelop/article/details/8474939
ListView HeaderView使用過程中遇到的問題
必須在setAdapter之前執行addHeaderView方法,否則會出現以下異常
java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
【Android】如何加快 Android Studio 的編譯速度
1. android studio上配置gradle:
-Xmx4096m -XX:MaxPermSize=1024m
--parallel-threads=8
2.
項目下面有一個gradle.properties
加上這兩句話.
訂閱:
文章 (Atom)