1. img.getLayoutParams().width//代码设置控件宽度java
String path = Environment.getExternalStorageDirectory()+"/path/";//在SD卡创建文件夹android
2.app
dialog背景透明dom
Window window = dialog.getWindow();iphone
WindowManager.LayoutParams lp = window.getAttributes();ide
lp.alpha = 0.6f;this
window.setAttributes(lp);spa
3..net
//获取手机全部图片设计
//只查询jpeg和png的图片
Cursor mCursor = mContentResolver.query(mImageUri, null,
MediaStore.Images.Media.MIME_TYPE + "=? or "
+ MediaStore.Images.Media.MIME_TYPE + "=?",
new String[] { "image/jpeg", "image/png" }, MediaStore.Images.Media.DATE_MODIFIED);
while (mCursor.moveToNext()) {
}
4.
//获取图片的路径
String path = mCursor.getString(mCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
//获取该图片的父路径名
String parentName = new File(path).getParentFile().getName();
5.
/* *Button背景 * **/
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
//表示当前视图是否处于正在交互的窗口中,这个值由系统自动决定,应用程序不能进行改变。
<item android:state_window_focused="false"><shape>
<corners android:radius="10px" />
<padding android:bottom="5px" android:left="30px" android:right="30px" android:top="5px" />
<stroke android:width="1px" android:color="#FF625B" />
<solid android:color="#FF625B" />
</shape></item>
//表示当前视图得到到焦点,当前视图是否处于按下状态
<item android:state_focused="true" android:state_pressed="true"><shape>
<corners android:radius="10px" />
<padding android:bottom="5px" android:left="30px" android:right="30px" android:top="5px" />
<stroke android:width="1px" android:color="#FF625B" />
<solid android:color="#FFC0BE" />
</shape></item>
//表示当前视图没有得到到焦点,当前视图是否处于按下状态
<item android:state_focused="false" android:state_pressed="true"><shape>
<corners android:radius="10px" />
<padding android:bottom="5px" android:left="30px" android:right="30px" android:top="5px" />
<stroke android:width="1px" android:color="#FF625B" />
<solid android:color="#FFC0BE" />
</shape></item>
//表示当前视图处于选中状态
<item android:state_selected="true"><shape>
<corners android:radius="10px" />
<padding android:bottom="5px" android:left="30px" android:right="30px" android:top="5px" />
<stroke android:width="1px" android:color="#FF625B" />
<solid android:color="#FFC0BE" />
</shape></item>
<item android:state_focused="true"><shape>
<corners android:radius="10px" />
<padding android:bottom="5px" android:left="30px" android:right="30px" android:top="5px" />
<stroke android:width="1px" android:color="#FF625B" />
<solid android:color="#FFC0BE" />
</shape></item>
</selector>
边角弧度:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充的颜色 -->
<solid android:color="#FFFFFF" />
<!-- 设置按钮的四个角为弧形 -->
<!-- android:radius 弧形的半径 -->
<corners android:radius="15px" />
</shape>
6.
//在app目录下建立文件夹
File file = this.getExternalFilesDir(Environment.DIRECTORY_PICTURES); files = new File(file,path); if (!files.exists()){ files.mkdir(); Log.e("tag",files.toString()); }
7.
//屏幕宽高
int width = c.getResources().getDisplayMetrics().widthPixels;
int height = c.getResources().getDisplayMetrics().heightPixels;
8.
状态栏高度
private int getStatusBarHeight() {
Class<?> c = null;
Object obj = null;
//java.lang.reflect.Field
Field field = null;
int x = 0, sbar = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
sbar = getContext().getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
}
return sbar;
}
9.
获取文件名:不带后缀
public String getFileNameNoEx(String filename) { if ((filename != null) && (filename.length() > 0)) { int dot = filename.lastIndexOf('.'); if ((dot >-1) && (dot < (filename.length()))) { return filename.substring(0, dot); } } return filename;
byte[] 流转化文件
private void createFileWithByte(byte[] bytes) { // TODO Auto-generated method stub /** * 建立File对象,其中包含文件所在的目录以及文件的命名 */ File file = new File(Environment.getExternalStorageDirectory(), "2017_06_21.3gp");//2017_06_21.3gp是文件格式 // 建立FileOutputStream对象 FileOutputStream outputStream = null; // 建立BufferedOutputStream对象 BufferedOutputStream bufferedOutputStream = null; try { // 若是文件存在则删除 if (file.exists()) { file.delete(); } // 在文件系统中根据路径建立一个新的空文件 file.createNewFile(); // 获取FileOutputStream对象 outputStream = new FileOutputStream(file); // 获取BufferedOutputStream对象 bufferedOutputStream = new BufferedOutputStream(outputStream); // 往文件所在的缓冲输出流中写byte数据 bufferedOutputStream.write(bytes); // 刷出缓冲输出流,该步很关键,要是不执行flush()方法,那么文件的内容是空的。 bufferedOutputStream.flush(); } catch (Exception e) { // 打印异常信息 e.printStackTrace(); } finally { // 关闭建立的流对象 if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (bufferedOutputStream != null) { try { bufferedOutputStream.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }
文件转byte[]流
public byte[] readStream(String imagepath) throws Exception { FileInputStream fs = new FileInputStream(imagepath); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while (-1 != (len = fs.read(buffer))) { outStream.write(buffer, 0, len); } outStream.close(); fs.close(); return outStream.toByteArray(); }
10.
信任全部的Https请求
s_sSLContext.init(null, new TrustManager[]{new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
}}, new SecureRandom());
11.
jarsigner -verbose -keystore d:\FYRCB.jks -signedjar d:\signed.apk d:\tap_unsign.apk FYRCB
12.
PopupWindow
推荐用showAsDropDwon方法。
这里是为了让PopupWindow居中显示,因此须要本身定义横向位移偏移量(其余位置相似)
int xoff = window.getWidth()/2-parent.getWidth()/2; window.update(); window.showAsDropDown(parent, -xoff, 0);
13.
设计师经常并无针对安卓设备单独作一套设计稿,而是选择了iphone手机做为参考机型。他们觉得适配了IOS就等于适配了安卓。标注尺寸单位都是px。设计帅经常拿iphone6(s)或者是iphone6(s) plus做为参考机型,一个4.7寸一个5.5寸。好比是4.7英寸的iphone6,它的分辨率是1334x750(dpi是326),而安卓设备最接近这个数值的分辨率是1280*720,对应这个分辨率的dpi通常是320,跟iphone 6(s)很接近,那么UI使用的iphone6(s)设计稿就对应安卓1280x720(dpi是320)的设备,因此咱们就用320这个dpi进行换算。再好比是5.5英寸的iphone6 plus,它的分辨率是1920x1080(dpi是480),而安卓设备恰好也有不少同等的分辨率,对应这个分辨率的dpi通常是480,而iphone6 plus的dpi也是480,因此咱们用480的dpi进行换算。
举个例子,设计师基于iphone6的设计稿标注20px,换算成dp就是20x/(320/160)=20/2=10。也就是除以2获得dp。若是设计师基于iphone6 plus的设计稿标注120px,那么dp就是120x/(480/160)=30/3=40。也就是除以3获得dp。
通常咱们看UI稿的尺寸就能够推测出它的参考机型,好比UI稿的尺寸是1334x750,那确定是iphone6(s)一类的机型,或者是1920x1080,那就是iphone6(s) plus一类的机型。若是UI稿的尺寸匹配不到一款主流的机型,那就是UI设计师不合格啦!