【笔记】阳春三月

2016/3/4 星期二

1、ViewFilpper:

实现左右滑动动画效果;

2、ViewAnimator:

多动态标题栏;

3、Thread/runable多线程的区别;

一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限;

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比

  继承Thread类有如下好处:

  ->避免点继承的局限,一个类可以继承多个接口。

  ->适合于资源的共享

4、Ation:

规定了Intent要完成的动作,是一个字符串常量。使用setAction()来设置Action属性,使用getAction()来获得Action属性。

既可以使用系统内置的Action,也可以自己定义。系统自定义的action,如ACTION_VIEW, ACTION_EDIT, ACTION_MAIN等等。

5、Animation:动画

6、SetBackGround+XXX:

设置这个View背景;+Drawbale:设置为Drawable对象;+Color:参数为Color对象;+Resoure:参数为资源ID;

7、Folat.parseFloat(String)

表示把String字符串转换成float原始类型的单精度数值;Float.ValueOf(String)是把String字符串转换成float的封装类Float;floatalue()

的作用是把封装类的Foloat转换成原始类型float;ps:float是数值,而Float是一个类;

8、SetSeclection(items)调用指定的items

9、cmd命令调试adb,删除、安装、重启;

adb remount:获取权限

adb shell:进入adb内部

adb rm .apk删除应用程序

adb push .apk system/app:安装系统应用

adb reboot:重启

10、Clasclasscastexception:

类型转换错误,当前者域小于后者的时候出现,例如:前者A是子类的对象,而后者B是父类的对象,若使用A=B,就会抛出这个错误;

11、快捷注释键 Ctrl+Shift+/;Ctrl+Shift+C;

12、基于framework开发

13、Handler.removeCallbacksAndMessages(null):避免内存泄漏

14、inClude():

为了减少在同一个xml中的代码冗余,提高可读性,把相同布局的代码单独写成一个模块,重用layout,相当于把原来代码中的一部分独立出来;

15、gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));去除点击GridView后系统设定的背景色

android:scrollbars设置滚动条显示:none(隐藏),horizontal(水平),vertical(垂直)

android:scrollbarTrackVertical:设置垂直滚动条背景(轨迹)的drawable注意直接设置颜色值

android:scrollbarTrackHorizontal:设置水平滚动条背景(轨迹)的色drawable(如颜色)

android:scrollbarThumbVertical:设置垂直滚动条的drawable(如颜色).

例如:android:scrollbarThumbVertical="@drawable/scroll_bar"

android:scrollbarThumbHorizontal设置水平滚动条的drawable(如颜色)。

android:scrollbarStyle:可以定义滚动条的样式和位置,可选值有insideOverlay、insideInset、outsideOverlay、outsideInset四种。

其中inside和outside分别表示是否在view的padding区域内,overlay和inset表示覆盖在view上或是插在view后面,所以四种值分别表示:

insideOverlay:默认值,表示在padding区域内并且覆盖在view上

insideInset:表示在padding区域内并且插入在view后面

outsideOverlay:表示在padding区域外并且覆盖在view上,推荐这个

outsideInset:表示在padding区域外并且插入在view后面

android:scrollbarSize:设置滚动条的宽度。

android:scrollbarFadeDuration:设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位

android:scrollbarDefaultDelayBeforeFade:设置N毫秒后开始淡化,以毫秒为单位。

android:scrollbarAlwaysDrawVerticalTrack:设置是否始终显示垂直滚动条。这里用ScrollView、ListView测试均没有效果。

android:scrollbarAlwaysDrawHorizontalTrack:设置是否始终显示垂直滚动条。这里用ScrollView、ListView测试均没有效果。

android:fadeScrollbars:是否隐藏滚动条

16、getTag:返回视图的标记

17、*scroollview可以添加监听ScrollViewListener后,重写onScrollChanged(ObservableScrollView observableScrollView,

int x, int y, int oldx, int oldy) {}精准实现滑动页面监听;

