1. 程式人生 > >Android Studio開發APP常用方法(一)

Android Studio開發APP常用方法(一)

選擇選單,彈出子選單,點選選項跳轉到新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();
                }