3月备忘(3)--截至3.18

1 二维数组中的查找。
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

1 分析:左->右递增,上->下递增。
发现规律:
(1)从左下角开始查找,当要查找数字比左下角数字大时。右移。要查找数字比左下角数字小时。上移。
(2)右上角开始查找,当要查找数字比右上角数字大时。下移。要查找数字比右上角数字小时。左移。
(3)二分法,遍历所有行,对每一行使用二分法查找。

2 编码:
(1)记录矩阵特殊点(左下、右上)坐标,row(array.length-1),col(array[0].length-1)。注意二维数组行列的范围。
(2)比较大小,移动行列。
(3)二分法,注意low和high下标的变换。左侧high=mid-1,右侧low=mid+1。

// 左下角
public static boolean Find1(int target, int [][] array) {
        int row = array.length-1;
        int col = 0;

        while(row>=0 && col<=array.length-1){
            if(target == array[row][col]){
                return true;
            }else if(target >= array[row][col]){
                col++;
            }else{
                row--;
            }
        }
        return false;
    }
/**
     * 把每一行看成有序递增的数组,利用二分查找,通过遍历每一行得到答案,
     * 时间复杂度是nlogn
     * @param:
     * @return:
     * @date: 2018-3-12  
     */
    public static boolean Find3(int target, int [][] array) {
        for(int i=0;i<array.length;i++){
            int low = 0;
            int high = array.length-1;
            while(low<=high){
                int mid = (low+high)/2;
                if(target < array[i][mid]){
                    high = mid-1;
                }else if(target > array[i][mid]){
                    low = mid+1;
                }else{
                    return true;
                }
                
            }
        }
        return false;
    }

2 护眼色的RGB值和颜色代码

色调:85;饱和度:123;亮度:205,

R: 199; G: 237; B:204;

181 229 181 ??IN WINDOWS

颜色代码是: #C7EDCC

3 真机访问Tomcat中的内容

地址:本机IP+端口号
如果该方法不行,可以尝试如下方法:
1 关闭防火墙;2 使用Technitium MAC Address Changer修改IP地址

或者使用Genymotion
https://www.cnblogs.com/liu184/articles/5621985.html

4 Android开发规范

http://keeganlee.me/post/android/20150709

自己制定的规范

 <com.viewpagerindicator.TabPageIndicator
            android:id="@+id/tp_my_indicator"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

第一部分:是控件缩写,使用第一二个大写字母组成
第二部分:是控件所属模块,例如my属于“我的”模块
第三部分:控件的作用。

系统常用灰色值

#D1D1D1

5 使用开源控件ViewPager Indicator时,报错Android java.lang.IllegalStateException: ViewPager has not been bound 的解决办法

使用开源控件ViewPager Indicator时,如果标题数据需要从服务器获取,然后再设置Adapter,这个时候就会报错:ViewPager has not been bound 的错误,其中一种解决办法是,先把 TabPageIndicator 设置为GONE属性,等加载完数据设置Adapter后,再将其设置为VISIBLE。

6 输入一个链表,从尾到头打印链表每个节点的值。

class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}


public class PrintList {
    
    /*
     * 输入一个链表,从尾到头打印链表每个节点的值。
     * */
    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(2);
        ListNode listNode2 = new ListNode(3);
        ListNode listNode3 = new ListNode(4);
        listNode1.next = listNode2;
        listNode2.next = listNode3;
        ArrayList<Integer> printListFromTailToHead = printListFromTailToHead1(listNode1);
        int sum = 0;
        for(int i : printListFromTailToHead){
            sum+=i;
        }
        System.out.println(sum);
    }

    static ArrayList<Integer> arrayList=new ArrayList<Integer>();

    
    /**
     * 通过递归的方式完成
     * @param:
     * @return:
     * @date: 2018-3-13  
     */
    public static ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
        if(listNode!=null){
            arrayList.add(listNode.val);
            if(listNode.next!=null){
                printListFromTailToHead1(listNode.next);
            }
        }
        return arrayList;
    }


    /**
     * 通过堆栈的方式
     * @param:
     * @return:
     * @date: 2018-3-13  
     */
    public static ArrayList<Integer> printListFromTailToHead2(ListNode listNode) {
        //堆栈
        Stack<Integer> stack = new Stack<Integer>();
        while(listNode!=null){
            stack.push(listNode.val);
            listNode = listNode.next;
        }
        //取值,累加
        ArrayList<Integer> list = new ArrayList<Integer>();
        while(!stack.isEmpty()){
            list.add(stack.pop());
        }
        return list;
    }
}

