安卓自定义控件 一个指示用的箭头
需求:随着手指滑动,出现一个指示用的箭头,向这样的
画一条线很简单,用onTouchEvent()即可,难点在画那个小箭头上面,看着简单,画起来各种角度、坐标系,画的欲仙欲死的···
首先确定2个点的位置,并传给自定义控件arrowView
12345678910111213141516171819202122232425 private ArrowView av; private float startX; private float startY;@Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: //记下按下去的初始位置,actionbarHeight和statusHeight是toolBar和状态栏的高度 ...
GreenDao3.2.0用法
发现GreenDao更新到3了,还是改了一些东西的,看了几篇文章,发现有些出入之处,于是结合官网写了个demo测试了下,在此总结。
#1. 导入GreenDao有的同学可能不清楚gradle是哪个gradle。。在你module的那个build.gradle里
12345678910111213141516171819202122232425262728293031323334353637383940414243444546apply plugin: 'com.android.application'android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.uu.greendaotest" minSdkVersion 19 targetSdkVersion 24 versionCode 1 v ...
RecyclerView的局部更新
我们知道recyclerView有好几个notify
除了最常用的notifyDataSetChanged()以外,还有下面的那些,知道position就可以进行更新了但是!我得知道位置才能做到定向更新,那么我不想让所有都更新呢?实际开发中其实经常有这种情况,可能只是调整一小部分,根本不需要整体全部刷一遍,下面进入正题
首先,项目里用到了
1234compile 'com.android.support:appcompat-v7:24.2.1'compile 'io.reactivex.rxjava2:rxjava:2.0.0-RC4'compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1'compile 'com.android.support:recyclerview-v7:24.2.1'
当然rxjava不是必须的。。。不懂也没关系,这不是重点上代码,其实就2个类,一个MainActivity,一个是Adapter
12345678910111213141 ...
dialog更改宽高
一种方法是在dialog的onCreate里面加上12345678910111213141516171819202122private void initWindow() {<<<<<<< HEAD Window win = this.getWindow(); win.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams lp = win.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.BOTTOM; win.setAttributes(lp); }======= Window win = this.ge ...
retrofit如何post json给服务端
需求:开发新项目时,拿到接口文档,需要请求消息体是json类型的
可能你这么写过post:
12345interface NService { @FormUrlEncoded @POST("alarmclock/add.json") Call<ResponseBody> getResult(@FieldMap Map<String, Object> params); }
123456789101112131415161718Retrofit retrofit = new Retrofit.Builder().baseUrl(URL).client(client).build(); NService nService = retrofit.create(NService.class); Map<String, Object> params = new HashMap<>(); params.put(& ...
snackbar修改文本颜色
看源码 snackbar其实就是两个textview组成的
12mMessageView = (TextView) findViewById(R.id.snackbar_text);mActionView = (Button) findViewById(R.id.snackbar_action);
见名知意,一个是信息文本,一个是动作文本然而,他虽然提供给了修改actoinView的颜色方法
12345678910/** * Sets the text color of the action specified in * {@link #setAction(CharSequence, View.OnClickListener)}. */ @NonNull public Snackbar setActionTextColor(@ColorInt int color) { final TextView tv = mView.getActionView(); tv.setTextColor(co ...
AndroidStudio 关联源码
首先,确保你已经下载完成了,然后,在C:\Users\xxx\.AndroidStudio2.1\config\options这里找到jdk.table.xml打开它
12345678910111213141516171819202122232425262728293031<jdk version="2"> <name value="Android API 24 Platform" /> //找到对应的版本 <type value="Android SDK" /> <version value="java version "1.8.0_91"" /> <homePath value="D:\android-studio-sdk" /> <roots> <annotationsPath> <root ...
调节安卓音量
如果使用MediaPlayer播放,直接setVolume即可,经测试静音也能有声音,但是用户调节媒体音量到0就不行了,他是在媒体音量的基础上做了百分比
12MediaPlayer mediaPlayer = MediaPlayer.create(this, raws[ringId]);mediaPlayer.setVolume(1.0f, 1.0f);
比如某个需要提醒用户的时候,
1234567891011audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); //获取媒体音量最大值int streamMaxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //获取系统当前媒体音量,用于闹钟关闭的时候 恢复成用户自己设置的音量int streamVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); audioM ...
SecurityException与android.permission.xxxx
123java.lang.SecurityExceptiongetDeviceId: Neither user 10174 nor current process has android.permission.READ_PHONE_STATE.
这个问题是由于android6.0的动态权限引起的首先看下google怎么说的Beginning in Android 6.0 (API level 23), users grant permissions to apps while the app is running, not when they install the app. This approach streamlines the app install process, since the user does not need to grant permissions when they install or update the app. It also gives the user more control over the app’s functionality; for ...
RxBus工具类
直接上代码 ,三个类
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import rx.Observable;import rx.functions.Func1;import rx.subjects.PublishSubject;import rx.subjects.SerializedSubject;import rx.subjects.Subject;/** * @author xzj * @date 2016/8/24 14:00. */public class RxBus { private static RxBus mRxBus = null; /** * PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者 */ private Subject<Object, Object> mRxBusObse ...