This Android Java Program demonstrates a Transform Filter in Android.
Here is source code of the Program demonstrate a Transform Filter in Android. The program is successfully compiled and run on a Windows system using Eclipse Ide. The program output is also shown below.
The Transform Filter lets you modify the implicit URI generated by matching link text. Decoupling the link text from the target URI gives you more freedom in how you display data strings to your users.
Here in this source code when a user clicks on either on GOOGLE or LINKIFY or SANFOUNDRY they all are converted to lower case when searching in web browser.
Main Activity
package com.example.transform_filter; import java.util.regex.Matcher; import java.util.regex.Pattern; import android.os.Bundle; import android.app.Activity; import android.text.util.Linkify; import android.text.util.Linkify.TransformFilter; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TransformFilter myTransformFilter = new TransformFilter() { @Override public String transformUrl(Matcher match, String url) { // TODO Auto-generated method stub return url.substring(1).toLowerCase(); } }; TextView text = (TextView) findViewById(R.id.textview1); Pattern pattern3 = Pattern.compile("\\![a-zA-Z]+"); text .setText("press one of these words to search it on google:" + " !GOOGLE !LINKIFY !SANFOUNDRY"); Linkify.addLinks(text, pattern3, "http://www.google.ie/search?q=", null, myTransformFilter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Activity_Main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" android:id="@+id/textview1" /> </RelativeLayout>