自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (6)
  • 收藏
  • 关注

原创 SVN创建分支

第一步在你的需要创建分支的项目上右击,如图:第二步,填上在服务器上你创建的分支文件夹,如图:完成,如图:(记得要刷新)本文参考自:http://www.cnblogs.com/liaojie970/p/4881997.html

2016-06-18 09:55:45 474

原创 SVN的简单使用入门

1,首先来下载和搭建SVN服务器,下载地址如下: http://subversion.apache.org/packages.html2,安装好之后启动如下图:3,右击左侧的Repositories创建版本库,如图4,建好版本库之后要做的事,如图:5,android studio 上的操作,如图6,android studio关联版本库,

2016-06-17 23:24:24 428

原创 安卓设置全屏显示方法

方法一:使用xml的方法,在该项目的AndroidManifest.xml文件中,在需要全屏的Activity元素中添加属性:(注意你的活动类是要继承Activity,才不会出错,继承AppCompatActivity的话会报错,暂时没找到解决的办法,如果你找到了,麻烦告知一下,谢谢,在评论里评论一下即可,有劳了)android:theme="@android:style/

2016-06-30 21:02:59 1217

原创 dp转px sp转px,方法

//dp转pxprotected int dp2px(float dp) { final float scale = mContext.getResources().getDisplayMetrics().density; return (int) (dp * scale + 0.5f);}//sp转pxprotected int sp2px(float sp) {

2016-06-29 20:08:56 551

原创 二维码控件移植需要注意的点

注意布局那个自定义控件路径一定要跟当前项目包路径一致

2016-06-25 21:25:23 304

原创 java保留小数点的位数方法

String.format("%.2f",10.9999);结果为保留两位小数10.99,第一个参数后面的f代表要转化的值为浮点型

2016-06-24 19:58:51 255

原创 使用RecyclerView动画库需要注意的一些配置

1,导入gradle.properties文件到项目2,在项目下的build.gradle文件下引用依赖 classpath 'com.novoda:bintray-release:0.3.4'3,在app模块下的build.gradle文件下 引用依赖 compile project(':animators') RecyclerView项目地址:https://github.com/

2016-06-23 20:14:21 292

原创 使用TabLayout需要配置的一些信息及配合ViewPager的用法

使用TabLayout首先需要在app模块下的build.gradle文件下 引用 compile'com.android.support:design:23.3.0'注意后面的版本(23.3.0,可以参考dependencies {}里面的版本号)要与android studio的一致,否则会崩溃。

2016-06-21 22:16:55 473

原创 设置代码的安全模式

可以看到,现在build.gradle中minifyEnabled的值是false,这里我们只需要把值改成true,打出来的APK包就会是混淆过的了。如下所示:release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro

2016-06-21 08:02:09 567

原创 安卓内存分析工具Mat的基本用法

由于android studio自带的内存监控工具不是很强大,在分析内存泄漏方面比较麻烦,远比不上Eclipse自带的Mat工具,Android Studio没有自带这款工具,所以需要自行下载独立版的Mat,下面先介绍一下它的一些配置及用法:1,首先打开我们的Android Studio软件,进入到DDMS里面如图:2,进去之后点击图片所指的那个按钮,如图:3,生成了h

2016-06-20 14:33:12 3075

原创 安卓内存优化知识

及时释放不需要的资源,对于优化程序、节省内存是很有必要的。下面是我目前了解的需要释放的资源:1、图像:bmp.recycle();bmp = null;2、Handler:当使用handler.post(Runnable)方法时,一般都会在关闭时调用:2、Handler:当使用handler.post(Runnable)方法时,一般都会在关闭时调用:3

2016-06-20 06:19:49 327

原创 ExpandableListView的基本用法

package com.example.k.myapplication;import android.content.Context;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.LayoutInfla

2016-06-19 21:35:57 280

原创 library_PullToRefresh使用时需要配置的一些知识

