android开发常用知识点备忘录

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中中加入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();

你可能感兴趣的:(android)