1. 最近开发的时候发现view.setBackground(id)会拉伸图片,view.setImageResource(id)不会。即android:background会拉伸,android:src 不会
2. 做项目的时候有用到距离底部80dp的属性,找了很久始终没找到怎么写距离底部,要不就是没效果,捉摸了很久
才找到了一种解决方法 android:layout_gravity="bottom" 和 android:layout_marginBottom="80dp"两个属性同时用
即可解决距离底部的问题(仅在LinerLayout中测试)。
3.有些时候需要使上下两个控件宽度一致,但控件的宽度动态设定时,可以使用android:layout_alignLeft="@id/xxx" --将控件的左边缘和给定ID控件的左边缘对齐 和android:layout_alignRight="@id/xxx" --将控件的右边缘和给定ID控件的右边缘对齐 两个属性。
4.做了个录音机的项目,录的过程中暂停的之后再开始录的话会丢失数据,后来写文件的时候采用了追加的方式
output = new FileOutputStream(new File(filePath),true);
5.状态栏沉浸式 兼容4.4
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
// 透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
setContentView(R.layout.activity_main);
android 5.0以上沉浸式状态栏
//5.0以上沉浸式
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT); //end
5. Android程序中访问资源时需要提供Context,一般来说只有在各种component中(Activity, Provider等等)才能方便的使用api来获取Context, 而在某些工具类中要获取就很麻烦了。为此,我们可以自定义一个Application类来实现这种功能。
import android.app.Application;
public class MyApplication extends Application {
private static MyApplication instance;
public static MyApplication getInstance() {
return instance;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
instance = this;
}
}
然后在manifest中
6. dp和px互相转换
public class UnitTransformUtil {
/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}
7.渐变色
LinearGradient lg_white=new LinearGradient(0,0,MainActivity.lg_arg1,MainActivity.lg_arg2,Color.WHITE,Color.BLACK,android.graphics.Shader.TileMode.MIRROR);
paint.setShader(lg_white);
public class MainActivity extends AppCompatActivity { EditText text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); text = new EditText(this); setContentView(text,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); text.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { int count = text.getText().length(); Log.i("123","count-------"+count); } @Override public void afterTextChanged(Editable editable) { } }); } @Override public void onBackPressed() {
//重载back键,使其退回到桌面 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } }
9、给AlertDialog添加单项选择按钮组
AlertDialog dialog = new AlertDialog.Builder(this).setTitle("title").setSingleChoiceItems(ITEMS,2,
new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { String string = ITEMS[i]; btn.setText(string); } }).setNegativeButton("cancle", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }).create();