Android Studio開發APP常用方法(一)
阿新 • • 發佈:2019-01-29
選擇選單,彈出子選單,點選選項跳轉到新Activity
SubMenu prog = menu.addSubMenu("啟動程式");
prog.setHeaderTitle("選擇要啟動的程式");
MenuItem item = prog .add("設定");
item.setIntent(new Intent(this,SetActivity.class));
return super.onCreateOptionsMenu(menu);
直接彈出選項,點選選項跳轉到新Activity
// SubMenu prog = menu.addSubMenu("啟動程式"); // prog.setHeaderTitle("選擇要啟動的程式"); MenuItem item = menu.add("設定"); item.setIntent(new Intent(this,SetActivity.class)); return super.onCreateOptionsMenu(menu);
不同Switch狀態的toast顯示
Switch wlan=(Switch)super.findViewById(R.id.switch2); /*因為Switch元件繼承自CompoundButton,在程式碼中可以通過實現CompoundButton.OnCheckedChangeListener介面,並 實現其內部類的onCheckedChanged來監聽狀態變化。*/ wlan.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) Toast.makeText(getApplicationContext(), "開", Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicationContext(), "關", Toast.LENGTH_SHORT).show(); } });
彈出選單
public void tac() { AlertDialog.Builder jk = new AlertDialog.Builder(this); jk.setMessage("彈出"); jk.setNegativeButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfa ce, int i) { Toast.makeText(getApplicationContext(), "彈出選單點選了確定", Toast.LENGTH_SHORT).show(); } }); jk.setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(getApplicationContext(), "彈出選單點選了取消", Toast.LENGTH_SHORT).show(); } }); jk.create(); jk.show(); }
新增列表項
ListView mylist = (ListView)super.findViewById(R.id.listView);
BaseAdapter baseAdapter = new BaseAdapter() {
@Override
public int getCount() {
return 40;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
LinearLayout linearLayout = new LinearLayout(TextActivity.this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
ImageView imageView = new ImageView(TextActivity.this);
imageView.setImageResource(R.mipmap.ic_launcher);
TextView textView = new TextView(TextActivity.this);
textView.setText("第"+(i+1)+"列表項");
textView.setTextSize(20);
textView.setTextColor(Color.BLUE);
linearLayout.addView(imageView);
linearLayout.addView(textView);
return linearLayout;
}
};
mylist.setAdapter(baseAdapter);
底部向上彈出提示
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
不在MENU中跳轉Activity
Intent intent=new Intent(this,SetActivity.class);
startActivity(intent);
隱藏ActionBar
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
限制字元顯示的長度,並在字元後加省略號
文字過長顯示省略號或者跑馬燈效果
android:maxEms="6" //限制顯示的字元長度
android:singleLine="true" //單行顯示
android:ellipsize="end"//在結尾用省略號
TextView相關屬性設定
android:maxLines 設定文字的最大顯示行數,與width或者layout_width結合使用,超出部分自動換行,超出行數將不顯示。
android:minLines 設定文字的最小行數,與lines類似。
android:linksClickable 設定連結是否點選連線,即使設定了autoLink。
android:scrollHorizontally 設定文字超出TextView的寬度的情況下,是否出現橫拉條。
android:textSize 設定文字大小,推薦度量單位”sp”,如”15sp”
android:textStyle 設定字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設定一個或多個,用“|”隔開
android:typeface 設定文字字型,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字型) 3]
android:height 設定文字區域的高度,支援度量單位:px(畫素)/dp/sp/in/mm(毫米)
android:maxHeight 設定文字區域的最大高度
android:minHeight 設定文字區域的最小高度
android:minHeight 設定文字區域的最小高度
android:width 設定文字區域的寬度,支援度量單位:px(畫素)/dp/sp/in/mm(毫米),與layout_width的區別看這裡。
android:maxWidth 設定文字區域的最大寬度
android:minWidth 設定文字區域的最小寬度
match_parent和wrap_parent
/match_parent/: match—->使等同於,parent—->父母,所以,可以從單詞上去理解,它就是強制性的使它的大小等同於父控制元件,父控制元件多大,他就多大。
/wrap_content/: wrap—->包(著),content—->內容,單詞意思上去理解,這個屬性就是讓這個屬性包著內容,轉譯過來,就是使這個屬性和內容的大小剛好。
include的作用
使用<include>可以在多個介面複用一個佈局
官方文件說:如果想在 include 標籤中使用 layout屬性,那麼必須得在include 中包含 android:layout_height 和 android:layout_width,否則其它layout 屬性 不會生效!
LinearLayout屬性
gravity 這個英文單詞是重心的意思,在這裡就表示停靠位置的意思。
android:layout_gravity 和 android:gravity 的區別
從名字上可以看到,android:gravity是對元素本身說的,元素本身的文字顯示在什麼地方靠著換個屬性設定,不過不設定預設是在左側的。
android:layout_gravity是相對與它的父元素說的,說明元素顯示在父元素的什麼位置。
比如說button:android:layout_gravity 表示按鈕在介面上的位置。 android:gravity表示button上的字在button上的位置。
Spinner使用
android:entries="@array/citys"
citys是一個array,在values下的一個.xml檔案中定義的
使用array,不是arrays,不是.xml檔案的名,只是array而已
多個Spinner聯動
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
第二個引數是Spinner未展開選單時Spinner的預設樣式,android.R.layout.simple_spinner_item是系統自帶的內建佈局。
sppro = (Spinner)super.findViewById(R.id.spinner);
spcity = (Spinner)super.findViewById(R.id.spinner2);
String[] proItems = getResources().getStringArray(R.array.pro);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,proItems);
// = ArrayAdapter.createFromResource(DisplayActivity.this,R.array.pro,R.layout.support_simple_spinner_dropdown_item);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
sppro.setAdapter(arrayAdapter);
sppro.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Spinner spinner = (Spinner)adapterView;
String prostr = (String)spinner.getItemAtPosition(i);
ArrayAdapter<CharSequence> cityadapter =
ArrayAdapter.createFromResource(DisplayActivity.this,R.array.shangdong,R.layout.support_simple_spinner_dropdown_item);
if(prostr.equals("山東省"))
{
cityadapter = ArrayAdapter.createFromResource(DisplayActivity.this,R.array.shangdong,R.layout.support_simple_spinner_dropdown_item);
Toast.makeText(getApplicationContext(), "選擇了山東省", Toast.LENGTH_SHORT).show();
}
else if(prostr.equals("河北省"))
{
Toast.makeText(getApplicationContext(), "選擇了河北省", Toast.LENGTH_SHORT).show();
}
spcity.setAdapter(cityadapter);//重要的一步,不要忘了
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
主題
<color name="colorPrimary">#3F51B5</color> //ActionBar的顏色
<color name="colorPrimaryDark">#303f9f</color> //ActionBar上面狀態列的顏色
<color name="colorAccent">#ff4081</color>
修改RadioGroup的縱橫佈局
android:orientation="horizontal"
彈出日期選擇視窗
final TextView datepickedit = (TextView)super.findViewById(R.id.datetextview);
//final EditText datepickedit = (EditText)super.findViewById(R.id.datepickedit);
datepickedit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendardate = Calendar.getInstance();
DatePickerDialog datePicker = new DatePickerDialog(DisplayActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int date) {
calendardate.set(year,month,date);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");//轉型
Toast.makeText(getApplicationContext(), format.format(calendardate.getTime()), Toast.LENGTH_LONG).show();
datepickedit.setText(format.format(calendardate.getTime()));
}
},calendardate.get(Calendar.YEAR),calendardate.get(Calendar.MONTH),calendardate.get(Calendar.DAY_OF_MONTH));
datePicker.show();
}
});
彈出時間選擇視窗
TextView timetextview1 = (TextView)super.findViewById(R.id.timetextview1);
TextView timetextview2 = (TextView)super.findViewById(R.id.timetextview2);
timetextview1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendartime1 = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(DisplayActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
calendartime1.set(Calendar.HOUR_OF_DAY,i);
calendartime1.set(Calendar.MINUTE,i1);
SimpleDateFormat format = new SimpleDateFormat("hh-mm");//轉型
Toast.makeText(getApplicationContext(), format.format(calendartime1.getTime()), Toast.LENGTH_LONG).show();
datepickedit.setText(format.format(calendartime1.getTime()));
}
},calendartime1.get(Calendar.HOUR_OF_DAY),calendartime1.get(Calendar.MINUTE),true);
timePickerDialog.show();
}
});
timetextview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar calendartime1 = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(DisplayActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
calendartime1.set(Calendar.HOUR_OF_DAY,i);
calendartime1.set(Calendar.MINUTE,i1);
SimpleDateFormat format = new SimpleDateFormat("hh-mm");//轉型
Toast.makeText(getApplicationContext(), format.format(calendartime1.getTime()), Toast.LENGTH_LONG).show();
datepickedit.setText(format.format(calendartime1.getTime()));
}
},calendartime1.get(Calendar.HOUR_OF_DAY),calendartime1.get(Calendar.MINUTE),true);
timePickerDialog.show();
}
});
檢查文字框是否為空
EditText nameedit = (EditText)DisplayActivity.super.findViewById(R.id.nameedit);
String name = nameedit.getText().toString();
if(TextUtils.isEmpty(nameedit.getText()))
{
Snackbar.make(view, "姓名不能為空", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}