新手开发安卓app的欢迎界面

程序已经写好了 想加一个图片作为欢迎页面 再点击一下进入主页面
没什么思路 是要在做一个界面然后加个按钮吗?
希望大神解答
为什么这样修改之后做程序会停止运行呢?
这是修改之前

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SearchView searchview = (SearchView)findViewById(R.id.searchView);
        searchview.setOnQueryTextListener(this);
        //初始化载入数据库的数据
        list = Utils.getList();
        if(list.isEmpty())   
            loadFromDatabase(list);      //先检查缓存,若没有数据再从数据库加载

        Utils.MillisToDate(list);
        listAdapter = new SimpleAdapter(this,list,R.layout.list_item,new String[]{"datetime","content"},
                new int[]{R.id.datetime,R.id.content});
        setListAdapter(listAdapter);                      //将备忘录数据显示出来
        Button button = (Button)findViewById(R.id.createButton);
        button.setOnClickListener(new ClickListener());
        getListView().setOnItemClickListener(new ListItemClickListener());
        getListView().setOnItemLongClickListener( new ItemLongClickListener());
    }

这是修改之后 app会停止运行

 protected void onCreate(Bundle savedInstanceState) 
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.jump);

        /* 以findViewById()取得Button对象,并添加onClickListener */
        Button b1 = (Button) findViewById(R.id.jumpbutton);
        b1.setOnClickListener(new Button.OnClickListener()
        {
          public void onClick(View v)
          {
            jumpToLayout2();
          }
        });
      }




protected void jumpToLayout2() {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SearchView searchview = (SearchView)findViewById(R.id.searchView);
        searchview.setOnQueryTextListener(this);
        //初始化载入数据库的数据
        list = Utils.getList();
        if(list.isEmpty())   
            loadFromDatabase(list);      //先检查缓存,若没有数据再从数据库加载

        Utils.MillisToDate(list);
        listAdapter = new SimpleAdapter(this,list,R.layout.list_item,new String[]{"datetime","content"},
                new int[]{R.id.datetime,R.id.content});
        setListAdapter(listAdapter);                      //将备忘录数据显示出来
        Button button = (Button)findViewById(R.id.createButton);
        button.setOnClickListener(new ClickListener());
        getListView().setOnItemClickListener(new ListItemClickListener());
        getListView().setOnItemLongClickListener( new ItemLongClickListener());
    }

明明就是加了一个按钮判断加xml跳转 结果app都打不开 请问为什么会这样呢?

5个回答

这个跟普通的Activity一样,你把欢迎界面作为启动界面就行了

leoleeloveCS
leoleeloveCS 可不可以再帮我回答一下呢?我编辑了问题 自己加了代码之后app停止运行
接近 4 年之前 回复
leoleeloveCS
leoleeloveCS 可不可以再帮我回答一下呢?我编辑了问题 自己加了代码之后app停止运行
接近 4 年之前 回复

可以在里面进行设置一下,把你想要的欢迎页面直接设置成启动页面就可以了!

leoleeloveCS
leoleeloveCS 可不可以再帮我回答一下呢?我编辑了问题 自己加了代码之后app停止运行
接近 4 年之前 回复

可以加按钮,也可以在最后一页滑动的时候关闭。

crazy1235
月盡天明 jumpToLayout2方法里面这样写: Intent intent = new Intent(this, xxxx.class); startActivity(intent); finish();
接近 4 年之前 回复
leoleeloveCS
leoleeloveCS 可不可以再帮我回答一下呢?我编辑了问题 自己加了代码之后app停止运行
接近 4 年之前 回复

http://blog.csdn.net/wei_smile/article/details/51167220
最近刚写的跟引导页有关的,里面有Demo提供下载

Wei_Smile
李牧羊 回复leoleeloveCS: 你把Log报错信息贴出来会好很多
接近 4 年之前 回复
leoleeloveCS
leoleeloveCS 谢谢啦 可不可以再帮我回答一下呢?我编辑了问题 自己加了代码之后app停止运行
接近 4 年之前 回复

可以使用欢迎动画啊。

imageView = (ImageView)findViewById(R.id.welcome_image_view);

alphaAnimation = AnimationUtils.loadAnimation(this, R.anim.welcome_alpha);

alphaAnimation.setFillEnabled(true); //启动Fill保持

alphaAnimation.setFillAfter(true); //设置动画的最后一帧是保持在View上面

imageView.setAnimation(alphaAnimation);

