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}$";
Google Android SDK开发范例大全笔记 一的更多相关文章
- Google Android SDK开发范例大全笔记 二
网络设备管理相关相关 代码地址 1 WifiManager LocationManager分别控制 wifi及GPS WifiManager 判断网络状态 ,LocationManager判断定位状态 ...
- Google Android SDK开发范例------------20141119
一.Edit和Checkbox完成对登陆密码的查看:添加Edit的setOnCheckedChageListener和对CheckBox的状态通过isCHecked判断 大体代码如下 CheckBox ...
- Android SDK 开发指南
Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习. 更多视频教程如下: CSDN 融云 Android SDK ...
- Android SDK开发与使用的那些事儿
前言 最近由于工作需要,将应用里的部分功能独立了出来,封装成 SDK 提供给合作伙伴使用.由于经验不足,网上也没多少写这方面内容的文章,遇到了不少的坑,决定记录下来. SDK 其实,刚说到要写SDK也 ...
- 配置Android SDK 开发环境(转)
1. 下载Eclipse 在前面我们配置好了JDK环境后,就可以开始配置Android的集成开发环境了,官方Google推荐的集成开发环境为Eclipse,所以我们就以Eclipse作为集成开发环境. ...
- Android 蓝牙开发(整理大全)
Android蓝牙开发 鉴于国内Android蓝牙开发的例子很少,以及蓝牙开发也比较少用到,所以找的资料不是很全. (一): 由于Android蓝牙的通信都需要用到UUID,如果由手机发起搜索,当搜索 ...
- GOOGLE VR SDK开发VR游戏,VR播放器之中的一个
近期一年来,VR虚拟现实和AR增强现实技术的宣传甚嚣尘上.事实上VR,AR技术非常早就有了,一直没有流行开来.不可否认价格是影响技术推广的最大壁垒. 谷歌对VR最大的贡献是提供了便宜的谷歌眼镜,依照G ...
- Android SDK 开发——发布使用踩坑之路
前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...
- 基于虹软人证核验 2.0 Android SDK开发集成入门
一.功能介绍虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测.人脸跟踪.人证核验等能力,主要实现人证的1:1比对.其中暴露对外的功能方法有:active 引擎激活init 引擎初始化inpu ...
随机推荐
- php中header函数参数的Cache-control的使用方法
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为private.其作用根据 ...
- 在写php项目时 修改外部css或js文件没有效果
原因是:浏览器的自动缓存机制导致的. 这是因为浏览器会自动缓存静态文件以加快访问速度,所以这就导致浏览器将不会再接收静态文件了 解决办法是 使用ctrl+F5 —— 传说中的完全刷新,会删掉所有本地临 ...
- 为什么开源外围包安装指导都是按照到/usr/local/目录下,/usr/local与/usr的区别
很多应用都安装在/usr/local下面,那么,这些应用为什么选择这个目录呢?Automake工具定义了下面的一组变量: Directory variable Default value prefix ...
- iView组件添加API中介绍的事件的方式(render方式添加事件)
iView组件好用,文档齐全,品质可靠稳定.最大的好处是使用了Vue框架,使很多数据绑定和交互问题变的轻松,是难得的开源前端组件.给作者点个赞.用这个组件来学习Vue.js也是不错的选择. 最近用的比 ...
- Netty 5 io.netty.util.IllegalReferenceCountException 异常
异常信息 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 原因 handler 继承了 SimpleChan ...
- ORM基础之ORM介绍和基础操作
一.ORM介绍 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过 ...
- <数据结构基础学习>(四)链表 Part 2
一.使用链表实现栈 增,删,查只对链表头进行操作,时间复杂度都为O(1) 链表头作为栈顶 LinkedListStack<E> implements Stack<E> publ ...
- (转)史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
背景:因为自己的简历写了dubbo,面试时候经常被问到.实际自己对dubbo的认识只停留在使用阶段,所以有必要好好补充下基础的理论知识. https://zhuanlan.zhihu.com/p/45 ...
- vue---slot,slot-scoped,以及2.6版本之后插槽的用法
slot 插槽 ,是用在组件中,向组件分发内容.它的内容可以包含任何模板代码,包括HTML. vue 在 2.6.0 中,具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令).它取 ...
- python 学习地址
本章主要记录学习python过程中借鉴的一些网站,并感谢这些博主辛勤付出. python官网:https://www.python.org/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...