![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 80
CharonChui
这个作者很懒,什么都没留下…
展开
-
DLNA
DLNA一、DLNA简介DLNA成立于2003年6月24日,其前身是DHWG(Digital Home Working Group 数字家庭工作组),由Sony、Intel、Microsoft等发起成立、旨在解决个人PC ,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,目前成员公司已达280多家。DLN全称为DIGITAL LIVING N原创 2015-04-10 14:50:04 · 1194 阅读 · 0 评论 -
JNI基础
JNI基础将java中的字符串转换成C中字符串的工具方法 char* Jstring2CStr(JNIEnv* env, jstring jstr){ char* rtn = NULL; jclass clsstring = (*env)->FindClass(env,"java/lang/String");原创 2015-04-10 14:52:23 · 650 阅读 · 0 评论 -
ListView专题
ListView专题1.ListView属性:fadingEdge属性 ListView上边和下边有黑色的阴影,android : fadingEdge = "none"后就不会有阴影了scrollbars属性,隐藏滚动条 android : scrollbars = "none" setVerticalScrollBarEnabled(true);fadeScrollbars属性 a原创 2015-04-10 14:52:44 · 682 阅读 · 0 评论 -
ScrollingTabs
ScrollingTabs自定义ScrollingTabs结合ViewPager实现指引的效果。 原理: 由于ScrollingTabs即可以点击又可以实现左右滑动,首先想到的就是继承HorizontalScrollView来实现滑动,至于点击的实现需要通过对View 设置点击。 通过对ViewPager设置OnPageChangeListener来监听页面变化,从而实现对S原创 2015-04-10 14:54:09 · 668 阅读 · 0 评论 -
Selector使用
Selector使用Selector使其能够在不同的状态下更换某个View的背景图片。<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 触摸时并且当前窗口处于交互状态 --> <item a原创 2015-04-10 14:54:28 · 432 阅读 · 0 评论 -
SlidingMenu
SlidingMenu先看一下图片 原理SlidingMenu无非就是一个包含三个View的控件,左边View、中间View(默认时全屏)、右边View,默认的情况下中间View会把两边的View覆盖住, 在手指滑动的时候,会根据手指的滑动方向以及滑动距离去移动中间的那个View,从而能让两边View完全可见。 在定义该View的时候,首先会想到继承RelativeLayout,原创 2015-04-10 14:55:04 · 815 阅读 · 0 评论 -
TextView跑马灯效果
TextView跑马灯效果TextView跑马灯效果实现方式一:当TextView内容过多时默认会采用截取的方式以...来截取。如何能够实现内容过多时的跑马灯效果。自定义视图步骤:自定义一个类继承TextView,重写它的isFocused()方法在布局的文件中使用自定义的TextView示例代码:继承TextView//继承TextView并且实现抽象方法public class Foc原创 2015-04-10 14:54:39 · 476 阅读 · 0 评论 -
WebView总结
WebView总结在Android中有WebView Widget,它内置了WebKit引擎,同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源的浏览器引擎, Chrome浏览器也是基于它的。所以很多表现WebView和Chrome是一样的。 很多文章中多会说在使用WebView之前,要在AndroidManifest.xml中添加 如下原创 2015-04-10 14:55:43 · 482 阅读 · 0 评论 -
Widget简介
Widget简介可以使用AppWidgetManager更新Widget中的数据,但这样最短也要半个小时才能更新一次,一般不用他更新,而是自己定义一个服务去更新Widget中的数据。Widget的创建步骤写一个类继承AppWidgetProvider,这个是一个广播接收者,所以要在清单文件中进行配置public class MyWidget extends AppWidgetProvider {原创 2015-04-10 14:55:28 · 616 阅读 · 0 评论 -
多线程断点下载
多线程断点下载多线程下载public class MultiThreadDownloader { private URL url; // 目标地址 private File file; // 本地文件 private long threadLen; // 每个线程下载多少 private static final int THREAD_原创 2015-04-10 14:57:46 · 478 阅读 · 0 评论 -
黑名单挂断电话及删除电话记录
黑名单挂断电话及删除电话记录挂断电话 挂断电话需要申请权限android.permission.CALL_PHONE 对于黑名单号码的来电如何挂断,由于监听来电时在TelephonyManager中进行监听的,在Android1.5之前, TelephonyManager中有一个endCall()方法能够直接挂断电话,但是后来谷歌工程师认为这样挂断电话是不安全的,所以就隐藏了这个方法。 挂原创 2015-04-10 14:58:50 · 1342 阅读 · 0 评论 -
快捷方式工具类
快捷方式工具类/** * 快捷方式工具类 */public class ShortCutUtils { /** * 添加当前应用的桌面快捷方式 * * @param cx */ public static void addShortcut(Context cx) { Intent shortcut = ne原创 2015-04-10 15:02:27 · 583 阅读 · 0 评论 -
零权限上传数据
零权限上传数据虽然没有权限,但是也可以通过浏览器用Get方式来传递自己的数据,由于这样会打开浏览器,为了防止让用户看到, 所以我们可以再用户锁屏之后开始传递数据,而在用户一解除锁屏我们就回到桌面,这里用KeyguardManager来实现, 即在锁屏的时候键盘不能用,而一旦键盘能用了我们就立马回到桌面 public void onCreate() { timer = new Tim原创 2015-04-10 15:03:07 · 691 阅读 · 0 评论 -
内存泄露
内存泄露Java和C++一个很大的区别就是Java有垃圾回收GC(Garbage Collection)自动管理内存的回收。但是我们在实际的项目中仍然会遇到内存泄露的问题。 Java中对内存对象得访问是通过引用的方式,通过一个内存对象的引用变量来访问到对应的内存地址中的对象。 GC会从代码栈的引用变量开始追踪,从而判断哪些内存是正在使用,如果无法跟踪到某一块堆内存,那么GC就认为这块内存不再使用原创 2015-04-10 15:02:41 · 732 阅读 · 0 评论 -
竖着的Seekbar
竖着的Seekbar视频播放器页面音量控制Seekbar实现竖直的效果。竖直只是将Seekbar转了90度或-90度,我们可以把画布转一个角度,然后交给系统去画, 具体的做法就是重写ondraw()调整画布,然后调用super.onDraw()。 向上的Seekbar protected void onDraw(Canvas c) { c.rotate(-90);原创 2015-04-10 15:03:40 · 787 阅读 · 0 评论 -
搜索框
搜索框在res-xml中新建一个searchable.xml <?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/sms_search" andr原创 2015-04-10 15:05:03 · 658 阅读 · 0 评论 -
自定义Toast
自定义Toast系统Toast提示时不能够进行取消,如果有多个Toast时会很长时间才消失。自定义Toast通过WindowManager来进行手动的控制Toast的显示与隐藏。能有效的解决该问题。Toast提示的布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.c原创 2015-04-10 15:08:29 · 548 阅读 · 0 评论 -
自定义控件
自定义控件自定义控件的步骤自定义一个View继承ViewGroup等相似效果的View; 重写构造方法 可以在构造方法中附加要显示的内容如下: View.inflate(context, R.layout.ui_setting_view, this); 这里就是让这个填充出来的View显示到当前我们自定义的这个布局中View的构造方法共有三个,其中一个参数的构造方法,是通过代码new对象原创 2015-04-10 15:09:15 · 709 阅读 · 0 评论 -
Android四大组件之ContentProvider
Android四大组件之ContentProviderContentProvider 安卓应用程序默认是无法获取到其他程序的数据,这是安卓安全学的基石(沙盒原理)。但是经常我们需要给其他应用分享数据,内容提供者就是一个这种可以分享数据给其他应用的接口。 可以简单的理解为,内容提供者就是一个可以在不同应用程序间共享数据的组件,相当于一个中间人,一个程序把数据暴露给这个中间人,另一个则通过这个中原创 2015-04-10 14:48:20 · 681 阅读 · 0 评论 -
代码混淆
代码混淆混淆器(ProGuard)混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。修改project.properties# This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!##原创 2015-04-10 14:57:39 · 562 阅读 · 0 评论 -
来电监听及录音
来电监听及录音来电状态监听public class MyService extends Service { private MediaRecorder mRecorder; private String num; @Override public void onCreate() { super.onCreate(); TelephonyM原创 2015-04-10 15:02:47 · 627 阅读 · 0 评论 -
任务管理器(ActivityManager)
任务管理器(ActivityManager)Android中ActivityManager类似于Windows下的任务管理器,能得到正在运行程序的内容等信息 List邮箱 :charon.chui@gmail.com Good Luck!原创 2015-04-10 15:03:49 · 842 阅读 · 0 评论 -
应用后台唤醒后数据的刷新
应用后台唤醒后数据的刷新如何判断程序是否是在后台运行了/** * 判断当前的应用程序是否在后台运行,使用该程序需要声明权限android.permission.GET_TASKS * @param context Context * @return true表示当前应用程序在后台运行。false为在前台运行 */public static boolean isApplicationBro原创 2015-04-10 15:07:32 · 1140 阅读 · 0 评论 -
知识大杂烩
知识大杂烩1.开启服务是Intent传递数据当开启一个Service时,如果要通过Intent去传递一些数据,在Service的onStartCommand方法中有一个参数Intent,我们可以通过这个Intent来得到传递过来的数据 public class TestService extends Service { @Override public IBinder onB原创 2015-04-10 15:07:50 · 988 阅读 · 0 评论 -
自定义状态栏通知
自定义状态栏通知状态栏通知布局 custom_notification.xml <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"原创 2015-04-10 15:08:47 · 719 阅读 · 0 评论 -
Android Touch事件分发详解
Android Touch事件分发详解先说一些基本的知识,方便后面分析源码时能更好理解。 - 所有Touch事件都被封装成MotionEvent对象,包括Touch的位置、历史记录、第几个手指等.事件类型分为ACTION_DOWN,ACTION_UP,ACTION_MOVE,ACTION_POINTER_DOWN,ACTION_POINTER_UP,ACTION_CANCEL, 每个 一个完整原创 2015-04-10 15:10:02 · 1288 阅读 · 0 评论 -
Markdown学习手册
Markdown学习手册一. 简单功能 功能 效果 Markdown代码 备注 粗体 粗体 **粗体** 两边加** 斜体 斜体 _斜体_ 两边加_ 中划线 中划线 中划线 两边加~~ 单行代码 Log.i("Hello World!") `Log.i(“Hello World!”)` 两边加` 插入图片 !原创 2015-04-10 15:12:17 · 1013 阅读 · 0 评论 -
Android动画
Android动画AlphaAnimationRelativeLayout rl_splash = (RelativeLayout) findViewById(R.id.rl_splash);//播放动画效果AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);//设置Alpha动画的持续时间animation.setDurat原创 2015-04-10 14:48:16 · 466 阅读 · 0 评论 -
Android入门介绍
Android入门介绍3G、4G第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,较之前的2G和2.5G在数据传输速度上有很大提升。第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,几乎可以满足人们的所有传输数据的需求。目前主流的3G技术标准有三种:WCDMA:全球80%以上的3G网络都是采用此种制式。中国联通运营。186CDM原创 2015-04-10 14:47:55 · 644 阅读 · 0 评论 -
Ant打包
Ant打包使用步骤: 1. 对于已经存在的工程需要利用Ant命令更新一下: android update project -n Test -p D:/workspace/Test -s -t 1 -n (name) 后面跟的是这个工程的名子 -p (path)后面跟的是这个工程的目录路径 -t (target)后面是当前共有的SDK版本。表明我们的目标版本(如果有了pr原创 2015-04-10 14:50:00 · 611 阅读 · 0 评论 -
Bitmap优化
Bitmap优化一个进程的内存可以由2个部分组成:native和dalvik dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的。 一旦内存分配给Java后,以后这块内存即使释放后,也只能给Java的使用,所以如果Java突然占用了一个大块内存, 即使很快释放了,C能用的内存也是16M减去Java最大占用的内存数。 而Bitm原创 2015-04-10 14:49:37 · 976 阅读 · 0 评论 -
Fragment专题
Fragment专题简介A Fragment is a piece of an application’s user interface or behavior that can be placed in an Activity. Interaction with fragments is done through FragmentManager, which can be obtained原创 2015-04-10 14:50:25 · 514 阅读 · 0 评论 -
JNI_C语言基础
JNI_C语言基础JNI(java native interface) Java本地开发接口,JNI是一个协议,这个协议用来沟通Java代码和外部的本地代码(c/c++). 通过这个协议Java代码就可以调用外部的c/c++代码,外部的c/c++代码也可以调用java代码, 使用JNI技术,其实就是在Java程序中,调用C语言的函数库中提供的函数,来完成一些Java语言无法完成的任务。由于J原创 2015-04-10 14:51:15 · 1158 阅读 · 2 评论 -
PopupWindow细节
PopupWindow细节简介A popup window that can be used to display an arbitrary view. The popup windows is a floating container that appears on top of the current activity.显示View contentView = View.inflate(get原创 2015-04-10 14:52:20 · 629 阅读 · 0 评论 -
Scroller简介
Scroller简介在SlidingMenu项目中为了实现控件的滑动,需要用到Scroller类来实现缓慢的滑动过程,至于有人说View类可以直接调用scrollTo()方法, 这里scrollTo()方法也能实现移动,但是它的移动是很快一下子就移过去了,就像穿越一样,直接从现实回到了过去,而Scroller类能够实现过程的移动。 可以理解为一步步的走。 查看Scroller源码publ原创 2015-04-10 14:52:45 · 562 阅读 · 0 评论 -
超级管理员(DevicePoliceManager)
超级管理员(DevicePoliceManager)DevicePolicyManager Public interface for managing policies enforced on a device. Most clients of this class must have published a DeviceAdminReceiver that the user has cu原创 2015-04-10 14:56:13 · 1175 阅读 · 0 评论 -
程序的启动、卸载和分享
程序的启动、卸载和分享启动 /** * 开启一个应用程序 */private void startApk() { PackageManager pm = getPackageManager(); try { // 原来的时候我们在得到PakageInfo的时候第二个参数都是设置为0.这个PackageInfo代表的就是某个程序的清单文件, // 默认情况下在解原创 2015-04-10 14:56:34 · 545 阅读 · 0 评论 -
读取用户logcat日志
读取用户logcat日志读取用户日志需要权限android.permission.READ_LOGS在一个服务中开启logcat程序,然后读取public void onCreate() { super.onCreate(); new Thread(){ public void run() { try {原创 2015-04-10 14:57:11 · 708 阅读 · 0 评论 -
短信广播接收者
短信广播接收者短信拦截Android系统在收到短信的时候会发送一条有序广播,我们如果定义一个接收者接收这个广播,就可以得到短信内容,也可以拦截短信。 定义广播接收者接收广播android.provider.Telephony.SMS_RECEIVED 需要接收短信权限:<uses-permission android:name="android.permission.RECEIVE_SMS"/>原创 2015-04-10 14:58:14 · 595 阅读 · 0 评论 -
获取手机及SD卡可用存储空间
获取手机及SD卡可用存储空间存储设备都是分块的,获取一共有多少块,然后算出来每一块的大小就能得到总的大小 File file = Environment.getExternalStorageDirectory();//获取SD卡的目录StatFs statf = new StatFs(file.getAbsolutePath());long count = statf.getAvailabl原创 2015-04-10 14:58:50 · 575 阅读 · 0 评论