1、在项目根目录下的settings.gradle下添加第三方库目录include ':app', ':PullToRefresh'  2、在app/build.gradle下添加编译依赖dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.androi

2016-06-19 12:00:20 1216 1

原创 设置android studio 的代码字体大小

2016-06-17 21:19:51 744

原创 安卓实现圆形图片

继承与Viewpackage com.example.k.myqq;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graph

2016-06-07 19:26:54 433

原创 签名窗口的英文翻译

First and Last Name : 第一和最后一个名字Organizational Unit : 组织单位Organization : 组织City or Locality : 城市或地区State or Province : 国家或省Country Code : 国家代码

2016-06-06 22:29:17 671

原创 Android Studio生成apk签名

生成签名教程连接

2016-06-06 21:37:49 236

原创 WebView的用法(实现浏览网页功能)

第一步加权限:布局代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_pa

2016-06-06 18:28:31 654

原创 下拉控件Spinner的简单用法

布局文件:<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinner" android:entries="@array/week" />在values文件夹下

2016-06-06 18:07:30 365

原创 AIDL的简单Demo

第一步创建一个aidl文件如图:然后建一个服务:客户端传递信息给服务端,客户端接收服务端的消息还没实现package com.example.k.aidldemo;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBind

2016-06-06 13:40:28 316

原创 安卓控件点击动画(点击后产生波纹效果)

<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/ic_done_black_24dp" a

2016-06-04 19:51:04 3146 3

原创 安卓搜索框SearchView的基本用法(入门级)

package com.example.k.mysearchview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.view.WindowManager;import android.widget

2016-06-04 17:47:18 1884

原创 安卓矢量图的制作

先来看看点击前和点击后的图片,这是点击前的截图,注意点击之后是在两秒中变换的,当然你也可以自定义时间的长短点击后如下,再说一次是缓慢变化的,不是突然的,还不会制作动态的图片,如果你知道麻烦在下面的评论告诉我一下谢谢,或者私信我也可以。代码如下:(1)这是一个很简洁的活动代码,可以看到我们点击事件里有一个 animate()方法,此方法是用来启动动画的,接着往下看pa

2016-06-03 17:12:42 642

原创 Android Studio 自带的侧滑布局设置

package com.example.k.newapp;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.view.Gravity;import a

2016-06-02 11:56:11 3636

原创 ViewDragHelper和基于此类的两种侧滑布局

package com.example.k.viewdraghelper;import android.content.Context;import android.graphics.Point;import android.support.v4.widget.ViewDragHelper;import android.util.AttributeSet;import android.

2016-06-01 22:17:54 312

原创 Toolbar(标题栏)

主类:package com.example.k.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.Toolbar;import android.view.Menu;import android

2016-06-01 20:48:06 338

原创 Android系统自带样式(android:theme)

Android系统自带样式(android:theme)详解 android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式 android:theme="@android:style/Theme.NoTitleBar" : 不显示应用程序标题栏 android:theme="@android:style/Theme.NoT

2016-06-01 14:57:58 451

原创 自定义attrs.xml与styles.xml还有Theme(主题)

xml version="1.0" encoding="utf-8"?>resources> declare-styleable name="MyView"> attr name="textColor" format="color" /> attr name="textSize" format="dimension" /> declare-style

2016-06-01 12:44:37 1412

原创 Style之flag标签

attr name="textStyle"> flag name="normal" value="0" /> flag name="bold" value="1" /> flag name="italic" value="2" />attr>它也对应了三个值,但这里却使用了flag标签。细心的童鞋可能已经明白了flag与enum的差别,flag表示这几个值可以做或运算

2016-06-01 10:17:14 663

原创 侧滑的布局SlidingPaneLayout和DrawerLayout

记录一下不做讲解:ViewDragHelper是谷歌在2013年的I/O大会上推出的一个用于View拖拽操作的帮助类,借助于该类谷歌同时推出了两个用于侧滑的布局SlidingPaneLayout和DrawerLayout,现在市场上的很多带有侧滑菜单的应用都是基于这两种布局。