//获取页面移动的监听

@Override

public void onScrollChanged(ObservableScrollView observableScrollView,

int x, int y, int oldx, int oldy) {

int scrollY=observableScrollView.getScrollY();//顶端以及滑出去的距离

int height=observableScrollView.getHeight();//界面的高度

int scrollViewMeasuredHeight=observableScrollView.getChildAt(0).getMeasuredHeight();//scrollview所占的高度

if(scrollY==0){//在顶端的时候

button_up.setBackgroundResource(R.drawable.upb);//向上的键为灰色

button_up.setClickable(false);//且不能按

}else if((scrollY+height)==scrollViewMeasuredHeight){//当在底部的时候

button_down.setBackgroundResource(R.drawable.downb);
//向下的键为灰色

button_down.setClickable(false);
//且不能按

}else {//当在中间的时候

button_down.setBackgroundResource(R.drawable.button_down);//向下为白色

button_down.setClickable(true);
//可点击

button_up.setClickable(true);//可点击

button_up.setBackgroundResource(R.drawable.button_up);
//向上的键为白色

}

}

*smoothScrollBy()方法可以通过OnClick实现点击页面滑动;

GridView的滚动监听就没搞明白,因为GridView的滚动界面会实时变动,导致暂时无法准确地监听;待攻关!

已攻关!2016/3/22 星期二 下午 7:19:40
详见29

18、Handler:

主要作用是介绍子线程的数据,并用此数据来配合主线程更新UI;handler可以分发Message对象和Runnable对象到主线程中;

1.安排Message或Runnable在某个主线程中某个地方执行;

2.安排一个动作在不同的线程中执行;

Handler中分发消息的一些方法

post(Runnable)

postAtTime(Runnable,long)

postDelayed(Runnable long)

sendEmptyMessage(int)

sendMessage(Message)

sendMessageAtTime(Message,long)

sendMessageDelayed(Message,long)

2016/3/21 星期一

19、WakeLock机制:阻止APP进入休眠状态:

为确保应用程序中的关键代码执行,使用应用程序有权通过代码阻止APP进入休眠状态,阻止屏幕变暗;

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

WakeLock sCpuWakeLock = pm.newWakeLock(

PowerManager.FULL_WAKE_LOCK |

PowerManager.ACQUIRE_CAUSES_WAKEUP,"okTag");

if (sCpuWakeLock!= null) {

sCpuWakeLock.release();

sCpuWakeLock = null;

}

PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。

SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯

SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,允许关闭键盘灯

FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度

ACQUIRE_CAUSES_WAKEUP:不会唤醒设备,强制屏幕马上高亮显示,键盘灯开启。有一个例外,如果有notification弹出的话,会唤醒设备。

ON_AFTER_RELEASE:WakeLock 被释放后,维持屏幕亮度一小段时间,减少WakeLock 循环时的闪烁情况

如果申请了partial wakelock,那么即使按Power键,系统也不会进Sleep,如Music播放时 如果申请了其它的wakelocks,按Power键,

系统还是会进Sleep

20、Alarm Manager:

AlarmManage有一个AlarmManagerService,该服务程序主要维护app注册下来的各类Alarm,并且一直监听Alarm设备,一旦有Alarm触发,

或者是Alarm事件发生,AlarmManagerService就会遍历Alarm列表,找到相应的注册Alarm并发出广播

Alarm Manager会维持一个cpu的wake lock。这样能保证电话休眠时,也能处理alarm的广播。一旦alarm receiver的onReceive() 方法执行完,

wake lock会迅速被释放。如果在receiver中开启一个service,有可能service还没启动,wake lock已经被释放了。所以此时要实现单独的wake lock策略。

有4种Alarm类型:

1)RTC_WAKEUP

在指定的时刻(设置Alarm的时候),唤醒设备来触发Intent。

2)RTC

在一个显式的时间触发Intent,但不唤醒设备。

3)ELAPSED_REALTIME

