为了实现在TextView中显示图片,有时对图片的宽度与高度有限制的话,可以对实现进行放大与缩小操作!
main.xml
<?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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:text="TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <TextView android:text="TextView02" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </LinearLayout>
GridView.java(http://www.my400800.cn )
package a.gridview; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.TextView; public class GridView extends Activity { private TextView text; private TextView text1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text = (TextView) findViewById(R.id.TextView01); Drawable draw = this.getResources().getDrawable(R.drawable.srvmng); text.setCompoundDrawablesWithIntrinsicBounds(null, draw, null,null); text.setText("应用"); text1 = (TextView) findViewById(R.id.TextView02); Drawable draw1 = this.getResources().getDrawable(R.drawable.srvmng); int w = draw1.getIntrinsicWidth(); int h = draw1.getIntrinsicHeight(); Rect rect = draw1.getBounds(); text1.setCompoundDrawablesWithIntrinsicBounds(null, zoomDrawable(draw1,32,32), null,null); text1.setText("设置"); } static Drawable zoomDrawable(Drawable drawable, int w, int h) { int width = drawable.getIntrinsicWidth(); int height= drawable.getIntrinsicHeight(); Bitmap oldbmp = drawableToBitmap(drawable); // drawable转换成bitmap Matrix matrix = new Matrix(); // 创建操作图片用的Matrix对象 float scaleWidth = ((float)w / width); // 计算缩放比例 float scaleHeight = ((float)h / height); matrix.postScale(scaleWidth, scaleHeight); // 设置缩放比例 Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true); // 建立新的bitmap,其内容是对原bitmap的缩放后的图 return new BitmapDrawable(newbmp); // 把bitmap转换成drawable并返回 } static Bitmap drawableToBitmap(Drawable drawable) // drawable 转换成bitmap { int width = drawable.getIntrinsicWidth(); // 取drawable的长宽 int height = drawable.getIntrinsicHeight(); Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565; // 取drawable的颜色格式 Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应bitmap Canvas canvas = new Canvas(bitmap); // 建立对应bitmap的画布 drawable.setBounds(0, 0, width, height); drawable.draw(canvas); // 把drawable内容画到画布中 return bitmap; } }
显示效果:
之前使用Java开发桌面应用的时候,在JTextPane中添加超链接并且设置监听是个很麻烦的事情,最终我也没找到一个很好的方法。用来开发android就爽了,API封装的不错,添加个超链接变的非常简单。
首先,在TextView所属xml配置文件中,直接添加android:autoLink特性即可,它支持一个或多个(用分割)自定义的值:none、web、email、phone或all。
另外,你还可以用Linkify来添加超链接,下面介绍一下这个类:
Linkify是一个辅助类,通过RegEx样式匹配,自动地在TextView类(和继承的类)中创建超链接。
符合特定的RegEx样式的文本会被转变成可点击的超链接,这些超链接隐式地调用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本会作为目标URI。
你可以指定任意的字符串样式为链接;方便地,Linkify类提供了预置的通用内容类型(如电话号码和e-mail、web地址)。
Linkify.addLinks静态方法接受一个View来制作链接,还包括一个或多个支持的默认内容类型的位结果。Linkify类提供了一些内容类型:WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL.
接下来的代码片段显示如何为TextView制作链接显示web和e-mail地址为超链接。当点击时,它们会相应地打开浏览器或e-mail应用程序。
- TextView textView = (TextView)findViewById(R.id.myTextView);
- Linkify.addLinks(textView, Linkify.WEB_URLSLinkify.EMAIL_ADDRESSES);
可是有时候我们需要自定义一些超链接,像新浪微博中的@和#,这时候怎么办呢?
为
了定义自己的链接字符串,你需要创建一个RegEx样式来匹配文本,进而显示成超链接。和本地类型一样,通过调用Linkify.addLinks来指定
目标View,但这次,传入的是的RegEx样式。你还可以传入一个前缀,当链接点击时,它会添加到目标URI上。例如:
- int flags = Pattern.CASE_INSENSITIVE;
- Pattern p = Pattern.compile(“\\bquake[-9]*\\b”, flags);
- Linkify.addLinks(myTextView, p, “content://com.paad.earthquake/earthquakes/”);
andriod 优秀文章
http://helloandroid.iteye.com/
--禁用所有外键约束的Sql代码
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--启用所有外键约束的Sql代码
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
执行查询出外键,然后执行即可
以下提到的内容都很简单,所以不详细说明,仅罗列一些语法:
一、主外键的添加、删除
1、向表中添加外键约束,把emp表的deptno字段设置为emp表的外键,引用自dept表
ALTER TABLE emp ADD CONSTRAINT FK_test FOREIGN KEY(deptno) REFERENCES dept(deptno);
2、向表中添加主键约束 alter table emp add constraint pk_emp primary key(empno);
3、创建表的同时创建主键约束
(1)无命名 create table EMP( empno int primary key not null, ename varchar(20), deptno int);
(2)有命名 create table EMP( empno int , ename varchar(20), deptno int , constraint PK_EMP primary key(empno));
4、删除表中已有的主键约束
(1)无命名可用 SELECT * from user_cons_columns;
如:SELECT * from user_cons_columns where table_name='EMP';
查找表中主键名称得emp表中的主键名为PK_EMP
alter table student drop constraint PK_EMP;
(2)有命名 alter table emp drop constraint PK_EMP;
二、更改表的结构
1.编辑表的字段
修改一个列的数据类型(一般限于修改长度,修改为一个不同类型时有诸多限制):
语法:
ALTER TABLE 表名 MODIFY(列名,数据类型);
eg1:
alter table skate_test modify (author number(10,0) )
在修改列的长度时候,只能编辑比现有字段实际存的长度还要大,否则提示下面的错误:
ORA-01441: 无法减小列长度, 因为一些值过大
eg2:
alter table skate_test modify (author varchar2(10) )
在修改列的数据类型的时候,所修改的列必须为空,否则提示下面的错误:
ORA-01439: 要更改数据类型, 则要修改的列必须为空
2.增加一个列
语法:
ALTER TABLE 表名 ADD(列名,数据类型);
eg1:
ALTER TABLE skate_test ADD(author NUMBER(38,0) not null);
3.给列改名:
语法:
ALTER TABLE 表名 RENAME COLUMN 当前列名 TO 新列名;
eg1:
ALTER TABLE skate_test RENAME COLUMN author TO authorer_new
4.删除一个列
语法:
ALTER TABLE 表名 DROP COLUMN 列名;
eg1:
alter table skate_test drop column author
5.将一个表改名
语法:
ALTER TABLE 当前表名 RENAME TO 新表名;
eg1:
alter table skate_test rename to test_sakte
5.给表加注释
comment column on 表名.列名 is '注释内容'; //修改表的列的注释
COMMENT ON TABLE MOVO_NEW.TEST_SAKTE IS '注释内容'; //修改表的注释
三、主键、外键等约束的启用与禁用
这里以外键为例来说明
执行下面的查询语句,我们会得到当前用户下所有可以被查询到的表的外键,并生相应的修改语句。我们指需要把生成的结果copy出来执行就OK了。
不过对于alter语句的使用还是要谨慎,使用之前需要考虑清楚。
--删除所有外键约束 的Sql代码
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP drop constraint FK_TEST;
--禁用所有外键约束的Sql代码
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP disable constraint FK_TEST;
--启用所有外键约束的Sql代码
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP enable constraint FK_TEST;
这里有一点需要注意,在上面的查询语句中where条件后带的约束类型 constraint_type='R' ,我们这里指定的是'R',可以猜想到,出来R之外还有其他的约束类型。
下面列出constraint_type的其他几种类型及相应的含义:
所以,我们需要禁用哪类约束,就将查询条件做相应的调整就好。