Google Android SDK开发范例大全笔记 一

 

方法讲解

1 获取手机分辨率方法 DisplayMetrics

private void getDiaplayMetrics()
    {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        String strMetrics = "手机分辨率为:"+dm.widthPixels+" * "+dm.heightPixels;
        String strdm =" 手机屏幕信息:" + dm.toString();
        Log.d("panzqww",strMetrics);
        Log.d("panzqww",strdm);
    }

结果

手机分辨率为:720 * 1280
手机屏幕信息:DisplayMetrics{density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=320.0, ydpi=320.0}

2 startActivityForResult 方法

  • MainActivity中执行跳转到Activity_b
Intent intent = new Intent(MainActivity.this,Activity_b.class);
startActivityForResult(intent,REQUEST_CODE);
  • Activity_b中执行 将Activity_b finish掉返回到MainActivity
Intent intent = new Intent();
intent.putExtra("result","来自Activity b");
Activity_b.this.setResult(RESULT_CODE,intent);
Activity_b.this.finish();
  • MainActivity中onActivityResult接收到返回的数据
@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(data !=null)
    {
            String result = data.getExtras().getString("result");
            Log.d("panzqww","requestCode = " + requestCode + ", resultCode = " + resultCode + " , result = " + result);
        }
    }

 打印信息

requestCode = 256, resultCode = 512 , result = 来自Activity b

3 解析并获取asset目录下的 ttf字体样式

tv_show.setTypeface(Typeface.createFromAsset(getAssets(), "BinnerD.ttf"));

https://github.com/MichealPan9999/android_sdk_test

 4 menu菜单

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 0:
                openOptionDialogAbout();
                break;
            case 1:
                openOptionDialogExit();
                break;
        }
        return true;
    }

    private void openOptionDialogAbout() {
        new AlertDialog.Builder(this)
                .setTitle(R.string.about)
                .setMessage("版本号 V1.1.8")
                .setPositiveButton(R.string.confirm
                        , new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {

                            }
                        }).show();
    }
    private void openOptionDialogExit() {
        new AlertDialog.Builder(this)
                .setTitle(R.string.exit)
                .setMessage("确定要退出吗")
                .setPositiveButton(R.string.yes
                        , new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                finish();
                            }
                        })
                .setNegativeButton(R.string.no,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {

                            }
                        }).show();
    }

 执行完以后会在应用右上角出现标志

点击该标志出现两个选项

5 EditText和setTransformationMethod实现密码框显示密码和隐藏密码功能

 et_password = findViewById(R.id.et_password);
        cb_show_hide = findViewById(R.id.cb_show_hide);
        cb_show_hide.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){

            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (cb_show_hide.isChecked())
                {
                    et_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                    cb_show_hide.setText("隐藏密码");
                }else{
                    et_password.setTransformationMethod(PasswordTransformationMethod.getInstance());
                    cb_show_hide.setText("显示密码");
                }
            }
        });

 6 隐藏是抽屉 SlidingDrawer

public class SlidingDrawerActivity extends AppCompatActivity {

    private GridView gv;
    private SlidingDrawer sd;
    private ImageView im;
    private int[] icons = {R.drawable.apple_pic,R.drawable.banana_pic,R.drawable.cherry_pic};
    private String[] items = {"苹果","香蕉","樱桃"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sliding_drawer);
        gv = findViewById(R.id.gv_myGridView);
        sd = findViewById(R.id.sd_mySlidingDrawer);
        im = findViewById(R.id.iv_myImage);
        MyGridviewAdapter adapter = new MyGridviewAdapter(this,items,icons);
        gv.setAdapter(adapter);
        sd.setOnDrawerOpenListener(new OnDrawerOpenListener() {
            @Override
            public void onDrawerOpened() {
                im.setImageResource(R.drawable.open);
            }
        });
        sd.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {
            @Override
            public void onDrawerClosed() {
                im.setImageResource(R.drawable.close);
            }
        });
    }
class MyGridviewAdapter extends BaseAdapter{

    private Context mContext;
    private String[] _items;
    private int[] _icons;

    public MyGridviewAdapter(Context mContext, String[] _items, int[] _icons) {
        this.mContext = mContext;
        this._items = _items;
        this._icons = _icons;
    }

    @Override
    public int getCount() {
        return _items.length;
    }

    @Override
    public Object getItem(int i) {
        return _items[i];
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        LayoutInflater factory = LayoutInflater.from(mContext);
        View v = factory.inflate(R.layout.grid,null);
        ImageView iv = v.findViewById(R.id.icon);
        TextView tv = v.findViewById(R.id.text);
        iv.setImageResource(_icons[i]);
        tv.setText(_items[i]);
        return v;
    }

布局 activity_sliding_drawer

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <SlidingDrawer
        android:id="@+id/sd_mySlidingDrawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:content="@+id/gv_myGridView"
        android:handle="@+id/layout1"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@id/layout1"
            android:layout_width="35px"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/iv_myImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon_pic"/>

        </LinearLayout>

        <GridView
            android:id="@+id/gv_myGridView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:numColumns="2" />
    </SlidingDrawer>


</LinearLayout>

grid

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

 修改 SlidingDrawer中的orientation可以更改图标方向

<SlidingDrawer
        android:id="@+id/sd_mySlidingDrawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:content="@+id/gv_myGridView"
        android:handle="@+id/layout1"
        android:orientation="vertical">

 7 Linkify 将内容识别成 网址 电话 E-mail

根据输入的内容自动识别成网址 电话 E-mail 点击自动跳转

public class LindifyActivity extends AppCompatActivity {

    private TextView mTvContent;
    private EditText mEtContent;
    private Button mBtnLinkify;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lindify);
        mTvContent = findViewById(R.id.tv_content);
        mEtContent = findViewById(R.id.et_linkify);
        mBtnLinkify = findViewById(R.id.btn_Linkify);
        mBtnLinkify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                linkify();
            }
        });
    }

    private void linkify() {
        mTvContent.setText(mEtContent.getText());
        Linkify.addLinks(mTvContent,
                Linkify.WEB_URLS |
                        Linkify.EMAIL_ADDRESSES |
                        Linkify.PHONE_NUMBERS);
    }
}

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        style="@style/MyStyle"
        android:text="请输入电话/E-mail/网址" />
    <EditText
        android:id="@+id/et_linkify"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/tv_content"
        style="@style/MyStyle" />
    <Button
        android:id="@+id/btn_Linkify"
        style="@style/MyStyle"
        android:text="自动链接内容" />


</LinearLayout>

 8 电话号码的正则表达式

所有手机号码:regexp="^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$";

 

posted @ 2019-02-15 10:28  强哥10732  阅读(883)  评论(0编辑  收藏  举报