7开源控件ViewPagerIndicator的使用

下面的链接写的很好。

https://www.jianshu.com/p/a2263ee3e7c3
https://www.cnblogs.com/wangying222/p/5863928.html
http://blog.csdn.net/ithouse/article/details/49026917(标题显示不全)

补充一点就是,在初始的AndroidMainfest.xml的Activity中要引用主题。还包括清除头标题。

8 Activity管理Fragment之Fragment关闭当前回到之前Fragment

http://blog.csdn.net/u012382791/article/details/51027507

9 一篇论文完成时,需要问自己几个问题,看是否能回答的出来:

Tips about paper writing and reading

1) 论文的重点是什么?是否已经明确表述?——不要让读者去找,要明确的告诉;
2) 关键技术思想是什么?表述是否清楚?——同上;
3) 你提出的问题是什么?该问题为什么重要?
4) 其他研究者是如何提出同样或者相似问题的?你的方法有什么不同或者为什么好些?
5) 对你提出的问题,你是如何解决的?有什么结果?

批判性的阅读理解文章,回答如下问题:
1) 提出问题的动机是什么?
2) 找出解决方案做出的选择是什么?
3) 解决方案后面有假设吗?是什么?
4) 假设是否明智?是否可以去掉(在不使方法失效的情况下)?
5) 将来的研究方向是什么?
6) 什么是确实完成了或者实现了?
7) 方法依赖的理论依据是什么,是否充分有效?

10 PullToRefreshListView中Item的下标从1开始

11 Android studio查看SQLIte数据库文件

1 http://blog.csdn.net/u014005316/article/details/53674028

2 http://blog.csdn.net/baidu_25797177/article/details/72877628

12 layout布局三等分

http://blog.csdn.net/ly_dengle/article/details/70172918

13 解决在eclipse中导入项目名称已存在的问题

http://blog.csdn.net/yjtgod/article/details/9961397

14 android Studio中右侧布局展示的preview 的显示、固定与隐藏

http://blog.csdn.net/superdhq/article/details/53378154

15 使用百度地图AndroidSDK方法

http://lib.csdn.net/article/android/57801?knId=295

报错:
1 230 uid: -1 appid -1 msg: APP Scode码校验失败
当时是由于包名没写对,不需要写到根。

com.learn.p2pmoney.warmlight

2 200错误
项目名称,大小写不对。

16 Android设置布局的阴影背景

有示例
http://blog.csdn.net/ms03001620/article/details/8235625#
背景样式较全
http://blog.csdn.net/zbjdsbj/article/details/51602571
https://www.cnblogs.com/imqsl/p/6561299.html
http://blog.csdn.net/q390345932/article/details/46536655

17 当EditText编辑时 hint 在 手机上显示不出

1 当EditText编辑时 hint 在 手机上显示不出来

就要增加一句话去重新设置颜色值 android:textColorHint = "#707070"

2 通过

android:gravity="top|left"

让hint中内容居于顶部

18 使用Android自带控件DatePickerDialog设置日期

http://blog.csdn.net/sqf251877543/article/details/78617731
http://blog.csdn.net/suwenlai/article/details/71107748
http://blog.csdn.net/wzsdxs/article/details/52074025
http://blog.csdn.net/fumei59/article/details/47080597

需要注意的地方

  • 1 可以自己设置日期框,具体上面的链接中有方法

  • 2 设置时间的选择范围,需要传递long类型的数据,例如当前年份+1年和-1年的代码如下

dayDialog.getDatePicker().setMaxDate(((new Date().getTime()/1000)+60*60*24*365)*1000);
dayDialog.getDatePicker().setMinDate(((new Date().getTime()/1000)-60*60*24*365)*1000);

http://blog.csdn.net/yf198708/article/details/51859481
http://www.jb51.net/article/101771.htm

项目中的代码