从设备启动后,如果流逝的时间达到总时间,那么触发Intent,但不唤醒设备。流逝的时间包括设备睡眠的任何时间。注意一点的是,

时间流逝的计算点是自从它最后一次启动算起。

4)ELAPSED_REALTIME_WAKEUP

从设备启动后,达到流逝的总时间后,如果需要将唤醒设备并触发Intent。

21、adb死循环挂起:

试过了任务管理器结束adb进程,重启eclipse,reset adb方法依然没有解决问题,基平先把数据线拔了,然后任务管理器里

删除adb.EXE,然后在用户环境变量里增加了一个变量名为:ANDROID_ADB_SERVER_PORT;变量值:51234;意图是让eclipse独有一个adb线程;

之后,就再没出现问题;

22、增加adb系统变量:

名:ADB_HOME;值:F:\java\android-sdk-windows\platform-tools;之后,打开cmd,可以直接adb.shell,控制模拟器!

23、notfindclassexception错误:

之前一直是出现此类问题只能cmd删除包、app的方法就可以1/3的几率解决问题,

新建项目,再cope代码报的是非法操作的错误,问群里,回答是没有回调

public void notifyDataSetChanged() {super.notifyDataSetChanged();},我在adapter里添加了该方法依然没解决,

基平把项目里的v7v4包全删了,然后在v4的源代码放到项目里,接着把initView()末端的viewPager.setAdapter(vpAdapter);

放到了initData()类末端;程序就能正常运行,因为是adapter起冲突了;

24、消除gridview、listview、scroollview消除拖动阴影的方法:

view.setOverScrollMode(View.OVER_SCROLL_NEVER):

25、ListView监听滑动到顶部和底部的方法:

ListView().setOnScrollListener(new OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

if(firstVisibleItem==0){

Log.e("log", "滑到顶部");

}

if(visibleItemCount+firstVisibleItem==totalItemCount){

Log.e("log", "滑到底部");

}

}

});

2016/3/22 星期二

26、ListView:

Android:cacheColorHint="#00000000":滑动不变背景

ListView.setSelector(R.drawable.adapter_background);设置点击变换背景

加载item动画:

动画效果: <alpha

android:duration="300"

android:fromAlpha="0"//初始透明度

android:toAlpha="1.0"  />//结束透明度

</set>

动画文件:<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"

android:delay="2"

android:animationOrder="normal"

android:animation="@anim/list_anim"/>

然后在ListView中添加动画文件:

android:layoutAnimation="@anim/list_anim_layout"

接着在Adapter里将动画加载进去:

Animation animation = (Animation) AnimationUtils.loadAnimation(mContext, R.anim.list_anim);

LayoutAnimationController lac = new LayoutAnimationController(animation);

lac.setDelay(0.4f);  //设置动画间隔时间

lac.setOrder(LayoutAnimationController.ORDER_NORMAL); //设置列表的显示顺序

mListView.setLayoutAnimation(lac);  //为ListView 添加动画

27、动态实现listview选中的item固定与顶端的距离;

listView.setSelectionFromTop(int position, int Y):

Y:为当前item距离顶部的距离;

position:当前选择item;

*实现点击任何按钮界面,listview都会显示当前播放歌曲item为列表固定位置;

listView.setAdapter(mAdapter);//重新加载列表

//固定离顶端距离

if (songfile.size() > 6) {

try {

mTrackList.setSelectionFromTop(mService.getQueuePosition(), 115);

} catch (RemoteException e) {

e.printStackTrace();

}

}

28、点击事件模板:

button=(Button) findViewById(R.id.button1);

button.setOnClickListener(ClickListener);