2016-06-01 09:39:00 435

网络请求框架Volley

谷歌最近推出的网路请求框架,功能强大,使用简单,只需几行代码即可完成完成网络请求,适用于数据量不大的请求,比如加载图片,JSON,String等,具体使用方法请百度一下吧,很多教程的!

2016-08-13

解析JSON数据的gson库

这是一款出自谷歌公司的Gson库,用来解析JSON数据非常的简单,用法可以参考http://blog.csdn.net/revival_liang/article/details/51819969

2016-07-04

安卓《独立版Mat》内存分析工具

Android Studio自带的内存监控不够强大,所以我们应该选择独立版Mat来弥补这个不足,使用此工具让我们可以更好的分析内存的泄漏问题。

2016-06-20

SwipeListViewTest项目

先来看activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:swipe="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <com.fortysevendeg.swipelistview.SwipeListView android:id="@+id/example_lv_list" android:layout_width="match_parent" android:layout_height="match_parent" android:listSelector="#00000000" swipe:swipeActionLeft="dismiss" swipe:swipeActionRight="reveal" swipe:swipeAnimationTime="0" swipe:swipeBackView="@+id/back" swipe:swipeCloseAllItemsWhenMoveList="true" swipe:swipeFrontView="@+id/front" swipe:swipeMode="both" swipe:swipeOffsetLeft="0dp" swipe:swipeOffsetRight="0dp" swipe:swipeOpenOnLongPress="false" /> </RelativeLayout> 这里就一个swipelistview控件,我说几个不易理解的属性 表示滑动时的操作,dismiss表示滑动时删除,如果设置为reveal表示滑动时会显示出item后面的选项 swipe:swipeActionLeft=”dismiss” swipe:swipeActionRight=”reveal” 这个是背面布局的id(我们把直接看到的布局叫做前面的,滑动之后才能看到的布局叫做背面的),必须与背面布局id对应 swipe:swipeBackView=”@+id/back” 这个是滚动时候是否关闭背面的布局,true表示关闭,false表示不关闭,一般设置为true swipe:swipeCloseAllItemsWhenMoveList=”true” 这个是前面布局的id,要与布局的id对应 swipe:swipeFrontView=”@+id/front” both表示可以向左滑也可以向右滑,right和left分别表示只能向有或者向左滑动。 swipe:swipeMode=”both” 下面两个表示向左或者向右滑动时的偏移量,一般不在xml文件中设置,而是在代码中根据设置的大小来设置偏移量。 swipe:swipeOffsetLeft=”0dp” swipe:swipeOffsetRight=”0dp” 再来看看Item布局文件,这里包括前面的和后面的,两个重叠在一起: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- linearlayout中的布局是每一项后面隐藏的布局 --> <LinearLayout android:id="@+id/back" android:layout_width="match_parent" android:layout_height="80dp" android:background="#eee" android:tag="back" > <Button android:id="@+id/example_row_b_action_1" android:layout_width="0dp" android:layout_height="60dp" android:layout_gravity="center" android:layout_marginRight="10dp" android:layout_weight="1" android:text="测试" /> <Button android:id="@+id/example_row_b_action_2" android:layout_width="0dp" android:layout_height="60dp" android:layout_gravity="center" android:layout_marginLeft="10dp" android:layout_weight="1" android:text="删除" /> <Button android:id="@+id/example_row_b_action_3" android:layout_width="0dp" android:layout_height="60dp" android:layout_gravity="center" android:layout_weight="1" android:text="编辑" /> </LinearLayout> <!-- 这里是前台显示的布局 --> <RelativeLayout android:id="@+id/front" android:layout_width="match_parent" android:layout_height="80dp" android:background="#ffffff" android:orientation="vertical" android:tag="front" > <TextView android:id="@+id/example_row_tv_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="18sp" /> </RelativeLayout> </FrameLayout> 这个布局是一个常规布局,我就不解释了。 MainActivity.Java,关键地方都有注释 public class MainActivity extends Activity { private SwipeListView mSwipeListView ; private SwipeAdapter mAdapter ; public static int deviceWidth ; private List<String> testData ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSwipeListView = (SwipeListView) findViewById(R.id.example_lv_list); testData = getTestData(); //数据适配 mAdapter = new SwipeAdapter(this, R.layout.package_row, testData,mSwipeListView); //拿到设备宽度 deviceWidth = getDeviceWidth(); mSwipeListView.setAdapter(mAdapter); //设置事件监听 mSwipeListView.setSwipeListViewListener( new TestBaseSwipeListViewListener()); reload(); } private List<String> getTestData() { String [] obj = new String[]{"红楼梦","西游记","水浒传","管锥编","宋诗选注","三国演义","android开发高级编程","红楼梦","西游记","水浒传","管锥编","宋诗选注","三国演义","android开发高级编程"}; List<String> list = new ArrayList<String>(Arrays.asList(obj)); return list; } private int getDeviceWidth() { return getResources().getDisplayMetrics().widthPixels; } private void reload() { // mSwipeListView.setSwipeMode(SwipeListView.SWIPE_MODE_LEFT); // mSwipeListView.setSwipeActionLeft(SwipeListView.SWIPE_ACTION_REVEAL); // mSwipeListView.setSwipeActionRight(settings.getSwipeActionRight()); //滑动时向左偏移量,根据设备的大小来决定偏移量的大小 mSwipeListView.setOffsetLeft(deviceWidth * 1 / 3); mSwipeListView.setOffsetRight(deviceWidth * 1 / 3); // mSwipeListView.setOffsetRight(convertDpToPixel(settings.getSwipeOffsetRight())); //设置动画时间 mSwipeListView.setAnimationTime(30); mSwipeListView.setSwipeOpenOnLongPress(false); } class TestBaseSwipeListViewListener extends BaseSwipeListViewListener{ //点击每一项的响应事件 @Override public void onClickFrontView(int position) { super.onClickFrontView(position); Toast.makeText(getApplicationContext(), testData.get(position), Toast.LENGTH_SHORT).show(); } //关闭事件 @Override public void onDismiss(int[] reverseSortedPositions) { for (int position : reverseSortedPositions) { Log.i("lenve", "position--:"+position); testData.remove(position); } mAdapter.notifyDataSetChanged(); } } } 数据适配器: public class SwipeAdapter extends ArrayAdapter<String> { private LayoutInflater mInflater ; private List<String> objects ; private SwipeListView mSwipeListView ; public SwipeAdapter(Context context, int textViewResourceId,List<String> objects, SwipeListView mSwipeListView) { super(context, textViewResourceId, objects); this.objects = objects ; this.mSwipeListView = mSwipeListView ; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null ; if(convertView == null){ convertView = mInflater.inflate(R.layout.package_row, parent, false); holder = new ViewHolder(); holder.mFrontText = (TextView) convertView.findViewById(R.id.example_row_tv_title); holder.mBackEdit = (Button) convertView.findViewById(R.id.example_row_b_action_3); holder.mBackDelete = (Button) convertView.findViewById(R.id.example_row_b_action_2); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.mBackDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //关闭动画 mSwipeListView.closeAnimate(position); //调用dismiss方法删除该项(这个方法在MainActivity中) mSwipeListView.dismiss(position); } }); String item = getItem(position); holder.mFrontText.setText(item); return convertView; } class ViewHolder{ TextView mFrontText ; Button mBackEdit,mBackDelete ; } } 以上就是SwipeListViewTest的用法,希望对你有帮助

2016-05-23

BadgeView提示图标

2016-05-06

SwipeListView

SwipeListView

2016-05-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除