final int themeHoloLight = AlertDialog.THEME_HOLO_LIGHT;//选择系统自带的样式
 rlDateStarttime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startTime = new StringBuilder();
                Calendar day = Calendar.getInstance();
                DatePickerDialog dayDialog = new DatePickerDialog(AddDateActivity.this,themeHoloLight,
                        new DatePickerDialog.OnDateSetListener() {
                            @Override
                            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                                startTime.append(year + "-" + (month + 1) + "-" + dayOfMonth + " ");
                                Calendar time = Calendar.getInstance();
                                Dialog timeDialog = new TimePickerDialog(AddDateActivity.this, themeHoloLight ,new TimePickerDialog.OnTimeSetListener() {

                                    @Override
                                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                                        startTime.append(hourOfDay+":"+minute);
                                        tvDateShowtime.setVisibility(View.VISIBLE);
                                        tvDateShowtime.setText(startTime);
                                    }
                                }, time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), true);
                                timeDialog.show();
                            }
                        }, day.get(Calendar.YEAR), day.get(Calendar.MONTH), day.get(Calendar.DAY_OF_MONTH));
                //当前年份-1 >= 年份 <= 当前年份+1
                dayDialog.getDatePicker().setMaxDate(((new Date().getTime()/1000)+60*60*24*365)*1000);
                dayDialog.getDatePicker().setMinDate(((new Date().getTime()/1000)-60*60*24*365)*1000);
                dayDialog.show();
            }
        });

19 Android屏蔽EditTex获得焦点

http://blog.csdn.net/qq_15032453/article/details/52191216

20 进入页面EditText取消焦点防止自动弹出输入框

http://blog.csdn.net/liangxiaoyan7002/article/details/52240761

21 Android修改用户头像

https://www.cnblogs.com/zhangqie/p/6560744.html

http://blog.csdn.net/alanjet/article/details/52494996

22 Android 使用sharedpreferences、ACache缓存用户名和密码

http://blog.csdn.net/qq_27385759/article/details/53319268

23 Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回

http://www.cnblogs.com/fuck1/p/5456337.html

24 如何用AndroidStudio导入github项目

https://www.cnblogs.com/Sharley/p/5519053.html

25 Android上传图片功能实现(单独写文章)

http://blog.csdn.net/qq_32521313/article/details/52451364

http://blog.csdn.net/u010983881/article/details/50827273

26 关于Sqllite的一些使用方法

cursor.moveToFirst()指向查询结果的第一个位置。一般通过判断cursor.moveToFirst()的值为true或false来确定查询结果是否为空。

cursor.moveToNext()是用来做循环的,一般这样来用:while(cursor.moveToNext()){ }

rs.isAfterLast:游标始终停到1的位置

27 利用intent来传递int数据

方法一:
通过数据类型转换,不过在有些特殊的情况下这种方法并不适用

int id=10;  

Intent intent = new Intent(this, EditActivity.class);  
intent.putExtra("id", id+"");      // id+"" 这样是把int转成String类型, 否则会报错  
startActivity(intent);  

String sID=getIntent().getStringExtra("id");  
int id=Integer.parseInt(sID);      //String转int  

方法二:
通过bundle这个对象来封装数据进行传递,
例如发送端:

Bundle bundle = new Bundle();  
bundle.putInt("id", 3);  
intent.putExtras(bundle); 

28 android studio无法显示 Android Monitor

http://blog.csdn.net/zxc514257857/article/details/73834327

http://blog.csdn.net/qq_19822039/article/details/51753560

29 设置Textview最大长度,超出显示省略号

http://blog.csdn.net/lonewolf521125/article/details/45481157

30 Android清除本地数据缓存代码

https://www.cnblogs.com/rayray/p/3413673.html

31 注销登陆数据

http://blog.csdn.net/qq_31008549/article/details/54691521

32 实现整个程序退出

https://www.cnblogs.com/zhujiabin/p/5723399.html
http://blog.csdn.net/Sunnyfans/article/details/7688092
http://blog.csdn.net/u013804382/article/details/52788900

33 注销登陆后返回登录界面,按手机返回键仍能返回主界面的问题解决方案

http://blog.csdn.net/kuaizilanqiu/article/details/53068657

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容