alphaAnimation.setAnimationListener(this); //为动画设置监听

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
安卓求解:这样的界面是怎么做到的
![图片说明](https://img-ask.csdn.net/upload/201608/10/1470798344_443508.png) ![图片说明](https://img-ask.csdn.net/upload/201608/10/1470798353_446738.png) 安卓新手,最近在做一个类似新闻类的app,先请教一下像google的新闻app这样的界面怎么实现,主要是不是很懂怎样像它那样做到item点了向下后可以显示更多的信息,求思路
安卓新手 界面底部工具栏设置三个图片按键,点击切换时一直报错,麻烦高手指点下。
Eclipse调试错误信息如下: ![图片说明](https://img-ask.csdn.net/upload/201509/07/1441617900_57802.png) MainActivity.java代码如下: package activity; import com.example.social.R; import fragment.OneFragment; import fragment.ThreeFragment; import fragment.TwoFragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; public class MainActivity extends FragmentActivity implements OnClickListener { private Fragment mOneFragment; private Fragment mTwoFragment; private Fragment mThreeFragment; private View currentButton; private ImageButton mNews, mSetting, mConstact; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); } private void initView() { // TODO Auto-generated method stub mOneFragment = getSupportFragmentManager().findFragmentById( R.id.fragment_one);// 第一页 mTwoFragment = getSupportFragmentManager().findFragmentById( R.id.fragment_two);// 第二页 mThreeFragment = getSupportFragmentManager().findFragmentById( R.id.fragment_three);// 第三页 findView(); } private void findView() { // TODO Auto-generated method stub mNews = (ImageButton) findViewById(R.id.buttom_news);// 消息 mConstact = (ImageButton) findViewById(R.id.buttom_constact);// 联系人 mSetting = (ImageButton) findViewById(R.id.buttom_setting);// 我 mNews.setOnClickListener(this); mConstact.setOnClickListener(this); mSetting.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.buttom_news: getSupportFragmentManager().beginTransaction().hide(mTwoFragment) .hide(mThreeFragment).show(mOneFragment).commit(); setButton(v); break; case R.id.buttom_constact: getSupportFragmentManager().beginTransaction().hide(mOneFragment) .hide(mThreeFragment).show(mTwoFragment).commit(); setButton(v); break; case R.id.buttom_setting: getSupportFragmentManager().beginTransaction().hide(mOneFragment) .hide(mTwoFragment).show(mThreeFragment).commit(); setButton(v); break; default: getSupportFragmentManager().beginTransaction().hide(mOneFragment) .hide(mTwoFragment).hide(mThreeFragment).commit(); break; } } private void setButton(View v) { if (currentButton != null && currentButton.getId() != v.getId()) { currentButton.setEnabled(true); } v.setEnabled(false); currentButton = v; } } main.layout代码如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/buttom_bar_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center_vertical" android:orientation="horizontal" > <RelativeLayout style="@style/ButtomBar" > <ImageButton android:id="@+id/buttom_news" style="@style/ButtomBarImgBtn" android:background="@drawable/bar_news" android:contentDescription="@string/app_name" /> </RelativeLayout> <RelativeLayout style="@style/ButtomBar" > <ImageButton android:id="@+id/buttom_constact" style="@style/ButtomBarImgBtn" android:background="@drawable/bar_constact" android:contentDescription="@string/app_name" /> </RelativeLayout> <RelativeLayout style="@style/ButtomBar" > <ImageButton android:id="@+id/buttom_setting" style="@style/ButtomBarImgBtn" android:background="@drawable/bar_setting" android:contentDescription="@string/app_name" /> </RelativeLayout> </LinearLayout> <View android:id="@+id/line" android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_above="@id/buttom_bar_group" android:background="#CBCED2" /> <FrameLayout android:id="@+id/fl_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/line" > <fragment android:id="@+id/fragment_one" android:name="fragment.OneFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> <fragment android:id="@+id/fragment_two" android:name="fragment.TwoFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> <fragment android:id="@+id/fragment_three" android:name="fragment.ThreeFragment" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </RelativeLayout> selector设置图片Button控件,其中的联系人控件: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/skin_tab_icon_contact_selected" android:state_enabled="false"/> <item android:drawable="@drawable/skin_tab_icon_contact_selected" android:state_pressed="true"/> <item android:drawable="@drawable/skin_tab_icon_contact_normal"/> </selector> 错误详细描述: 点击图片按键时,显示停止运行,然后重新载入主界面,主界面三个fragment叠加显示出来。 耽误高手一点点时间指点下,谢谢。
如何实现Android Studio 里点击按钮然后进入另一界面,然后可以输入文字并保存
操作代码该怎么写?本人想做个手账类的app,新手求大神指导。
android新手 输入账号密码后点击登录却直接退回桌面
如题,自己半抄半写了一个app 服务器用的bmob 刚做好登录界面 可以成功登录 后来加了一个发表图片的方法后登录就出现退回桌面的问题 看logcat找不到异常 很苦恼 望各位相助
安卓中的图片&模块&功能实现
(新手)做一款基于Iptables的安卓APP(手机卫士/防火墙),实现4个功能:屏蔽和允许程序上网,设置黑白名单,统计上网流量,能够对手机网络通信进行监控,及时阻止恶意程序的联网操作。现在假如实现了4个功能,怎么样在登陆界面完成后自动显示出这四个模块,并且点击任何一个模块的图案就会进入对应的模块实现对应的功能?图片和功能之间的这种契合是怎么做到的?
安卓新手问题,小白求教大神们
写侧滑界面有两个报错 import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; public class Listleft extends FragmentActivity { public static final String[] TITLES = { "First", "Second" }; private LinearLayout mDrawer_layout; private RelativeLayout mMenu_layout_left; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.leftfragmenty); mDrawer_layout = (LinearLayout) findViewById(R.id.drawer_layout); mMenu_layout_left = (RelativeLayout)findViewById(R.id.menu_left_out); ListView menu_listview_l = (ListView) mMenu_layout_left.findViewById(R.id.menu_listView_l); menu_listview_l.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,TITLES)); menu_listview_l.setOnItemClickListener(new DrawerItemClickListenerLeft()); } public class DrawerItemClickListenerLeft implements OnItemClickListener{ public void onItemClick(AdapterView<?> parent, View view, int position, long id){ FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment fragment = null; switch (position){ case 0: fragment = new FirstFragment(); break; case 1: fragment = new SecondFragment(); break; default: break; } ft.replace(R.id.fragment_layout,fragment); ft.commit(); mDrawer_layout.closeDrawer(mMenu_layout_left); } } } 第一个是说类型不兼容,FirstFragment类不能转变成Fragement 这是我的FirstFragment类 public class FirstFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstance){ return inflater.inflate(R.layout.fragment_first,null); } } 还有一个是 mDrawer_layout.closeDrawer(mMenu_layout_left); 无法resovle这个方法
新手做课题 有些许不懂 求帮助
我所需要做的是一个打砖块的代码,我现在遇到的问题是: 1:首先呢,我想改变一下我的程序图标。 2:怎么样才能使之出发事件,让点击“关于游戏”能进入一个新的界面由TextView做的文本,还有点击“开始游戏”进入游戏的事件触发代码这些我都不大会。 新手,希望找一个高手当师傅,在校学生,当开课的时候会进步很快的。 下面就是我自己编的代码,额,有点烂有点乱,但我只学了3天,还是自学,没办法,老师要求让做的课题,别笑我啊.. package sen.tan; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; public class dazhuankuaiActivity extends Activity { private TextView textview; Button kaishi,jieshu,guanyu; ImageView image; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String string = "欢迎进入疯狂打砖块游戏"; image = (ImageView) this.findViewById(R.id.image); image.setImageResource(R.drawable.img1); textview =(TextView) this.findViewById(R.id.textview); textview.setTextSize(20); textview.setTextColor(Color.GREEN); textview.setBackgroundColor(Color.RED); textview.setText(string); kaishi=(Button)findViewById(R.id.button1); guanyu=(Button)findViewById(R.id.button2); jieshu=(Button)findViewById(R.id.button3); kaishi.setWidth(250); guanyu.setWidth(200); jieshu.setWidth(150); kaishi.setTextSize(40); guanyu.setTextSize(30); jieshu.setTextSize(20); jieshu.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { dazhuankuaiActivity.this.finish(); } }); guanyu.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ } }); } }
登录成功了却显示app停止运行,为什么点了确定后竟然就进入登录成功后的界面?
这是登录代码的实现 ```db = helper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from user", null); int count = cursor.getCount(); for (int i = 0; i < count; i++) { cursor.moveToPosition(i); if (str_un.equals(cursor.getString(cursor.getColumnIndex("name"))) && str_pw.equals(cursor.getString(cursor.getColumnIndex("password")))) { Toast.makeText(LoginActivity.this, "登录成功!", Toast.LENGTH_SHORT).show(); cursor.close(); db.close(); startActivity(intent); } else if (i == count - 1) { Toast.makeText(LoginActivity.this, "账号或密码错误!", Toast.LENGTH_SHORT).show(); cursor.close(); db.close(); loginUsername.setText(""); loginPassword.setText(""); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201901/14/1547454117_657866.png) 点了确定后进入了登录后的界面,这是为什么? Android新手 求大神指教!!!
【安卓新手求助】关于数据库、服务器、客户端之间关系的问题,我已经彻底糊涂了
想跟好哥们一起做一个app,无奈都要重头开始。听一个大神讲了很多却发现几乎听不懂。当前已用eclipse搭建了几个界面,这是用在客户端的我明白,但是为啥服务端也要用eclipse编写啊?大神先说用json后说javabean,我在网上搜索了一圈,还是不太懂为什么服务端和客户端的编写都用eclipse,用javabean编写客户端也添加在这个工程里吗?那get,set用javabean编写?客户端在写get,set?那数据库又怎么和服务器建立联系呢?socket又是做什么的?我已经完全糊涂了。。。 我深知自己的语言已经和精神一样错乱,但我只想明白他们之间的关系以及javabean,socket都是干嘛使得。。。求各位路过的好心人给予指点,帮我理清这一坨乱麻。
新手不会使用ExpandListView。。指点下
实现Tab fragment切换界面时,其中一个fragment内部用ExpandListView实现二级下拉列表,但是一直没有内容显示。。。在网上找资料修改的但有点乱,,已经不知道是哪里的问题了。。。 ``` package com.example.hospital; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ImageView; import android.widget.TextView; public class OrderExpandableListviewAdapter extends BaseExpandableListAdapter { private Context context; private LayoutInflater mLayoutInflater; private List<KeShi_1> groups; public OrderExpandableListviewAdapter() { super(); // TODO Auto-generated constructor stub } public OrderExpandableListviewAdapter(Context context, List<KeShi_1> groups) { super(); this.context = context; this.groups = groups; mLayoutInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getGroupCount() { // TODO Auto-generated method stub return groups.size(); } @Override public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return groups.get(groupPosition).getChild().size(); } @Override public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return groups.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return groups.get(groupPosition).getChild().get(childPosition); } @Override public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childPosition; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { KeShi_1 k1=new KeShi_1(); View view; ViewHolder viewHolder; if (convertView == null) { view = mLayoutInflater.inflate(R.layout.group_list, null); viewHolder = new ViewHolder(); viewHolder.groupImageView = (ImageView) view .findViewById(R.id.group_list_image); viewHolder.groupTextView = (TextView) view .findViewById(R.id.group_list_text); view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.groupImageView.setTag(k1.getImage()); viewHolder.groupTextView.setTag(k1.getName()); return view; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { // TODO Auto-generated method stub KeShi_2 k2=new KeShi_2(); View view; ViewHolder viewHolder; if (convertView == null) { view = mLayoutInflater.inflate(R.layout.child_list, null); viewHolder = new ViewHolder(); viewHolder.childImageView = (ImageView) view .findViewById(R.id.child_list_image); viewHolder.childTextView = (TextView) view .findViewById(R.id.child_list_text); view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.childImageView.setTag(k2.getImage()); viewHolder.childTextView.setTag(k2.getName()); return view; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } class ViewHolder { ImageView groupImageView; ImageView childImageView; TextView groupTextView; TextView childTextView; } } ``` ``` package com.example.hospital; import java.util.ArrayList; import java.util.FormattableFlags; import java.util.HashMap; import java.util.List; import com.example.hospital.R.id; import android.app.Activity; import android.app.Fragment; import android.content.Loader.ForceLoadContentObserver; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ExpandableListView; public class OrderFragment extends Fragment { private List<KeShi_1> groupk1; ExpandableListView mExpandableListView; OrderExpandableListviewAdapter mExpandableListviewAdapter; @Override @Deprecated public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); init(); mExpandableListviewAdapter = new OrderExpandableListviewAdapter( activity, groupk1); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.tab04, container, false); mExpandableListView = (ExpandableListView) view .findViewById(R.id.expandable_list); init(); mExpandableListView.setAdapter(mExpandableListviewAdapter); return view; } private void init() { groupk1 = new ArrayList<KeShi_1>(); List<KeShi_2> groupk2 = new ArrayList<KeShi_2>(); KeShi_2 k2=new KeShi_2("111",0,"很好"); groupk2.add(k2); k2=new KeShi_2("112",0,"优秀"); groupk2.add(k2); KeShi_1 k1=new KeShi_1("科室一",0,groupk2); } } ```
关于SimpleAdapter的几点疑问
新手刚学安卓,今天看到GridView组件,用SimpleAdapter实现,但是代码中有看不懂的地方 package org.crazyit.ui; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.GridView; import android.widget.ImageView; import android.widget.SimpleAdapter; /** * Description: * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ public class GridViewTest extends Activity { GridView grid; ImageView imageView; int[] imageIds = new int[] { R.drawable.bomb5 , R.drawable.bomb6 , R.drawable.bomb7 , R.drawable.bomb8 , R.drawable.bomb9 , R.drawable.bomb10 , R.drawable.bomb11 , R.drawable.bomb12 , R.drawable.bomb13 , R.drawable.bomb14 , R.drawable.bomb15 , R.drawable.bomb16 }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 创建一个List对象,List对象的元素是Map List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < imageIds.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", imageIds[i]); listItems.add(listItem); } // 获取显示图片的ImageView imageView = (ImageView) findViewById(R.id.imageView); // 创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems // 使用/layout/cell.xml文件作为界面布局 , R.layout.cell, new String[] { "image" }, new int[] { R.id.image1 }); grid = (GridView) findViewById(R.id.grid01); // 为GridView设置Adapter grid.setAdapter(simpleAdapter); // 添加列表项被选中的监听器 grid.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // 显示当前被选中的图片 imageView.setImageResource(imageIds[position]); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); // 添加列表项被单击的监听器 grid.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 显示被单击的图片的图片 imageView.setImageResource(imageIds[position]); } }); } } ``` ``` 第一点 ,Map接口中的Key不是唯一的么,为什么在循环中key都是image 代码如下 ``` for (int i = 0; i < imageIds.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); listItem.put("image", imageIds[i]); listItems.add(listItem); } ``` 第二点,对于simpleAdapter中第三个参数也就是哪个布局,这个cell布局里面只有一个imageView,但是主布局里面已经有了一个imageView啊,意义何在,下面上图 ![图片说明](https://img-ask.csdn.net/upload/201505/18/1431941501_761080.png) 主布局文件如下: ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <!-- 定义一个GridView组件 --> <GridView android:id="@+id/grid01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:horizontalSpacing="1pt" android:numColumns="4" android:verticalSpacing="1pt" > </GridView> <!-- 定义一个ImageView组件 --> <ImageView android:id="@+id/imageView" android:layout_width="240dp" android:layout_height="240dp" android:layout_gravity="center_horizontal" /> </LinearLayout> ```
新手请教ListView 刷新问题
这是显示ListView的界面 package com.security.phonepolice.view; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.json.JSONException; import org.json.JSONObject; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; import com.security.phonepolice.ContantValues; import com.security.phonepolice.R; import com.security.phonepolice.entity.Msgbean; import com.security.phonepolice.http.MyHttpclient; import com.security.phonepolice.util.SharedPreferenceUtil; import com.security.phonepolice.view.MessageManager.NotificationAdapter; import com.security.phonepolice.view.OAFileFragment.FileViewHolder; import com.security.phonepolice.view.widget.MyListView; import com.security.phonepolice.view.widget.MyListView.RefreshListener; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class OANotifyFragment extends Fragment implements OnClickListener, OnItemClickListener{ private View view; private ImageView mPreIv; private MyListView mNotifyLv; private LayoutInflater mInflater; private NotifyAdapter adapter = null; private TextView notifyUpload; private List<Msgbean> mList; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.oa_notify_ui, container, false); mInflater = inflater; init(); initEvent(); return view; } private void init() { mNotifyLv = (MyListView) view.findViewById(R.id.oa_notify_lv); } private void initEvent() { mList = new ArrayList<Msgbean>(); adapter = new NotifyAdapter(mList); mNotifyLv.setOnItemClickListener(this); mNotifyLv.setAdapter(adapter); mNotifyLv.setOnRefreshListener(new RefreshListener() { @Override public Object refreshing() { RequestParams params = new RequestParams(); params.put("action", "Message"); String serverAdd = SharedPreferenceUtil.getServerStringSP(getActivity(), "config", "serverAdd"); MyHttpclient.post(serverAdd+ContantValues.IDCARD_URL, params, new AsyncHttpResponseHandler(){ @Override public void onSuccess( int statusCode, Header[] headers, String content) { super.onSuccess(statusCode, headers, content); if (!content.equals("failed")) { Msgbean msgBean = new Msgbean(); try { JSONObject jsonObject=new JSONObject(content); msgBean.setTitle(jsonObject.getString("TITLE")); msgBean.setContent(jsonObject.getString("CONTENT")); Log.i("-----------", jsonObject.getString("TITLE")); List<Msgbean> list = new ArrayList<Msgbean>(); list.add(msgBean); mList = list; adapter.notifyDataSetChanged(); } catch (JSONException e) { e.printStackTrace(); } }else { Toast.makeText(getActivity(), "刷新失败", Toast.LENGTH_LONG).show(); } } @Override public void onFailure( Throwable error, String content) { Toast.makeText(getActivity(), "连接失败", Toast.LENGTH_LONG).show(); super.onFailure(error, content); } } ); return null; } @Override public void refreshed(Object obj) { Toast.makeText(getActivity(), "刷新完毕", Toast.LENGTH_LONG).show(); } @Override public void more() { Toast.makeText(getActivity(), "正在加载", Toast.LENGTH_LONG).show(); } }); } class NotifyAdapter extends BaseAdapter{ private List<Msgbean> list; public NotifyAdapter(List<Msgbean> list) { this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { NotifyViewHolder viewHolder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.oa_item, null); viewHolder = new NotifyViewHolder(); viewHolder.itemIv = (ImageView) convertView.findViewById(R.id.oa_item_iv); viewHolder.itemTitle = (TextView) convertView.findViewById(R.id.oa_item_title); viewHolder.itemContent = (TextView) convertView.findViewById(R.id.oa_item_content); convertView.setTag(viewHolder); }else { viewHolder = (NotifyViewHolder) convertView.getTag(); } viewHolder.itemIv.setImageResource(R.drawable.notification_small); viewHolder.itemTitle.setText(list.get(position).getTitle()); viewHolder.itemContent.setText(list.get(position).getContent()); return convertView; } } public static class NotifyViewHolder{ public ImageView itemIv; public TextView itemTitle; public TextView itemContent; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = null; if (position > 0) { //去服务器拉取警情的详细信息 intent = new Intent(); intent.putExtra("InfoTag", "OANotify"); intent.setClass(getActivity(), MessageDetail.class); startActivity(intent); } } } 这是在网上找到的自定义的ListView package com.security.phonepolice.view.widget; import java.text.SimpleDateFormat; import java.util.Date; import com.security.phonepolice.R; import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; /** * 下拉刷新,底部更多 * */ public class MyListView extends ListView implements OnScrollListener{ private float mDownY; private float mMoveY; private int mHeaderHeight; private int mCurrentScrollState; private final static int NONE_PULL_REFRESH = 0; //正常状态 private final static int ENTER_PULL_REFRESH = 1; //进入下拉刷新状态 private final static int OVER_PULL_REFRESH = 2; //进入松手刷新状态 private final static int EXIT_PULL_REFRESH = 3; //松手后反弹和加载状态 private int mPullRefreshState = 0; //记录刷新状态 private final static int REFRESH_BACKING = 0; //反弹中 private final static int REFRESH_BACED = 1; //达到刷新界限,反弹结束后 private final static int REFRESH_RETURN = 2; //没有达到刷新界限,返回 private final static int REFRESH_DONE = 3; //加载数据结束 private LinearLayout mHeaderLinearLayout = null; private LinearLayout mFooterLinearLayout = null; private TextView mHeaderTextView = null; private TextView mHeaderUpdateText = null; private ImageView mHeaderPullDownImageView = null; private ImageView mHeaderReleaseDownImageView = null; private ProgressBar mHeaderProgressBar = null; private TextView mFooterTextView = null; private ProgressBar mFooterProgressBar = null; private SimpleDateFormat mSimpleDateFormat; private Object mRefreshObject = null; private RefreshListener mRefreshListener = null; public void setOnRefreshListener(RefreshListener refreshListener) { this.mRefreshListener = refreshListener; } public MyListView(Context context) { this(context, null); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } void init(final Context context) { mHeaderLinearLayout = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.refresh_list_header, null); addHeaderView(mHeaderLinearLayout); mHeaderTextView = (TextView) findViewById(R.id.refresh_list_header_text); mHeaderUpdateText = (TextView) findViewById(R.id.refresh_list_header_last_update); mHeaderPullDownImageView = (ImageView) findViewById(R.id.refresh_list_header_pull_down); mHeaderReleaseDownImageView = (ImageView) findViewById(R.id.refresh_list_header_release_up); mHeaderProgressBar = (ProgressBar) findViewById(R.id.refresh_list_header_progressbar); mFooterLinearLayout = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.refresh_list_footer, null); addFooterView(mFooterLinearLayout); mFooterProgressBar = (ProgressBar) findViewById(R.id.refresh_list_footer_progressbar); mFooterTextView = (TextView) mFooterLinearLayout.findViewById(R.id.refresh_list_footer_text); mFooterLinearLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if ("加载更多".equals(mFooterTextView.getText())) { mFooterTextView.setText("正在加载"); mFooterProgressBar.setVisibility(View.VISIBLE); if (mRefreshListener != null) { mRefreshListener.more(); } } } }); setSelection(1); setOnScrollListener(this); measureView(mHeaderLinearLayout); mHeaderHeight = mHeaderLinearLayout.getMeasuredHeight(); mSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm"); mHeaderUpdateText.setText("下拉刷新"+ mSimpleDateFormat.format(new Date())); } @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mDownY = ev.getY(); break; case MotionEvent.ACTION_MOVE: mMoveY = ev.getY(); if (mPullRefreshState == OVER_PULL_REFRESH) { mHeaderLinearLayout.setPadding(mHeaderLinearLayout.getPaddingLeft(), (int)((mMoveY - mDownY)/3), mHeaderLinearLayout.getPaddingRight(), mHeaderLinearLayout.getPaddingBottom()); } break; case MotionEvent.ACTION_UP: //when you action up, it will do these: //1. roll back util header topPadding is 0 //2. hide the header by setSelection(1) if (mPullRefreshState == OVER_PULL_REFRESH || mPullRefreshState == ENTER_PULL_REFRESH) { new Thread() { public void run() { Message msg; while(mHeaderLinearLayout.getPaddingTop() > 1) { msg = mHandler.obtainMessage(); msg.what = REFRESH_BACKING; mHandler.sendMessage(msg); try { sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } msg = mHandler.obtainMessage(); if (mPullRefreshState == OVER_PULL_REFRESH) { msg.what = REFRESH_BACED; } else { msg.what = REFRESH_RETURN; } mHandler.sendMessage(msg); }; }.start(); } break; } return super.onTouchEvent(ev); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (mCurrentScrollState == SCROLL_STATE_TOUCH_SCROLL && firstVisibleItem == 0 && (mHeaderLinearLayout.getBottom() >= 0 && mHeaderLinearLayout.getBottom() < mHeaderHeight)) { //进入且仅进入下拉刷新状态 if (mPullRefreshState == NONE_PULL_REFRESH) { mPullRefreshState = ENTER_PULL_REFRESH; } } else if (mCurrentScrollState == SCROLL_STATE_TOUCH_SCROLL && firstVisibleItem == 0 && (mHeaderLinearLayout.getBottom() >= mHeaderHeight)) { //下拉达到界限,进入松手刷新状态 if (mPullRefreshState == ENTER_PULL_REFRESH || mPullRefreshState == NONE_PULL_REFRESH) { mPullRefreshState = OVER_PULL_REFRESH; mDownY = mMoveY; //为下拉1/3折扣效果记录开始位置 mHeaderTextView.setText("松手刷新");//显示松手刷新 mHeaderPullDownImageView.setVisibility(View.GONE);//隐藏"下拉刷新" mHeaderReleaseDownImageView.setVisibility(View.VISIBLE);//显示向上的箭头 } } else if (mCurrentScrollState == SCROLL_STATE_TOUCH_SCROLL && firstVisibleItem != 0) { //不刷新了 if (mPullRefreshState == ENTER_PULL_REFRESH) { mPullRefreshState = NONE_PULL_REFRESH; } } else if (mCurrentScrollState == SCROLL_STATE_FLING && firstVisibleItem == 0) { //飞滑状态,不能显示出header,也不能影响正常的飞滑 //只在正常情况下才纠正位置 if (mPullRefreshState == NONE_PULL_REFRESH) { setSelection(1); } } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { mCurrentScrollState = scrollState; } @Override public void setAdapter(ListAdapter adapter) { super.setAdapter(adapter); setSelection(1); } private void measureView(View child) { ViewGroup.LayoutParams p = child.getLayoutParams(); if (p == null) { p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); } int childWidthSpec = ViewGroup.getChildMeasureSpec(0, 0 + 0, p.width); int lpHeight = p.height; int childHeightSpec; if (lpHeight > 0) { childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY); } else { childHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); } child.measure(childWidthSpec, childHeightSpec); } private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case REFRESH_BACKING: mHeaderLinearLayout.setPadding(mHeaderLinearLayout.getPaddingLeft(), (int) (mHeaderLinearLayout.getPaddingTop()*0.75f), mHeaderLinearLayout.getPaddingRight(), mHeaderLinearLayout.getPaddingBottom()); break; case REFRESH_BACED: mHeaderTextView.setText("正在加载..."); mHeaderProgressBar.setVisibility(View.VISIBLE); mHeaderPullDownImageView.setVisibility(View.GONE); mHeaderReleaseDownImageView.setVisibility(View.GONE); mPullRefreshState = EXIT_PULL_REFRESH; new Thread() { public void run() { if (mRefreshListener != null) { mRefreshObject = mRefreshListener.refreshing(); } Message msg = mHandler.obtainMessage(); msg.what = REFRESH_DONE; mHandler.sendMessage(msg); }; }.start(); break; case REFRESH_RETURN: mHeaderTextView.setText("下拉刷新"); mHeaderProgressBar.setVisibility(View.INVISIBLE); mHeaderPullDownImageView.setVisibility(View.VISIBLE); mHeaderReleaseDownImageView.setVisibility(View.GONE); mHeaderLinearLayout.setPadding(mHeaderLinearLayout.getPaddingLeft(), 0, mHeaderLinearLayout.getPaddingRight(), mHeaderLinearLayout.getPaddingBottom()); mPullRefreshState = NONE_PULL_REFRESH; setSelection(1); break; case REFRESH_DONE: mHeaderTextView.setText("下拉刷新"); mHeaderProgressBar.setVisibility(View.INVISIBLE); mHeaderPullDownImageView.setVisibility(View.VISIBLE); mHeaderReleaseDownImageView.setVisibility(View.GONE); mHeaderUpdateText.setText("最新更新"+ mSimpleDateFormat.format(new Date())); mHeaderLinearLayout.setPadding(mHeaderLinearLayout.getPaddingLeft(), 0, mHeaderLinearLayout.getPaddingRight(), mHeaderLinearLayout.getPaddingBottom()); mPullRefreshState = NONE_PULL_REFRESH; setSelection(1); if (mRefreshListener != null) { mRefreshListener.refreshed(mRefreshObject); } break; default: break; } } }; public interface RefreshListener { Object refreshing(); void refreshed(Object obj); void more(); } public void finishFootView() { mFooterProgressBar.setVisibility(View.GONE); mFooterTextView.setText("更多"); } public void addFootView() { if (getFooterViewsCount() == 0) { addFooterView(mFooterLinearLayout); } } public void removeFootView() { removeFooterView(mFooterLinearLayout); } } 这是实体类: package com.security.phonepolice.entity; public class Msgbean { private int id; private String title; private String content; private String relName; private String relTime; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getRelName() { return relName; } public void setRelName(String relName) { this.relName = relName; } public String getRelTime() { return relTime; } public void setRelTime(String relTime) { this.relTime = relTime; } } 走到这一步法mNotifyLv.setOnRefreshListener(new RefreshListener() 就停了 为什么刷新的时候就是不走接口中的refreshing()方法。求大神指教啊!
安卓访问tomcat抛出FileNotFoundException,显示出错的是获取dis的地方
开发新手,刚接触 望大家指点 代码段 new Thread() { public void run() { String httpURL = "http://115.159.118.230:8080/map/map"; URL url = null; try { url = new URL(httpURL); } catch (MalformedURLException e1) { e1.printStackTrace(); } if (url != null) { try { HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setUseCaches(false); conn.connect(); DataOutputStream dos = new DataOutputStream( conn.getOutputStream()); dos.writeInt(MyProtocal.LOGIN); dos.writeInt(MyProtocal.ID_STUDENT); dos.writeInt(Integer.parseInt(snoEditText.getText().toString())); dos.writeUTF(pwdEditText.getText().toString()); dos.flush(); dos.close(); //程序到这就不运行了 DataInputStream dis = new DataInputStream(conn.getInputStream()); Log.i("tag", "dis"); int b= dis.readInt(); if(b==MyProtocal.OK){ Intent intent1 = new Intent(context, StudentMapActivity.class); startActivity(intent1); } dis.close(); } catch (IOException e) { e.printStackTrace(); } } else { Toast.makeText(context, "url is null", Toast.LENGTH_SHORT).show(); } } }.start(); Logcat: 08-08 20:51:47.454: W/System.err(8915): java.io.FileNotFoundException: http://115.159.118.230:8080/map/map 08-08 20:51:47.454: W/System.err(8915): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 08-08 20:51:47.454: W/System.err(8915): at com.hfuu.map_ts.LoginActivity$3.run(LoginActivity.java:187) tomcat配置文件web.xml <?xml version="1.0" encoding="utf-8"?> <web-app> <servlet> <servlet-name>mapServ</servlet-name> <servlet-class>MapServerHttpServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>mapServ</servlet-name> <url-pattern>/map</url-pattern> </servlet-mapping> </web-app> 登录时tomcat界面也没有打印出任何信息 没反应 希望大家帮忙!
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
全网阅读过20k的Java集合框架常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star!【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!)。 文末有我的公众号,公众号里有我最新整理的Java学习资料,免费分享。 这么好的文章,一定好先赞后看!!!建议养成这个好习惯!!爱你们!???? 剖析面试最常见问题之Java集合框架 当了...
17张图带你解析红黑树的原理!保证你能看懂!
二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的...
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问