Android基础知识
来源:互联网 发布:中俄原油管道 知乎 编辑:程序博客网 时间:2024/06/03 13:49
解析JSON数据
把json格式的字符串 生成一个JSONObject对象JSONObject jo = new JSONObject(result);
设置更新的弹出框:
AlertDialog.Builder builder = new AlertDialog.Builder(this);这里一定要传this。builder.show();
SD卡的判断
Environment.getExternalStorageDirectory() 获取SD卡的私有目录Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) 判断是否有SD卡
设置进度条,及设置样式
ProgressDialog pd = new ProgressDialog(this);// 更新进度条pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置进度条样式为横向pd.setMax(int); pd.setProgress(int);pd.show(); pd.dismiss();
Dialog构造函数传的是activity.this dialog依赖于activity界面生命周期随着activity的消失而消失
Toast可以传getApplicationContext();
去掉应用所有页面的标题栏
<style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowNoTitle">true</item></style>android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"Theme.Light Theme.Black 都是旧的样式Theme.holo开头的是新的样式了
GridView的使用
<GridView android:id="@+id/gv_home" android:layout_width="wrap_content" android:layout_height="wrap_content" android:horizontalSpacing="2dp" //条目之间的横向间隔距离 android:numColumns="2" //列的数量 android:verticalSpacing="2dp" /> //条目之间的竖直方向间隔距离
自定义组合控件:
获取所有控件TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.SettingItemView);String title = typedArray.getString(R.styleable.SettingItemView_SiTitle); SettingItemView_SiTitle是自定义类名__布局中设置的属性
自定义dialog布局
AlertDialog.Builder bulder = new AlertDialog.Builder(this);View view = View.inflate(this, R.layout.dialog_sjfd_initpsw, null);bulder.setView(view);AlertDialog dialog = bulder.create();dialog.show();
Activity的跳转动画
参数需要在res下创建xml文件(Tween Animation>>translate)overridePendingTransition(R.anim.next_enter, R.anim.next_exit);
getRawX()和getX()区别: ##
如果我们是重写的activity的onTouchEvent(MotionEvent event) 那么event.getX()和event.getRawX()的值是相同的
>如果给一个view(比如一个button) 设置setOnTouchListener xxx.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) { System.out.println("onTouch.getRawY()==" + event.getRawY()); System.out.getRawY()("onTouch.getY()==" + event.getY()); //这里的getRawX()和getRawY()的到的坐标是相对于整个手机屏幕的左上角 //这里的getX()和getY()的到的坐标是相对于当前控件(就是xxx)的左上角,坐标值不会 超出控件的宽和高 return true; }});
开机广播拦截 ##
接收开启广播的权限 不加不会报错 但会接收不到广播
<receiver android:name="com.itheima.mobilesafe91.receiver.BootCompleteReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
广播的发送
sendBroadcast(intent); 发送无序广播sendOrderedBroadcast( intent, //意图 null, // receiverPermission 接收的权限 new MyReceiver(), //resultReceiver 最终的结果接收者 null ,//scheduler 消息处理器, 使用主线程中的handler 1, // initialCode 初始代码 "主席讲话:每人奖励10斤土豆", // initialData null); // initialExtras bundle类型 实际上就是对零散的数据做一次包装而已。//修改数据setResultData("主席讲话:每人奖励7斤土豆");//终止广播的传输abortBroadcast();
开始获取位置
// 获取位置管理器 mLm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 生成位置提供者的条件 Criteria criteria = new Criteria(); criteria.setCostAllowed(true);// 允许花费 criteria.setPowerRequirement(Criteria.POWER_HIGH);// 电量级别 // 参2 设置true返回当前能用的提供者 String provider = mLm.getBestProvider(criteria, true); long minTime = 0;// 获取位置的最小时间 float minDistance = 0;// 获取位置的最小距离 mLm.requestLocationUpdates(provider, minTime, minDistance, listener);// 关闭位置获取 // 停止位置服务 不用的时候就停了 耗电 mLm.removeUpdates(listener);
给listview设置数据为空的图片
listview.setEmptyView(View v)listview.setOnScrollListener();
编辑页面EditText的背景是一个selector 设置了是否可用状态
每种状态对应的图片是用xml文件写的shape 通过etNum.setEnabled(true);来转换不同状态显示的背景 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- 四个角的弧度 --> <corners android:radius="5dp" /> <!-- 颜色 --> <solid android:color="#FFFFCE" /> <!-- 虚线间隔 android:dashGap="10dp" android:dashWidth="5dp" --> <stroke android:width="1dp" android:color="#9DCAD9" /> <!-- 渐变色<gradient android:centerColor="#0f0" android:endColor="#00f" android:startColor="#f00" android:type="sweep" > </gradient> --> </shape> 背景的selector <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/black_et_bg_enable" android:state_enabled="true" android:state_focused="true"/> <item android:drawable="@drawable/black_et_bg_unenable"/> </selector>// 监听文字改变 etNum.addTextChangedListener(new TextWatcher() { // 显示在输入框上 @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } // 将要显示在输入框上 @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } // 显示在输入框后 @Override public void afterTextChanged(Editable s) { String num = s.toString(); // 每次输入框文字改变后 实时查询更新 String address = AddressADO.getAddress(getApplicationContext(), num); tvLoc.setText(address); } });
输入框为空的颤抖动画提醒
Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); etNum.startAnimation(shake); shake 是一个xml写的动画 <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromXDelta="0" android:interpolator="@anim/cycle_7" android:toXDelta="10" /> cycle_7 是一个插值器 <cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="7" />
判断服务是否运行
public static boolean isRunning(Context context, Class<? extends Service> serviceClz) { // 活动管理器 ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); // 获取正在运行的服务信息 List<RunningServiceInfo> runningServices = am.getRunningServices(1000); for (RunningServiceInfo runningServiceInfo : runningServices) { // 获取service对应的ComponentName对象 ComponentName service = runningServiceInfo.service; String className = service.getClassName(); // 判断传进来的服务是否在运行的服务信息里 if (TextUtils.equals(className, serviceClz.getName())) { return true; } } return false;}
通过查看toast源码知道 可以显示在任意页面上面的view 是添加到window上的
自定义一个toast 通过 WindowManager的addview方法给窗体添加一个view
// WindowManager 窗口管理器 可以给窗口添加view mWM = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); // 指定添加进窗口的view的布局参数 params = new WindowManager.LayoutParams(); params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; // | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE params.format = PixelFormat.TRANSLUCENT; 调整显示级别 添加权限 SYSTEM_ALERT_WINDOW params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE; mWM.addView(viewAddress, params);
自定义toast的触摸移动
首先设置view的触摸监听
viewAddress.setOnTouchListener(this);
在监听方法里 监听按下 移动 和抬起事件 计算手指移动距离 去移动view
// view 的触摸事件 自己处理的话 返回true @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN:// 手指按下 startX = (int) event.getRawX(); startY = (int) event.getRawY(); // System.out.println("起点坐标x" + startX + "y" + startX); break; case MotionEvent.ACTION_MOVE:// 手指移动 int moveX = (int) event.getRawX(); int moveY = (int) event.getRawY(); // System.out.println("移动后坐标x" + moveX + "y" + moveY); int distanceX = moveX - startX; int distanceY = moveY - startY; params.x = params.x + distanceX;// 更改view的布局参数的位置为移动后的位置 params.y = params.y + distanceY; mWM.updateViewLayout(viewAddress, params);// 更新view的位置 startX = moveX;// 每次移动后 指向最新的起始点 startY = moveY; break; case MotionEvent.ACTION_UP:// 手指抬起 break; default: break; } return true; }
小伙箭发射后 打开背景activity 注意从service开启activity的问题
Intent intent = new Intent(mContext, RocketBgActivity.class); //从service开启一个actvity 添加一个标志 创建一个新的栈 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent);
创建一个activity 设置主题为透明
android:theme="@android:style/Theme.Translucent.NoTitleBar"
1 0
- Android 基础知识
- Android基础知识
- Android基础知识
- Android基础知识
- Android基础知识
- android 基础知识
- Android基础知识
- android基础知识
- android基础知识
- android基础知识
- Android基础知识
- android基础知识
- android基础知识
- Android基础知识
- android 基础知识
- android基础知识
- Android基础知识
- android 基础知识
- json 去掉null 的一些方法
- 【eclipse】连接mysql
- MYSQL 开启远程访问连接权限
- Activity LaunchMode 与 Intent Flags 揭秘
- Servlet(2)
- Android基础知识
- C语言实现一、二维数组动态内存分配与释放以及图像的线性插值放大与优化
- Linux下查看jdk安装路径版本、安装jdk、配置环境变量
- iOS学习项目(20-QQ界面主流框架)
- 基于Hadoop生态圈的数据仓库实践 —— 进阶技术(七)
- tasklet schedule isr 关系
- Domino 发行的基于会话认证及单点登录 (SSO) 的 cookies
- 第37篇 网络(七)TCP(一)
- ASP下GridView中手动增加的按钮获取当前所在行的键值