private View.OnClickListener ClickListener = new View.OnClickListener() {

public void onClick(View v) {

switch (v.getId()) {

case R.id.button1:

Toast.makeText(MainActivity.this, "button", 0).show();

break;

29、通过GridView的滑动监听,来控制翻页按钮的状态:

private class GridViewScrollListener implements OnScrollListener{

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {}

@Override

public void onScroll(AbsListView view, //报告滚动状态的视图

int firstVisibleItem,//第一个可见item的索引

int visibleItemCount,//可见item的数量

int totalItemCount)//项目列表中的适配器的数量

{

if (firstVisibleItem==0) {

View view2 = gridView.getChildAt(firstVisibleItem);

if (view2!=null) {

Log.i("TAG","view2.getY()"+view2.getY());

if (view2.getY() == 8) {//在顶部

button_up.setBackgroundResource(R.drawable.upb);//向上的键为灰色

button_up.setClickable(false);//且不能按

} else {

button_up.setBackgroundResource(R.drawable.upg);//向上的键为白色

button_up.setClickable(true);//能按

}

}

}else{

button_up.setBackgroundResource(R.drawable.upg);//向上的键为白色

button_up.setClickable(true);//能按

}if ((firstVisibleItem+visibleItemCount)==totalItemCount) {

View view3 = gridView.getChildAt(totalItemCount-1-firstVisibleItem);//scrollview所占的高度

if (view3!=null) {

Log.i("TAG","view3.getY()"+view3.getY());

if (view3.getY() == 246) {//在底部

button_down.setBackgroundResource(R.drawable.downb);
//向下的键为灰色

button_down.setClickable(false);
//且不能按

} else {

button_down.setBackgroundResource(R.drawable.downg);
//向下的键为白色

button_down.setClickable(true);
//能按

}

}

}else{//在中部

button_down.setBackgroundResource(R.drawable.downg);
//向下的键为白色

button_down.setClickable(true);
//能按

}

}

}

30、代码实现一个帧动画:

if(image != null) {

image.setBackgroundResource(image_addr[number]);

number++;

if(number > 10) number = 0;

}

31、Math.round的取值:

小数点后第一位=5

正数:Math.round(11.5)=12

负数:Math.round(-11.5)=-11

小数点后第一位<5

正数:Math.round(11.46)=11

负数:Math.round(-11.46)=-11

小数点后第一位>5

正数:Math.round(11.68)=12

负数:Math.round(-11.68)=-12

2016/3/23 星期三 上午 8:03:49

32、ViewPager加载步骤以及滑动监听Demo:

一、<android.support.v4.view.ViewPager    这个组件,注意这个组件是用来显示左右滑动的界面的,如果不加载xml布局文件,他是不会显示内容的。

android:id="@+id/viewpager"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center" >

二、LayoutInflater lf = getLayoutInflater().from(this);

view1 = lf.inflate(R.layout.layout1, null);

view2 = lf.inflate(R.layout.layout2, null);

view3 = lf.inflate(R.layout.layout3, null);

viewList = new ArrayList<View>();// 将要分页显示的View装入数组中 private ArrayList<View> viewList;//把需要滑动的页卡添加到这个list中

viewList.add(view1);

viewList.add(view2);

viewList.add(view3);

三、PagerAdapter pagerAdapter = new PagerAdapter() {

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

@Override

public int getCount() {

return viewList.size();//返回页卡的数量

}

@Override

public void destroyItem(ViewGroup container, int position,

Object object) {//删除页卡

container.removeView(viewList.get(position));

}

@Override

public Object instantiateItem(ViewGroup container, int position) {//这个方法用来实例化页卡

container.addView(viewList.get(position));//添加页卡

return viewList.get(position);

}

@Override

public int getItemPosition(Object object) {

return super.getItemPosition(object);

}

};

四、viewPager.setOnPageChangeListener(new MyOnPageChangeListener());//获取viewpager的滑动监听

public class MyOnPageChangeListener implements OnPageChangeListener{

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageSelected(int arg0) {

Log.i("TAG", "arg0="+arg0);

}

}

2016/3/24 星期四 下午 7:11:54

33、操作说明:

框架:ViewPager+GridView

一、左右滑动页面可以实现“功能介绍”“外观及功能简介”“安全事项”三个分页面的自由切换;

二、点击“功能介绍”“外观及功能简介”“安全事项”三个标题栏按钮可实现对应界面的切换,选中变换按钮布局背景;

三、左右滑动切换页面时,可以动态改变对应页面的标题背景,选择为蓝色,否则为灰色;

四、主页面滚动条隐藏、分页面滚动条为蓝色;

五、设置默认选择标题为功能介绍;

六、设置快捷启动GPS、蓝牙电话按钮,点击变换背景;

七、“功能介绍”页面放置4x3可滚动网格布局按钮图标;

八、点击“功能介绍”页面中的不同图标按钮,可以打开对应的页面,点击图标按钮变换背景;

九、隐藏页面滑动到边缘会出现的蓝色阴影;

十、除”功能介绍“外,共14个功能详解页面,页面可以上下滚动;

十一、程序右侧放置可控制所有页面滚动的按钮,按钮可以分向上/向下控制当前页面,滚动按钮点击变换颜色;

十二、进入页面默认向上滚动按钮为灰色,且不能点击;

十三、当页面离开顶端的时候,向上滚动按钮变色为可点击的白色;

十四、当页面滑动到底部时候,向下滚动按钮变色为灰色不可点击;

十五、当跳转/滑动至单屏页面时,右侧滚动按钮布局隐藏,否则显示;

十六、当通过主页点击按钮进入对应界面时,功能介绍标题栏会切换为当前打开页面标题,返回时,恢复功能介绍标题;

2016/3/26 星期六 下午 4:16:45

34、Relativelayout布局设置点击事件

设置Relativelayout的几个属性

clickable=“true”

focusable=“true”

再设置onclicklistener

2016/3/28 星期一 上午 8:06:34

35、实现View重叠覆盖:

Android写布局的机制也是从上往下变读变写,在RelativeLayout中,可以先写被覆盖的布局,然后再写覆盖的布局,这样就可以实现后写的布局覆盖先写的布局!

2016/3/29 星期二 上午 8:06:34

36、切记命令调试adb卸载应用的之前,一定要先adb remount,不然容易出现INSTALL_FAILED_UPDATE_INCOMPATIBLE错误!

2016/3/30 星期三 下午 5:05:08

37、textview

只显示一行,超过自动隔断:

android:ellipsize="end"

android:singleLine="true"

时间: 2024-10-05 23:26:57

【笔记】阳春三月的相关文章

新年计划(参考)

新年计划 还是给自己一个计划. 新年规划,还是按照我的观念,先生活后工作: 1.首要大事应该是要搞定每次打电话回家父母都要关心的事情了.但愿吧,自己不急,感觉时间大把,但是父母以他们的观念来看,已经等不及了. 2.从今年开始,每年孝敬父母一个月的工资,算是每年为父母工作一个月吧. 3.职业发展上能够再上一层楼.至于是什么就不说了,心里有数. 4.开始学会理财,08年底和09年底都把自己的所有支出统计了一次,发现工资的收入几乎是和支出相等的,没有什么剩余.看着一堆的支出项,却又不知道花往何处了.今

学术会议高手速成之七种武器

学术江湖,虽无刀光剑影,却有血雨腥风.博士路上,漫漫修远,切磋技艺印证武功街头火拼胡同拍砖,大小战役,不可计数.一年数度之大型学术会议,更是群雄争锋之处华山论剑之时.回首五年江湖,西窗残阳似血,不胜唏嘘.暗观镜中博士帽上缨穗,犹感血迹斑斓,森然欲滴.遂决意退隐江湖葬剑青山,立志面朝大海春暖花开,再不过问学术界的是非恩怨.此五年心智武功,尽录于此,拳拳之心,皆为君故,诸位好生研习修炼,笑傲江湖之日,长歌烈酒,勿忘相邀.  第一种武器 长生剑 如果你想要一种最安全的武器闯荡江湖,你需要的是一把剑.连

【妄言之言】春分

"阳春三月,江南草长.杂花生树,群莺乱飞"-------摘自<与陈伯之书> 记得最初看到这些优美的语句时,是在中学的课本里,具体哪篇文章也不得而知了.今天早上拿起手机,看到屏幕上的日期写着:乙未羊年 二月初二 春分/龙抬头/土地公生日.羊年,时间真的好快,上一个羊年的春节期间,我还依稀有点印象.二月初二,元宵节出发,回到学校有两星期了,为啥觉得时间过得这么慢呢?这两周的确过的不好,本来上周写了一篇很长的文章,可是自己始终放不下,所以还是留给自己回味,生活总得继续.春分,我想

[仙吕?一半儿]踏青

[仙吕•一半儿]踏青 阳春三月柳梢新, 妹妹哥哥齐踏青. 芳草汀洲舞步盈. 意情真, 一半儿娇来一半儿嗔.

一次性验证码

import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOExcepti

南岳首次全年开放y4

阳春三月会去武汉大学看樱花,四月底会回北方老家摘洋槐花,端午节会挂菖蒲和艾草,深秋时节会去岳麓山赏枫叶,冬至一定要自己包一顿饺子-- 我在梁家河插队7年,其中两年做大队党支部书记.记得有一次组织支部书记去大寨参观,我正好村里有事,没有去成.去了的人回来说,他们那里天天吃白面都行,但人家说了,为了支援社会主义建设,要把白面留下来,吃玉米棒子.有人说,咱们是不是也定一个目标,学大寨的目标就是一年四季能吃上玉米面.我说,这个目标很宏大啊,咱们争取实现它. 红网长沙2月23日讯(时刻新闻记者 杨烊 汤红

当时只道是寻常

当时只道是寻常 2015-03-28 Lover雪儿 ? ????阳春三月,粉红色的樱花悄悄的飘落枝梢,没有零零星星的凄然,亦无花枝招展的绝艳,不多不少,恰到好处. ? ????漫步樱花小道,却总感觉与这情境格格不入,此时,你若在,多好,这美丽的樱花,还有那美丽的樱花传说- ? ????天公貌似总是那么的不遂人愿,曾经的曾经,都怪我太不懂事了,失去了才懂得珍惜,当时只道是寻常,貌似是再合适不过了. ? ????走走停停,眼中充斥的却不是樱花,远处的樱花树下,模糊的转角处,幻想着你会不会突然的出现

中职日语教学生动化的尝试

近年来,普通高中和高等院校不断扩招,导致了职业学校的生源质量普遍下降.学生的知识基础薄弱,学习能力不高,对文化课学习特别是外语学习产生了惧怕心理.他们对外语学习感到有很大的心理压力,有些学生甚至产生了厌倦情绪,失去了学习信心.而当这些学生走进职业学校时,我们要如何帮助他们重拾信心,把枯燥无味的日语课堂生动化,形象化,让学生有信心接受这门新的外语,有兴趣学习这门全新的学科呢?这就需要日语教师勤思考.多动脑,转变传统观念,开拓新的教育方法.对此,笔者结合八年的日语教学,整理如下观点,希望和同行们一起

肖捷:今年中央p

沅陵县水文局局长付蓉表示,在3月底前,县水文局将对所属的64个雨量站点进行全面检查和维护,力争尽早全面完成汛前准备工作,为今年防汛抗旱工作打下坚实的基础. 阳春三月会去武汉大学看樱花,四月底会回北方老家摘洋槐花,端午节会挂菖蒲和艾草,深秋时节会去岳麓山赏枫叶,冬至一定要自己包一顿饺子-- 我在梁家河插队7年,其中两年做大队党支部书记.记得有一次组织支部书记去大寨参观,我正好村里有事,没有去成.去了的人回来说,他们那里天天吃白面都行,但人家说了,为了支援社会主义建设,要把白面留下来,吃玉米棒子.有