当前位置:  编程技术>移动开发
本页文章导读:
    ▪带框子的TextView        带边框的TextView 公司最开始设计的草图里面,有个省份选择的Gridview,最初就是想通过Adapter里面getView返回带边框的View                                                    后来通过GridVie.........
    ▪ ProGuard搅混代码学习笔记 之 开启代码混淆        ProGuard混淆代码学习笔记 之 开启代码混淆       这几天项目需要用到代码混淆来给项目代码提高安全性,由于项目忙,稍有研究,涉及不深; 略有收获,浅显总结,以备遗忘。       大家.........
    ▪ java的数据类型归类       java的数据类型分类 基本数据类型: int  long  double  float  byte  char boolean  short   引用数据类型: Integer Double FLoat   String                       java数据类型图:                 .........

[1]带框子的TextView
    来源: 互联网  发布时间: 2014-02-18
带边框的TextView

公司最开始设计的草图里面,有个省份选择的Gridview,最初就是想通过Adapter里面getView返回带边框的View

                                                 

 

后来通过GridView设置水平垂直间距解决,让背景为黑色,然后设置间距,就露出下面的背景,看起来跟边框效果一样

 

但是后面的各种表格的设计让我觉得 我还是的去做一个带边框的TextView


                            
 

 网上查了下,写的人也蛮多的,我就整理个demo出来吧,反正是当做自己的积累

 

思路很简单,在TextView的onDraw里面drawRec就可以了~

 

我在这个基础上扩充了下,设置边框颜色以及粗细,顺便学习了下自定义控件的属性设置

 

上效果图吧,中间是一个较粗的绿色的边框,下面是一个红色较细的边框


                             
 

@Override
protected void onDraw(Canvas canvas) {
	super.onDraw(canvas);
	drawStroke(canvas);
}

 

是的,只是在onDraw里面花一个矩形就可以~

 

private void drawStroke(Canvas canvas) {
	Rect rect = new Rect();
	Paint paint = new Paint();
	paint.setStyle(Paint.Style.STROKE);
	paint.setColor(mStrokeColor);//设置画笔颜色
	paint.setStrokeWidth(mStrokeWidth);//设置画笔粗细
	getLocalVisibleRect(rect);
	canvas.drawRect(rect, paint);
}

 

 为了显摆一下在里面加入了边框颜色以及粗细的控制,当然你也完全可以不设置,有默认的

 

private int mStrokeColor;
private float mStrokeWidth;

public TextViewStroke(Context context, AttributeSet attrs) {
    super(context, attrs);
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.stroke);
    mStrokeColor = typedArray.getInt(R.styleable.stroke_strokeColor,Color.BLACK);
    mStrokeWidth = typedArray.getDimension(R.styleable.stroke_strokeWidth, 2);
    typedArray.recycle();
}

 

好吧,我也是刚学自定义,那个R.styleable.stroke就是我们定义的可以在xml布局里面设置的属性就像这样

 

<com.zig.textviewstroke.TextViewStroke
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:gravity="center"
        android:layout_centerInParent="true"
        android:text="zig 出品"
        stroke:strokeColor = "#3b7d19"
        stroke:strokeWidth = "5dp"/>

 

最后那两行的自定义属性就是在R.styleable.stroke这里面自己设置的,你可以设置任何你想要的属性,然后在你控件那个类里面进行取得相应的值就可以

 

R.styleable.stroke这个值对应的文件在values的attrs.xml里面

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="stroke">
        <attr name="strokeColor"  format="color"/>
        <attr name="strokeWidth"  format="dimension"/>
    </declare-styleable>
    
</resources>

 

注意,在布局里面使用自定义组件时候,如果用自己的属性,要控件所在的布局文件的xml中写出你的namespace也就是stroke:strokeColor的前面那个stroke

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:stroke="http://schemas.android.com/apk/res/com.zig.textviewstroke"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

 

当你实际用的时候把最后面那个包名改成你自己控件对应位置的包名就可以

 

貌似说清楚了... #83 

 

好吧就这样,工程在附件中,自己捉摸下,有好建议,欢迎联系我

 


    
[2] ProGuard搅混代码学习笔记 之 开启代码混淆
    来源: 互联网  发布时间: 2014-02-18
ProGuard混淆代码学习笔记 之 开启代码混淆

      这几天项目需要用到代码混淆来给项目代码提高安全性,由于项目忙,稍有研究,涉及不深;

略有收获,浅显总结,以备遗忘。

      大家都知道,没有经过混淆的APK,加压后,可以直接将APK加压后的  classes.dex  文件反

编译成jar包,然后就可以对其中的关键代码与实现一览无余。

      现在来看看,如何将APK反编译出来:

     1、将APK解压出来,会有一个 classes.dex  文件

     2、得到了 clases.dex 文件,将其 还原成 .jar 包,这一步需要用到一个工具 --dex2jar

         (谷歌的代码库里有 http://code.google.com/p/dex2jar/)

        将其下载下来,然后解压,解压目录中会有一个 dex2jar.bat

        将 1 中解压出的classe.dex 拷贝到dex2jar的解压目录中,然后在命令行执行

        "dex2jar.bat classes.dex",之后在解压目录中会看到多出一个名叫“classes.dex.dex2jar.jar”

        的jar文件

     3、查看 .jar 文件,这一步就是传统的反编译了,我们需要用到一个辅助工具 :jd-gui    

         (http://java.decompiler.free.fr/?q=jdgui)

        下载后,用jd-gui 打开.jar 文件,就能查看到反编译后的代码了

       没有经过混淆的项目,反编译之后的代码和你项目中的代码相差无几了。

     

 

        现在来讲讲如何混淆代码:

        现在看android-sdks\tools目录下,会有一个proguard文件夹

        这里google已经做了很多,但是是在2.3及其以后的版本。

        在进入proguard文件夹,会有一个proguard-android.txt文件

        这个就是google默认的混淆代码的默认配置文件(虽说是默认,但还是需要在android工程中开启)

        接下来在新建的Android工程目录下 会有 两个配置文件 分别是project.properties 和 proguard-android.txt(注意2.3和4.0以后版本这两个文件名有略微区别),这里就需要在project.properties开启混淆代码设置,看到这句没:

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

将下面这句注释取消掉,意思就是执行  android-sdks/tools/proguard/proguard-android.txt 和你项目当前目录下得proguard-android.txt文件中的操作。      

        

       

        

    

     

 


    
[3] java的数据类型归类
    来源: 互联网  发布时间: 2014-02-18
java的数据类型分类

基本数据类型:

int  long  double  float  byte  char boolean  short

 

引用数据类型:

Integer Double FLoat   String

 

 

 

 

 

 

 

 

 

 

 

java数据类型图:
                                             ┏数值型━┳━整数型:byte short int long
              ┏基本数据类型━━┫              ┗━浮点型:float double
              ┃                            ┣字符型:char                                         
数据类型╋                            ┗布尔型:boolean             
              ┃                            ┏类(class)
              ┗引用数据类型━━╋接口(interface)
                                             ┗数组(array


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3