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); //end5. 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中<application>中加入name="mypackage.MyApplication"就可以在任意类中使用MyApplication.getInstance()来获取应用程序Context了。
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);
8.通知视图,通知视图有三种风格可选
-
NotificationCompat.BigPictureStyle, 在细节部分显示一个256dp高度的位图。NotificationCompat.BigTextStyle,在细节部分显示一个大的文本块。NotificationCompat.InboxStyle,在细节部分显示一段行文本。
如果仅仅显示一个图片,使用BigPictureStyle是最方便的;如果需要显示一个富文本信息,则可以使用BigTextStyle;如果仅仅用于显示一个文本的信息,那么使用InboxStyle即可。 - 除此之外,还可以自定义视图 RemoteViews
9、使用TextWatcher监听用户输入
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();