Go locker compatibility for android 7 inch tablet - Java for Android App Development

hi there i make go locker themes i have an issue regarding screen compatibility for android 7 inch tablet when the go locker is installed it does not show for the full screen i have modified the code in layout but something is missing can anyone help me in compatibilty issue with coding for android 7 inch tablet?

gopineom said:
hi there i make go locker themes i have an issue regarding screen compatibility for android 7 inch tablet when the go locker is installed it does not show for the full screen i have modified the code in layout but something is missing can anyone help me in compatibilty issue with coding for android 7 inch tablet?
Click to expand...
Click to collapse
What size is shown? Can you paste the layout so we can see it? It's difficult to help without more info

fyska said:
What size is shown? Can you paste the layout so we can see it? It's difficult to help without more info
Click to expand...
Click to collapse
This is the code in layout/layout-sw600dp {the issue is with alignment it does not cover the entire screen}.
Min SDK version=5
Target SDK version=13
Max SDK version=15
public class MyActivity extends Activity {
@override protected void onCreate(Bundle savedInstanceState) {
super.onCreate();
Configuration config = getResources().getConfiguration();
if (config.smallestScreenWidthDp >= 600) {
setContentView(R.layout.main_activity_tablet);
} else {
setContentView(R.layout.main_activity);
}
}
}

gopineom said:
This is the code in layout/layout-sw600dp {the issue is with alignment it does not cover the entire screen}.
Min SDK version=5
Target SDK version=13
Max SDK version=15
public class MyActivity extends Activity {
@override protected void onCreate(Bundle savedInstanceState) {
super.onCreate();
Configuration config = getResources().getConfiguration();
if (config.smallestScreenWidthDp >= 600) {
setContentView(R.layout.main_activity_tablet);
} else {
setContentView(R.layout.main_activity);
}
}
}
Click to expand...
Click to collapse
I meant, can you post what is in the xml layout files themselves. e.g.
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> ..... </LinearLayout>
Perhaps it's also useful to stick a Log/Toast statement within the if you posted to be sure which layout is being used.
Also, this might be helpful: http://developer.android.com/training/multiscreen/screensizes.html

i have attached the entire file this is actually go locker

Related

[Q] adding a function button in an App

Hey developing my first app, i have no coding expierience or background unless you consider building custom harleys or operating heavy equipment coding lol
anyway i have gotten the splash screen and splash screen sound, main menu main function button, and the screen that comes up after you press the button that says the function has been performed done
but i cant seem to figure out how to get the function to work, right now when you press it it takes you to the next "page" that tells you that the function has been done but the function doesnt actually take place.
what i am trying to get it to do is when you press the button it takes a file thats in the app's /res/raw folder and copies it to the phones /data/local folder
if anyone can help with guidence direction etc tha twould be greatly appreciated
You're going to have to submit a bit more information for anyone to have any reasonable chance at figuring out what you are doing and how to fix it.
First, I assume this is a Eclipse project using a normal activity with a class derived from Activity as the main thread, right? You have mapped your buttons to classes and set their onClickListener() functions?
Gene Poole said:
You're going to have to submit a bit more information for anyone to have any reasonable chance at figuring out what you are doing and how to fix it.
First, I assume this is a Eclipse project using a normal activity with a class derived from Activity as the main thread, right? You have mapped your buttons to classes and set their onClickListener() functions?
Click to expand...
Click to collapse
thank you for responding.
yes it is an eclipse project using a norm activity,so far i have gotten it to load the "splash" screen while playign an audio file, then transition to the main menu, the one button i have placed on the main menu has been successfully "mapped" to transition to a final screen that has some text on it *text is "the file has been installed"*, but i am tryign to get it to perform another function at the same time as transitioning to the final screen. im not sure how to code it to do that. the function i want it to do is: copy fileX.zip from app's /res/raw folder and place in phones /data/local folder.
i appoligize if im not wording something correctly as this is all new to me. again thank you for responding
i have copied what i have done so far if that helps
Androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nscoyote.supportbootani"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<application android:icon="@drawable/iconn" android:label="@string/app_name" android:debuggable="false">
<activity android:name=".BootanimationActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".menu"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.nscoyote.supportbootani.MENU" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Button1"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.nscoyote.supportbootani.BUTTON1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
Click to expand...
Click to collapse
BootanimationActivity
package com.nscoyote.supportbootani;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
public class BootanimationActivity extends Activity {
/** Called when the activity is first created. */
MediaPlayer LogoMusic;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
LogoMusic = MediaPlayer.create(BootanimationActivity.this, R.raw.splash_audio);
LogoMusic.start();
Thread logoTimer = new Thread(){
public void run(){
try{
sleep(5000);
Intent menuIntent = new Intent("com.nscoyote.supportbootani.MENU");
startActivity(menuIntent);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
finish();
}
}
};
logoTimer.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
LogoMusic.release();
}
}
Click to expand...
Click to collapse
MainMenu.java
package com.nscoyote.supportbootani;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class menu extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button install = (Button) findViewById(R.id.install);
install.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startActivity (new Intent("com.nscoyote.supportbootani.BUTTON1"));
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
Click to expand...
Click to collapse
Buton1.java
package com.nscoyote.supportbootani;
import android.app.Activity;
import android.os.Bundle;
public class Button1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.button1);
}
}
Click to expand...
Click to collapse
i think i posted that correctly and in order
NSCoyote said:
thank you for responding.
yes it is an eclipse project using a norm activity,so far i have gotten it to load the "splash" screen while playign an audio file, then transition to the main menu, the one button i have placed on the main menu has been successfully "mapped" to transition to a final screen that has some text on it *text is "the file has been installed"*, but i am tryign to get it to perform another function at the same time as transitioning to the final screen. im not sure how to code it to do that. the function i want it to do is: copy fileX.zip from app's /res/raw folder and place in phones /data/local folder.
i appoligize if im not wording something correctly as this is all new to me. again thank you for responding
Click to expand...
Click to collapse
So you want some sort of screen animation going on while copying the file? I would think that you could do it in a thread and signal the main app with a handler once the thread exits. Are you familiar with threads and handlers at all?
no this is actully my first venture into app creation, i figured it was going to be a simple easy app to create for a newbie lol i guess i was wrong lol. basicly what i want it to do is push the "install" button, copy the file then load the next screen saying "the file has been installed"
NSCoyote said:
no this is actully my first venture into app creation, i figured it was going to be a simple easy app to create for a newbie lol i guess i was wrong lol. basicly what i want it to do is push the "install" button, copy the file then load the next screen saying "the file has been installed"
Click to expand...
Click to collapse
Here's a simple app that uses a thread and a handler to update the title every second. Hopefully it will give you some ideas on how to approach your problem:
Code:
package com.myapp.threadtest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class MyTestActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread myRefreshThread = new Thread(new MyTimerThread());
myRefreshThread.start();
}
Handler mHandler=new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case 0:
setTitle("hello_"+msg.arg1);
break;
}
super.handleMessage(msg);
}
};
class MyTimerThread implements Runnable{
private int count=10;
private Message msg;
private int i;
public void run(){
for(i=count+1;i>=0;i--){
msg=mHandler.obtainMessage(0);
msg.arg1=i;
msg.sendToTarget();
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
return;
}
}
}
}
}
thank you, the message part im good on its getting the button to actully copy the file from the app's "/res/raw" folder to the phones " /data/local" folder that i have no clue on what to write for code or where
Whoa, you got WAY too much going on...
Splash screen to play clip that starts an Activity that has a button that starts an Activity in which neither Activity does anything! And then you want to get into JAVA File I/O?
Using all this GUI to copy a file is a waste; at most you need the splash screen with a small delay, copy the file over (easier said than done for novices) and then toss-up a Toast with "File Copied" and then exit. Unless you are planning more which we are not privy to.
The easiest way to transfer files is with terminal commands. You will need the absolute path of the resource and the destination and then use something like this...
Runtime.getRuntime(). exec("cp <file 1> <file 2>");
From something awesome
Rootstonian said:
Whoa, you got WAY too much going on...
Splash screen to play clip that starts an Activity that has a button that starts an Activity in which neither Activity does anything! And then you want to get into JAVA File I/O?
Using all this GUI to copy a file is a waste; at most you need the splash screen with a small delay, copy the file over (easier said than done for novices) and then toss-up a Toast with "File Copied" and then exit. Unless you are planning more which we are not privy to.
Click to expand...
Click to collapse
ok im kinda confused
with its current coding this is what the app does
after app instalation click on app drawer
click on app, it loads splash screen and plays sound file for 10 seconds
then transitiosn to main menu, main menu has 1 button on it
press button and it transitions to next screen which has text on it "the animation has been installed"
Click to expand...
Click to collapse
now in its current state it doesnt actually "install" anything, what i am trying to get it to do is when the final screen is loaded the one that says "the animation has been installed" i want it to copy a file from the app's /res/raw folder and place that copy into the phones /data/local folder.
there will actually be more features added at a later date so so i dont midn the added GUI stuff.
If they press the button on Main Menu, you need to do something there, NOT call another Activity (code not tested.... )
Code:
public class MainMenu extends Activity {
private Button myBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.checklist);
/** XML has android:onClick="onClick" */
myBtn = (Button) findViewById(R.id.myButton);
}
public void onClick(View v) {
Toast.makeText(MainMenu.this, "Copying File", 10000).show();
// copy your file here..
}
}

[GUIDE-DEV][HTC Sense SDK, Sense 4,5,6] How to build apps for HTC Sense

Complete GUIDE to develop an application using HTC OpenSense SDK​
Requirements:
Eclipse
Basic knowledge of Android App Development. I will not explain basic things (Like making activity, listview and etc)
HTC OpenSense SDK Installed - See post 4 How to add Reference Library
HTC Phone with HTC Sense. Not For AOSP ROMs
Create Project with OpenSense SDK
Create new project. Name it as you want. These are requirements. Other you can state as you want
Minimum Required SDK - 15
Target SDK - >= 19 (or older is 16)
Compile with - HTC OpenSense API 19 (or older is 16)
Theme - Holo Light with dark action bar
Create activity - Blank
Navigation type - None
Check if SDK is choosen correctly
In your project in Android Dependencies should be HTCExtension.jar file
Above Android Dependencies should be stated which SDK api you are using. HTC OpenSense APIs [Android 4.4.2] (or older is 4.1.2)
You can start building your application with HTC OpenSense SDK.
Guide content:
Add HTC Carousel with Tabs
[*]Add 3 Dot menu to actionbar
[*]HTC AlertDialog example
[*]HTC ListView and HtcListActivity example
[*]Add HTC Sense Skin support (Only Sense 3.6 to Sense 4.1)
[*]Using HTCPreference in your App
[*]Add Sense 6 theme support to your application
[*]Add HTC's Swipe2Update to ListView
[*]Add SlidingMenu
[*]Expandable List View. Thx to DHD22800
[*]Quick tips. Thx to DHD22800
​
If I helped you to create your first Application using HTC OpenSense SDK simply rate thread and hit thanks button, give credits and link to this Thread. If you are brave enought to admitt that this thread is helped you.
In any case Im doing it to help you to learn more​
HTC Carousel Activity/Fragment (Swipeable tabs) - Sense 3.6 up to Sense 6 Samples
HTC Carousel with Tabs for Sense 3.6 up to Sense 4 (Using Activities)
Create classes and Carousel (HTC Sense Tabs)
Create simple activities
Create two classes Tab1.java; Tab2.java
Create two layout xml files - tab_1.xml; tab_2.xml;
Place any two different png icons for Tab1 and Tab2 reference
tab_1.xml
Code:
<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"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is Tab1" />
</RelativeLayout>
tab_2.xml
Code:
<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"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is Tab2" />
</RelativeLayout>
Tab1.java
Code:
package com.yourpackage.name;
import android.app.Activity;
import android.os.Bundle;
public class Tab1 extends Activity {
[user=439709]@override[/user]
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_1);
}
}
Tab2.java
Code:
package com.yourpackage.name;
import android.app.Activity;
import android.os.Bundle;
public class Tab2 extends Activity {
[user=439709]@override[/user]
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_2);
}
}
Create carousel (HTC Sense Tabs) and put tabs together
Create class: TabProvider.java; Remove everything inside class and place this code:
com.yourpackage.name - it is your name of package.
TabProvider.java
Code:
package com.yourpackage.name;
import com.htc.content.CarouselProvider;
[user=1299008]@supp[/user]ressWarnings("deprecation")
public class TabProvider extends CarouselProvider {
final static String AUTHORITY =
"com.yourpackage.name.TabProvider";
public TabProvider() {
super();
setupCarousel(AUTHORITY);
}
}
Open MainActivity, remove everything from class and paste this code:
MainActivity.java
Code:
package com.yourpackage.name;
import android.content.Intent;
import android.os.Bundle;
import com.htc.widget.CarouselActivity;
import com.htc.widget.CarouselHost;
public class MainActivity extends CarouselActivity {
final static String AUTHORITY =
"com.yourpackage.name.TabProvider";
public MainActivity() {
super(AUTHORITY);
}
[user=439709]@override[/user]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setGId(1);
super.onCreate(savedInstanceState);
final CarouselHost mPanelHost = getCarouselHost();
mPanelHost.addTab("Tab1", this, R.string.tab_1,
R.drawable.ic_tab1,
R.drawable.ic_tab1,
R.drawable.ic_tab1,
(new Intent("com.yourpackage.name.Tab1")));
mPanelHost.addTab("Tab2", this, R.string.tab_2,
R.drawable.ic_tab2,
R.drawable.ic_tab2,
R.drawable.ic_tab2,
(new Intent("com.yourpackage.name.Tab2")));
}
}
Configuring manifest
Dont forget, all classes have to be in Manifest.
Code:
<activity
android:name=".Tab1"
android:screenOrientation="portrait"
android:configChanges="orientation"
android:label="Tab1" >
<intent-filter>
<action android:name="com.yourpackage.name.Tab1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Tab2"
android:screenOrientation="portrait"
android:configChanges="orientation"
android:label="Tab2" >
<intent-filter>
<action android:name="com.yourpackage.name.Tab2" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Also for HTC SDK you have to state Provider: Create provider at the end of Manifest before </application> tag
Code:
<provider
android:name="com.yourpackage.name.TabProvider"
android:authorities="com.yourpackage.name.TabProvider" />
Create ActionBar in HTC Sense Style
For all tabs in your main activity you dont need to create actionbar for each of them, you need only one Actionbar for all Tabs.
That means all Activities which will be part of TabCarousel it will use the same action bar from MainActivity.
Make Changes in your mainactivity as follow:
MainActivity.java with ActionBar
Code:
package com.yourpackage.name;
import android.content.Intent;
import android.os.Bundle;
import com.htc.widget.CarouselActivity;
import com.htc.widget.CarouselHost;
[COLOR="Red"]import com.htc.widget.ActionBarExt;
import com.htc.widget.ActionBarText;[/COLOR]
public class MainActivity extends CarouselActivity {
final static String AUTHORITY =
"com.yourpackage.name.TabProvider";
[COLOR="red"]public static ActionBarText mActionText;[/COLOR]
public MainActivity() {
super(AUTHORITY);
}
[COLOR="red"] private void SetupActionBar()
{
Object obj = new ActionBarExt(this, getActionBar());
((ActionBarExt)obj).setFullScreenEnabled(true);
((ActionBarExt)obj).enableHTCLandscape(false);
mActionText = new ActionBarText(this);
mActionText.setPrimaryText(R.string.app_name);
obj = ((ActionBarExt)obj).getCustomContainer();
((ActionBarContainer)obj).setRightDividerEnabled(true);
((ActionBarContainer)obj).addCenterView(mActionText);
}[/COLOR]
[user=439709]@override[/user]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setGId(1);
super.onCreate(savedInstanceState);
final CarouselHost mPanelHost = getCarouselHost();
[COLOR="red"]SetupActionBar();[/COLOR]
mPanelHost.addTab("Tab1", this, R.string.tab_1,
R.drawable.ic_tab1,
R.drawable.ic_tab1,
R.drawable.ic_tab1,
(new Intent("com.yourpackage.name.Tab1")));
mPanelHost.addTab("Tab2", this, R.string.tab_2,
R.drawable.ic_tab2,
R.drawable.ic_tab2,
R.drawable.ic_tab2,
(new Intent("com.yourpackage.name.Tab2")));
}
}
HTC Carousel with Tabs for Sense 4.1 up to Sense 5.5 (Using Fragments)
Create Carousel Fragment, Tabs, MainActivity
Create Tab Fragments
Now instead of Activities we will use Fragments, and it is difficult for some users. And I will try to explain how to build Carousel and not how to build Fragment Activity. But as example you can refer to my Open Source project myStore (which now converted to Fragments)
Create two classes Tab1Fragment and Tab2Fragment
Tab1Fragment.java
Code:
package your.package.name;
[COLOR="Lime"]#2[/COLOR] import android.app.Fragment;
[COLOR="lime"]#1[/COLOR] public class Tab1Fragment [B][COLOR="red"]extends Fragment[/COLOR][/B] {
Button button;
[COLOR="lime"]#3[/COLOR] public Tab1Fragment () {
}
[COLOR="lime"]#4[/COLOR] [user=439709]@override[/user]
public [B][COLOR="Red"]View onCreateView[/COLOR][/B](LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab1, container, false);
[COLOR="Lime"]#7[/COLOR] button = (Button) [B][COLOR="Red"]view.[/COLOR][/B]findViewById(R.id.button);
[COLOR="RoyalBlue"][I]//All your code that you need when application is first time created (see onCreate method example)[/I][/COLOR]
[COLOR="lime"]#5[/COLOR] [B][COLOR="red"]return view;[/COLOR][/B]
}
[COLOR="lime"]#6[/COLOR]
}
As you can see the Class structure is different from what you might get used.
Now you need to extend class as Fragment (#1) and import android.app.Fragment; (#2)
Then you need to have public method which represent the entire Class with the name of the Class (#3)
And Fragment uses onCreateView method instead of onCreate in Activity (#4)
And you also need return statement for the view (#5) which will be at the end after all your code inside onCreateView method
Outside onCreateView you will have all your methods for the purpose of application and those methods you will call from onCreateView method.
Example of (#7) is that how you need to use findViewById method. you need to add view. before the method. Other than tha is the same
Now create Tab2Fragment and use the same method but different layout resources.
Create Tab Provider
Code:
package your.package.name;
import com.htc.fragment.content.CarouselProvider;
public class TabProvider extends CarouselProvider {
public TabProvider(){
super();
setupCarousel(MainActivity.AUTHORITY);
}
}
Create CarouselFragment
Now to store tabs in your application we will use separate Carousel class where you will identify each tab, name, Class, icons , etc
For each tab create method for it for example
Code:
private void addTab1(CarouselHost host, String tag, int icon, int str) {
host.addTab(getActivity(), new CarouselTabSpec(tag,
str, icon, icon, icon, Tab1Fragment.class.getName()));
}
private void addAnotherTab(CarouselHost host, String tag, int icon, int str) {
host.addTab(getActivity(), new CarouselTabSpec(tag,
str, icon, icon, icon, AnotherTabFragment.class.getName()));
}
and in onActivityCreated method add your tab as in example
Code:
addAnotherTab(host, "AnotherTab", R.drawable.another_icon,
R.string.another_tab);
Carousel.java
Code:
package your.package.name;
import android.os.Bundle;
import com.htc.fragment.widget.CarouselFragment;
import com.htc.fragment.widget.CarouselHost;
import com.htc.fragment.widget.CarouselTabSpec;
public class Carousel extends CarouselFragment {
public Carousel() {
super(MainActivity.AUTHORITY);
requestCarouselFeature(CarouselFragment.FEATURE_CUSTOM_TITLE);
}
private void addTab1(CarouselHost host, String tag, int icon, int str) {
host.addTab(getActivity(), new CarouselTabSpec(tag,
str, icon, icon, icon, Tab1Fragment.class.getName()));
}
private void addTab2(CarouselHost host, String tag, int icon, int str) {
host.addTab(getActivity(), new CarouselTabSpec(tag,
str, icon, icon, icon, Tab2Fragment.class.getName()));
}
[user=439709]@override[/user]
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final CarouselHost host = getCarouselHost();
addTab1(host, "Tab1", R.drawable.ic_tab1,
R.string.tab1);
addTab2(host, "Tab2", R.drawable.ic_tab2,
R.string.tab2);
}
}
Create MainActivity
Now MainActivity will be simple Activity with reference to Carousel class.
Code:
package your.package.name;
public class MainActivity extends Activity {
final static String AUTHORITY = "your.package.name.MainActivity";
private Carousel mCarousel = null;
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
final int rootId = 1;
FrameLayout viewRoot = new FrameLayout(this);
viewRoot.setId(rootId);
setContentView(viewRoot);
mCarousel = new Carousel();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(rootId, mCarousel);
ft.commit();
registerForContextMenu(viewRoot);
}
}
Configuration of Manifest
For Fragments you dont need anymore to add permission for them in Manifest (Only for Activities)
So basically with One mainactivity and two Tabs your manifest should look like
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package.name"
android:versionCode="10"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
allowSkinChange="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="your.package.name.MainActivity"
android:screenOrientation="portrait"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="your.package.name.TabProvider"
android:authorities="your.package.name.MainActivity" />
</application>
</manifest>
Make sure your provider is exaclty as follow.​
HTC Carousel with Tabs for Sense 6 (Using Fragments)
Create CarouselFragment, MainActivity, Tabs
CarouselFragment:
Code:
package com.your.pkg;
[COLOR="red"]import com.htc.fragment.widget.CarouselFragment; <!-- Make sure the imports from com.htc.fragment.*-->
import com.htc.fragment.widget.CarouselHost;
import com.htc.fragment.widget.CarouselTabSpec;[/COLOR]
importcom.your.pkg.MainActivity;
import com.your.pkg.R;
import android.os.Bundle;
public class Carousel extends [COLOR="Red"]CarouselFragment[/COLOR] {
public Carousel() {
super(MainActivity.AUTHORITY);
requestCarouselFeature(CarouselFragment.FEATURE_CUSTOM_TITLE);
}
private void addTab(CarouselHost host, String tag, int icon, int str, String tag5) {
host.addTab(getActivity(), new CarouselTabSpec(tag,
str, tag5));
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final CarouselHost host = getCarouselHost();
addTab(host, [COLOR="Blue"]"FirstTab"[/COLOR], R.drawable.ic_launcher,
R.string.[COLOR="Blue"]first[/COLOR], First.class.getName());
addTab(host, [COLOR="Blue"]"SecondTab"[/COLOR], R.drawable.ic_launcher,
R.string.[COLOR="Blue"]second[/COLOR], Second.class.getName());
[COLOR="Red"]<!-- Add as many addTab(); methods as you need Tabs. The addTab() is universal-->[/COLOR]
}
}
MainActivity
Code:
public class MainActivity extends MfMainActivity {
public final static String AUTHORITY = "mikrosmile.kontrol.MainActivity";
private Carousel mCarousel = null;
static Window window;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
super.onCreate(savedInstanceState);
final int rootId = 1;
FrameLayout viewRoot = new FrameLayout(this);
viewRoot.setId(rootId);
setContentView(viewRoot);
mCarousel = new Carousel();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(rootId, mCarousel);
ft.commit();
registerForContextMenu(viewRoot);
getWindow().setFormat(1);
}
}
Tabs
Code:
Any Activity or Fragment
HTC's Release to Refresh method (Swipe2Refresh)
The Release to Refresh is like this:
View attachment 2711413
It can be added to any View. I will show example how to add it to ListView
Code:
[COLOR="red"]import com.htc.widget.OnPullDownListener;[/COLOR]
public static ActionBarRefresh aRefresh;
@Override
protected void onCreate(Bundle bundle) {
//Adding inside onCreate method of you listActivity
list.[COLOR="Red"]setOnPullDownListener(new PullDown());[/COLOR]
}
public class PullDown implements OnPullDownListener{
//just a class inside your listActivity
@Override
public void onGapChanged(int top, int bottom) {
if(top != 0){
actionbarext.getCustomContainer().setRotationMax(top);
actionbarext.getCustomContainer().setRotationProgress(bottom);
//actionbarext.getCustomContainer is your ActionBar container
}
}
@Override
public void onPullDownCancel() {
actionbarext.getCustomContainer().setUpdatingState(0);
}
@Override
public void onPullDownRelease() {
actionbarext.getCustomContainer().setUpdatingState(0);
//do whatever you need to update the list here, you can call a method or AsyncTask from here
}
@Override
public void onPullDownToBoundary() {
actionbarext.getCustomContainer().setRotationProgress(actionbarext.getCustomContainer().getRotationMax());
}
}
Code:
On your method to update list add this to onPreExecute
aRefresh.setVisibility(View.VISIBLE);
aRefresh.setPrimaryText("Updating...");
actionbartext.setPrimaryVisibility(View.GONE);
actionbartext.setSecondaryVisibility(View.GONE);
When you finish your task to update list, inside onPostExecute add this
actionbarext.getCustomContainer().setUpdatingState(0);
Code:
Inside your method to SetupActionBar add this
aRefresh = new ActionBarRefresh(c);
aRefresh.setVisibility(View.GONE);
actionbarext.getCustomContainer().addCenterView(aRefresh);
​
Add HTC Sense 6 Theme support to your app
Inside your MainActivity add this method
Code:
public static int getHtcThemeID(Context context, int i)
{
return HtcWrapConfiguration.getHtcThemeId(context, i);
}
And in onCreate method add this
Code:
setTheme(getHtcThemeID(context, 0));
This method is returning current Choosen theme ID by Variable from 0 to 3.
So, when you open Personalization - Theme. You see 4 Themes. First 3 has different Color boxes at the top. The first 3 is the actual variable integer from 0 - 3.
So, if you want to get , let's say Red color from Theme 2. You have to Choose Theme 2 in the Theme Settings, and in the app use this:
Code:
setTheme(getHtcThemeID(context, 3));
Once you change Theme, it will also use The Orange color from Theme 1, and the Purple Color from Theme 3
​
Add SlidingMenu to your Sense application
To make the sliding menu in your application like Mail app or File manager app, follow this:
View attachment 2876504
Code:
public class MainActivity extends [COLOR="Red"]SlidingActivity [/COLOR]{
[COLOR="red"]private SlidingMenu mSlidingMenu;[/COLOR]
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
window = getWindow();
setContentView(R.layout.activity_main);
[COLOR="red"]setBehindContentView(R.layout.activity_behind);
initSlidingMenu();[/COLOR]
SetupActionBar(this);
}
private void initSlidingMenu()
{
mSlidingMenu = getSlidingMenu();
[COLOR="red"]mSlidingMenu.setBehindWidth(500);[/COLOR] [COLOR="Lime"]//any width as you want[/COLOR]
mSlidingMenu.setFadeDegree(0.5F);
mSlidingMenu.setFadeEnabled(true);
mSlidingMenu.setMode(0);
mSlidingMenu.setTouchModeAbove(0);
mSlidingMenu.setOnOpenedListener(new com.htc.widget.SlidingMenu.OnOpenedListener() {
public void onOpened()
{
initSlidingMenuContent();
}
});
}
private void initSlidingMenuContent(){
[COLOR="red"] mSlidingMenu.setShadowWidth(50);
mSlidingMenu.setShadowDrawable(ICservices.getShadowDrawable());[/COLOR][COLOR="Lime"]//any shadow drawable you want
//here is all your code that represent the behind layout. it can be listview or any other View you need[/COLOR]
}
[COLOR="SeaGreen"]//if you want to have a toggle at the actionbar, also add OnClickListener to ActionbarTextView and add IconView to Actionbar[/COLOR]
}
add this permission to Manifest:
[COLOR="red"]<uses-permission android:name="com.htc.permission.APP_DEFAULT" />[/COLOR]
Add 3 Dot menu to actionbar
For the Menu in actionbar you just implement simple menu method, but you dont need to use menu.xml for it.
Also you dont need to create string values for Menu, it will generate automatically for you, the icon, and the name.
This is method to create Menu in ActionBar. Add it in MainActivity before SetupActionBar() method
Code:
public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add("ContextMenu");
}
[user=439709]@override[/user]
public boolean onCreateOptionsMenu (Menu menu) {
menu.add(1, 1, 1, R.string.settings);
return true;
}
public boolean onOptionsItemSelected(MenuItem menuitem)
{
boolean flag = true;
switch (menuitem.getItemId())
{
case 1:
startActivity(new Intent(this, Settings.class));
break;
}
return flag;
}
This is your new MainActivity with Menu
Code:
package com.yourpackage.name;
import android.content.Intent;
import android.os.Bundle;
import com.htc.widget.CarouselActivity;
import com.htc.widget.CarouselHost;
import com.htc.widget.ActionBarExt;
import com.htc.widget.ActionBarText;
[COLOR="Red"]import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;[/COLOR]
public class MainActivity extends CarouselActivity {
final static String AUTHORITY =
"com.yourpackage.name.TabProvider";
public static ActionBarText mActionText;
public MainActivity() {
super(AUTHORITY);
}
[COLOR="red"]public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add("ContextMenu");
}
[user=439709]@override[/user]
public boolean onCreateOptionsMenu (Menu menu) {
menu.add(1, 1, 1, R.string.settings);
return true;
}
public boolean onOptionsItemSelected(MenuItem menuitem)
{
boolean flag = true;
switch (menuitem.getItemId())
{
case 1:
startActivity(new Intent(this, Settings.class));
break;
}
return flag;
}[/COLOR]
private void SetupActionBar()
{
Object obj = new ActionBarExt(this, getActionBar());
((ActionBarExt)obj).setFullScreenEnabled(true);
((ActionBarExt)obj).enableHTCLandscape(false);
mActionText = new ActionBarText(this);
mActionText.setPrimaryText(R.string.app_name);
obj = ((ActionBarExt)obj).getCustomContainer();
((ActionBarContainer)obj).setRightDividerEnabled(true);
((ActionBarContainer)obj).addCenterView(mActionText);
}
[user=439709]@override[/user]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setGId(1);
super.onCreate(savedInstanceState);
final CarouselHost mPanelHost = getCarouselHost();
SetupActionBar();
mPanelHost.addTab("Tab1", this, R.string.tab_1,
R.drawable.ic_tab1,
R.drawable.ic_tab1,
R.drawable.ic_tab1,
(new Intent("com.yourpackage.name.Tab1")));
mPanelHost.addTab("Tab2", this, R.string.tab_2,
R.drawable.ic_tab2,
R.drawable.ic_tab2,
R.drawable.ic_tab2,
(new Intent("com.yourpackage.name.Tab2")));
}
}
HTC AlertDialog​
In order to have alertdialog you need to have OnClickListener and inside OnClickListener you paste alertDialog.
Code:
public void onItemClick(HtcAdapterView<?> parent, View view, int position, long id) {
[COLOR="red"]HtcAlertDialog.Builder[/COLOR] alertDialog = new [COLOR="red"]HtcAlertDialog.Builder[/COLOR]([B]YourActivity.this[/B]);
alertDialog.setTitle(R.string.title_txt);
alertDialog.setMessage(R.string.message_txt);
alertDialog.setIcon(R.drawable.icon);
alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
//Do your actions here when user click Yes
}
});
alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Do your action here when user click No.. or just cancel dialog using follow..
dialog.cancel();
}
});
alertDialog.show();
}
As you can see Dialog is not so difficult, but need to identify exaclty which Builder you are gonna use.
YourActivity.this - means the activity where you create the dialog
You can also see available options of what you can implement inside dialog.. like 3 buttons.
Start typing alertDialog. finish with the dot and in Eclipse there will be new pop-up window and you can add some more
Also dont forget alertDialog.show(); at the end, otherwise Dialog wont shows​
HTC ListView and HtcListActivity. ​
There are two ways of implementing Htc List view. You can use Simple Activity, Fragment or just easy use HtcListActivity extension.
For full htc style you need to use Main List layout, and Details layout + List adapter.
Example using Activity
Code:
public class AboutActivity extends Activity {
[COLOR="Red"]HtcListView lv1;[/COLOR]
[user=439709]@override[/user]
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_activity);
ArrayList<AboutDetails> image_details = GetSearchResults();
[COLOR="red"]final HtcListView lv1 = (HtcListView) findViewById(R.id.about_list);[/COLOR]
[user=1299008]@supp[/user]ressWarnings("unused")
lv1.setAdapter(new AboutListBaseAdapter(this, image_details));
lv1.setOnItemClickListener(new HtcAdapterView.OnItemClickListener() {
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
[user=439709]@override[/user]
public void onItemClick(HtcAdapterView<?> a, View v, int position, long id) {
vibrator.vibrate(50);
Object o = lv1.getItemAtPosition(position);
final AboutDetails obj_itemDetails = (AboutDetails)o;
}
});
}
private ArrayList<AboutDetails> GetSearchResults(){
ArrayList<AboutDetails> results = new ArrayList<AboutDetails>();
AboutDetails item_details = new AboutDetails();
item_details.setName(R.string.mikrosmile);
item_details.setItemDescription(R.string.mikrosmile_info);
item_details.setImageNumber(1);
results.add(item_details);
return results;
}
}
AboutDetails
Code:
public class AboutDetails {
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
public int getItemDescription() {
return itemDescription;
}
public void setItemDescription(int itemDescription) {
this.itemDescription = itemDescription;
}
public int getImageNumber() {
return imageNumber;
}
public void setImageNumber(int imageNumber) {
this.imageNumber = imageNumber;
}
private int name ;
private int itemDescription;
private int imageNumber;
}
AboutListBaseAdapter
public class AboutListBaseAdapter extends BaseAdapter {
private static ArrayList<AboutDetails> aboutDetailsrrayList;
private Integer[] imgid = {
R.drawable.mikrosmile,
};
private LayoutInflater l_Inflater;
public AboutListBaseAdapter(Context context, ArrayList<AboutDetails> results) {
aboutDetailsrrayList = results;
l_Inflater = LayoutInflater.from(context);
}
public int getCount() {
return aboutDetailsrrayList.size();
}
public Object getItem(int position) {
return aboutDetailsrrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.about_htc_details, null);
holder = new ViewHolder();
holder.txt_itemName = ([COLOR="red"]HtcListItem2LineText[/COLOR]) convertView.findViewById(R.id.list_item);
holder.itemImage = ([COLOR="red"]HtcListItemTileImage[/COLOR]) convertView.findViewById(R.id.list_item_img);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txt_itemName.setPrimaryText(aboutDetailsrrayList.get(position).getName());
holder.txt_itemName.setSecondaryTextSingleLine(false);
holder.txt_itemName.setSecondaryText(aboutDetailsrrayList.get(position).getItemDescription());
holder.itemImage.setTileImageResource(imgid[aboutDetailsrrayList.get(position).getImageNumber() - 1]);
return convertView;
}
static class ViewHolder {
[COLOR="red"]HtcListItem2LineText txt_itemName;
HtcListItemTileImage itemImage;[/COLOR]
}
}
Layout - about_activity
Code:
<?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:background="@drawable/bg_white">
<[COLOR="red"]com.htc.widget.HtcListView[/COLOR]
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/about_list"
android:background="@drawable/common_app_bkg"
/>
</LinearLayout>
Layout - about_htc_details
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<[COLOR="red"]com.htc.widget.HtcListItemSeparator [/COLOR]
android:id="@+id/Lseparator"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
[COLOR="red"]<com.htc.widget.HtcListItem
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<com.htc.widget.HtcListItemTileImage
android:id="@+id/list_item_img" />
<com.htc.widget.HtcListItem2LineText
android:id="@+id/list_item" />
</com.htc.widget.HtcListItem>[/COLOR]
</LinearLayout>
HTC ListView Example by xcesco89
Add HTC Sense Skin support.
In AndroidManifest add this line inside <application tag and before first <activity tag where you have your MainActivity
Code:
<application
[COLOR="Red"]allowSkinChange="true"[/COLOR]
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.yourpackage.name.MainActivity"
There will be Error in Manifest, says "Attribute is missing the Android namespace prefix"
It is fine, to fix it go to - Project -> Clean; Choose your Application and click Ok​
Add reference library to use full HTC app experience
Sense 6
Download this package - View attachment addon-htc_opensense_apis-htc-19.zip
Place the extracted folder to <location of android SDK>\android\sdk\add-ons\
Choose HTC OpenSense SDK 19 when you start building your application. Profit
Sense 5 and below
Refer to this, thanks to Jonny
Make sure HTCExtension lib is appear in your Eclipse project​
Use HTCPreference Activity
Htc Preference is the same as normal Preference but you need to follow some rules when you want to have this.
First in your Preference activity (for example you already have one) change PreferenceActivity to HtcPreferenceActivity.
import com.htc.preference.*;
In prefs.xml (or any other xml file you have your preferences in) make sure everything is using this way
This is original android way.
<PreferenceScreen> </PreferenceScreen>
This is Htc way
<com.htc.preference.HtcPreferenceScreen> </com.htc.preference.HtcPreferenceScreen>
So basically to every single item in preferences you need to add com.htc.preference.Htc****
Here is prefs.xml example
Code:
<?xml version="1.0" encoding="utf-8"?>
<[COLOR="Red"]com.htc.preference.Htc[/COLOR]PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<[COLOR="red"]com.htc.preference.Htc[/COLOR]CheckBoxPreference
android:title="@string/load_icons"
android:summary="@string/load_icons_summary"
android:defaultValue="true"
android:key="show_dialog">
</[COLOR="red"]com.htc.preference.Htc[/COLOR]CheckBoxPreference>
<[COLOR="red"]com.htc.preference.Htc[/COLOR]SwitchPreference
android:title="@string/load_skins"
android:summary="@string/load_skins_summary"
android:switchTextOn="@string/on"
android:switchTextOff="@string/off"
android:defaultValue="true"
android:key="skins_on_start">
</[COLOR="red"]com.htc.preference.Htc[/COLOR]SwitchPreference>
</[COLOR="red"]com.htc.preference.Htc[/COLOR]PreferenceScreen>
This is how Pref activity should be
Code:
package com.yourpackage.name;
import android.os.Bundle;
import android.view.View;
import com.htc.widget.ActionBarContainer;
import com.htc.widget.ActionBarExt;
import com.htc.widget.ActionBarText;
[COLOR="red"]import com.htc.preference.*;[/COLOR]
public class Settings extends [COLOR="red"]Htc[/COLOR]PreferenceActivity {
private ActionBarExt actionBarExt=null;
private ActionBarText actionBarText=null;
private ActionBarContainer actionBarContainer=null;
private void SetupActionBar() {
actionBarExt=new ActionBarExt(this,getActionBar());
actionBarExt.enableHTCLandscape(false);
actionBarContainer=actionBarExt.getCustomContainer();
actionBarText=new ActionBarText(this);
actionBarText.setPrimaryText(R.string.settings);
actionBarContainer.addCenterView(actionBarText);
actionBarContainer.setRightDividerEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
SetupActionBar();
}
}
If you cannot import com.htc.preference.*; (Eclipse will give you error) it means you dont have HtcExtension lib. Make sure you added it before doing this.
​
Great guide! HTC Dialog isn't hard, just the same as the normal dialog, but putting Htc before the dialog stuff, right?
Looking forward to the ListView guide!
MaartenXDA said:
Great guide! HTC Dialog isn't hard, just the same as the normal dialog, but putting Htc before the dialog stuff, right?
Looking forward to the ListView guide!
Click to expand...
Click to collapse
yep dialog ist that hard.. but still need to clarify )
Subscribed ! :good:
Hai So, how could I change the tab's image? Like the one in the DarkSense screenshot?
MaartenXDA said:
Hai So, how could I change the tab's image? Like the one in the DarkSense screenshot?
Click to expand...
Click to collapse
This is not image actually, it is skin support..
I was planning to write about it later ))
OK in manifest after <application tag add this line
allowSkinChange="true"
You will have error. Go to Project and perform a Clean . try and report back
Sent from my Galaxy Nexus using Tapatalk 2
Weird.. Cannot edit ..
So this line should be in the same pack where you have android icon and theme info before the first activity tag
Sent from my Galaxy Nexus using Tapatalk 2
mikrosmile said:
This is not image actually, it is skin support..
I was planning to write about it later ))
OK in manifest after <application tag add this line
allowSkinChange="true"
You will have error. Go to Project and perform a Clean . try and report back
Sent from my Galaxy Nexus using Tapatalk 2
Click to expand...
Click to collapse
Thanks, works great!
Saw the dialog part, nice
Waiting for the listview guide c:
Sent from my awesome fridge
MaartenXDA said:
Saw the dialog part, nice
Waiting for the listview guide c:
Sent from my awesome fridge
Click to expand...
Click to collapse
add an HtcListView it's quite simple!
this works exactly as the android ListView
a simple example:
(as base i've used TabPlus4Demo a sample project in OpenSense SDK samples )
main.xml
HTML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.htc.widget.HtcListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
(Note that you need to use com.htc.widget.HtcListView instead of ListView )
the code:
Code:
public class SimpleTab extends Fragment {
public HtcListView lv;
[user=439709]@override[/user]
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(getArguments() != null) {
int resId = getArguments().getInt("LAYOUT");
if(resId != 0)
return inflater.inflate(resId, null);
}
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.main, container, false);
[B]//Find the view[/B]
lv = (HtcListView) rootView.findViewById(R.id.listView1);
[B]//create the list[/B]
List<String> list = new ArrayList<String>();
[B]//add some list Items ( if you want a custom text , just use list.add("blahblah")[/B]
for (int i =0; i<40; i++) {
list.add("Test"+i);
}
[B]//create the adapter[/B]
ArrayAdapter<?> adapter = new ArrayAdapter<String>(this.getActivity(),
android.R.layout.simple_list_item_1, list);
[B]//Set the adapter[/B]
lv.setAdapter(adapter);
[B]/*
create and set the Listener
you can also implement this in your activity with
"public class youractivity extends Activity implements OnItemClickListener"
then use lv.setOnItemClickListener(this)
*/[/B]
lv.setOnItemClickListener(new OnItemClickListener() {
[user=439709]@override[/user]
public void onItemClick(HtcAdapterView<?> arg0, View v,
int pos, long id) {
[B]//make a Toast Message that displays the Selected item NAME[/B]
Toast.makeText(v.getContext(),"pressed: "+ lv.getItemAtPosition(pos), Toast.LENGTH_SHORT).show();
[B]/*
if you want t perform something different for each item you can use the case statement
switch(pos){
case 0:
Toast.makeText(v.getContext(), "HI!", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(v.getContext(), "HELLO!", Toast.LENGTH_SHORT).show();
break;
[...]
case 39:
//do something
break;
*/[/B]
}
});
return rootView;
}
}
Result:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
please take a look at this snippet too! ======> LINK
Thanks, good to see you around here
EDIT: and, how could I change it to look like the real HTC listview? I mean with dividers and white background?
Sent from my awesome fridge
MaartenXDA said:
Thanks, good to see you around here
EDIT: and, how could I change it to look like the real HTC listview? I mean with dividers and white background?
Sent from my awesome fridge
Click to expand...
Click to collapse
this is not part of OpenSense SDK.. they wont open it. You need to create own framework..
this is actually part of HtcPreferenceActivity which you cant create in Eclipse without proper libs..
Other than that you can create similar png.9 image and make it looks like )
mikrosmile said:
this is not part of OpenSense SDK.. they wont open it. You need to create own framework..
this is actually part of HtcPreferenceActivity which you cant create in Eclipse without proper libs..
Click to expand...
Click to collapse
Couldn't dex2jar be used on HTCExtension.jar then adding HTCExtension to the build path?
Jonny said:
Couldn't dex2jar be used on HTCExtension.jar then adding HTCExtension to the build path?
Click to expand...
Click to collapse
i didnt try it..
MaartenXDA said:
Thanks, good to see you around here
EDIT: and, how could I change it to look like the real HTC listview? I mean with dividers and white background?
Sent from my awesome fridge
Click to expand...
Click to collapse
i think you can create a custom row layout, create a new custom adapter and set the content with your new adapter
Suggestion for the guide: Htc Preferences

LinearLayout Hyperlink

Hello!
First at all, I'm a beginner in android coding, I'm more a graphist with Photoshop as main tool.
A friend has made an app for my themes and is in holidays until september.
Beeing logical and understanding fast, with my friend Google we found the functions/codes I needed. Except one:
I have a horizontal scroll layout showing the apps needed to install the theme. Each app is showed in a linearlayout.
What I would like is make each linearlayout of apps clickable and make them show the app on the playstore when you click on it.
Thanks for reading
I assume you're using Textviews to add line by line the dependencies.. There is a property called autolink or very much like it that makes a link whenever it finds a url in the text...
But instead of Textviews in a linearlayout, why not use ListView? Then you can handle the click in the item to create an intent to open the browser with the url needed... it's a bit of more work but has a better esthetic than a bunch of TextViews... For instance, it makes it easier to use when in a ldpi device...
Sent from my LG-P350 using xda app-developers app
Sorry for the late.
I'm beginner in java coding so I don't undersand well what you mean dude.
In fact, what I have now is:
In res\layout\main.xml:
Code:
<HorizontalScrollView
android:id="@+id/layout5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/layout3"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
>
<LinearLayout
android:id="@+id/layout4"
android:background="#00000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
In MainActivity.java:
Code:
boolean apexInstalled = appInstalledOrNot("com.anddoes.launcher");
RelativeLayout apexApp = (RelativeLayout) getLayoutInflater().inflate(R.layout.item, null);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int) (125 * scale + 0.5f),(int) (150 * scale + 0.5f));
ImageView apexI = (ImageView) apexApp.findViewById(R.id.appIcon);
apexI.setBackgroundResource(R.drawable.apexicon);
TextView apexT = (TextView) apexApp.findViewById(R.id.appText);
if(apexInstalled){
apexT.setText(R.string.installe);
apexT.setTextColor(Color.parseColor("#5a925d"));
}
else{
apexT.setText(R.string.nninstalle);
apexT.setTextColor(Color.parseColor("#de3747"));
}
apexT.setTypeface(font);
TextView apexTitle = (TextView) apexApp.findViewById(R.id.appTitle);
apexTitle.setText("Apex Launcher"); // \n == retour a la ligne
apexTitle.setTypeface(font);
apexApp.setBackgroundColor(Color.argb(190, 0, 0, 0));
listApp.addView(apexApp, params);
And I have many blocks like this one but with other apps, and I would like them to point on the playstore, what do I have to add?
Use a ListView with a custom Adapter: http://www.vogella.com/articles/AndroidListView/
Then add an OnItemClickedListener to the ListView.
In its onItemClick method you can use an Intent like this one:
Code:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + pkg); //Your package name here
if (getActivity().getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
startActivity(intent);
} else {
Toast.makeText(getActivity(), "Google Play is not installed on the device.", Toast.LENGTH_LONG).show();
}
Thanks trying to help me, but I understand aproximatively the intent, but the listview etc, no..
I'm just trying to modify a bit an app somebody made for me using my logic to understand what I have to do. The problem is that I don't understand how to apply what you tell me :/
Lyechee said:
Thanks trying to help me, but I understand aproximatively the intent, but the listview etc, no..
I'm just trying to modify a bit an app somebody made for me using my logic to understand what I have to do. The problem is that I don't understand how to apply what you tell me :/
Click to expand...
Click to collapse
OK, then let's forget about the ListView if you just want to modify your existing app with as little effort as possible.
Try that in your Java code:
Code:
LinearLayout layout = findViewById(R.id.layout4);
layout.setClickable(true);
layout.setOnClickListener(new View.OnClickListener() {
[user=439709]@override[/user]
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + pkg); //Your package name here
if (getActivity().getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
startActivity(intent);
} else {
Toast.makeText(getActivity(), "Google Play is not installed on the device.", Toast.LENGTH_LONG).show();
}
}
});
(The word Override has to be written with a capital letter at the beginning. XDA does not allow that.)
But if I understand well that code, it will make a "link case" in the whole scroll layout no?
Or a link for each app?
If it's not possible to cut the horizontal scroll in little squares (links), is that possible to put a hyperlink on each imageview? So that click on the icon shows the store.
Lyechee said:
But if I understand well that code, it will make a "link case" in the whole scroll layout no?
Or a link for each app?
If it's not possible to cut the horizontal scroll in little squares (links), is that possible to put a hyperlink on each imageview? So that click on the icon shows the store.
Click to expand...
Click to collapse
Yes, it does. I thought that the Linear layout was loaded as the layout for each app.
Ok. I think that the RelativeLayout in the MainActivity.java is your row, right?
If it is, that should work:
Code:
apexApp.setClickable(true);
apexApp.setOnClickListener(new View.OnClickListener() {
[user=439709]@override[/user]
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + pkg); //Your package name here
if (getActivity().getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
startActivity(intent);
} else {
Toast.makeText(getActivity(), "Google Play is not installed on the device.", Toast.LENGTH_LONG).show();
}
}
});
Yeah, each RelativeLayout is an app square. I'm not at home so I can't test it now, will later in the evening, thanks for your help!
Lyechee said:
Yeah, each RelativeLayout is an app square. I'm not at home so I can't test it now, will later in the evening, thanks for your help!
Click to expand...
Click to collapse
Welcome.
Hello! I'm in front of a problem.
I wanted to face it alone, but I don't manage it..
I have had a problem with "uri", and after googleing, I've found that I had to import it.
But my problem is that I get that error:
Code:
The method getActivity() is undefined for the type new View.OnClickListener(){}
Any idea?
Lyechee said:
Hello! I'm in front of a problem.
I wanted to face it alone, but I don't manage it..
I have had a problem with "uri", and after googleing, I've found that I had to import it.
But my problem is that I get that error:
Code:
The method getActivity() is undefined for the type new View.OnClickListener(){}
Any idea?
Click to expand...
Click to collapse
Ah, you're right. I'm sorry.
I copied the code from one of my fragments. Just delete the getActivity().
So it is:
Code:
apexApp.setClickable(true);
apexApp.setOnClickListener(new View.OnClickListener() {
[user=439709]@override[/user]
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + pkg); //Your package name here
if (getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
startActivity(intent);
} else {
Toast.makeText(MainActivtiy.this, "Google Play is not installed on the device.", Toast.LENGTH_LONG).show(); //replace the MainActivity by your Activity
}
}
});
Works like a charm, thank you a lot Exactly what I wanted
If you need a graphist, I'm your man
PS: Is there a tool in Eclipse to make blocks of code lines? I mean, put them in blocs and then hide what you don't need.
Lyechee said:
Works like a charm, thank you a lot Exactly what I wanted
If you need a graphist, I'm your man
PS: Is there a tool in Eclipse to make blocks of code lines? I mean, put them in blocs and then hide what you don't need.
Click to expand...
Click to collapse
Yeah, there should be a minus on the left side next to each method. Click on it to hide the method.
Want to be added? [INDEX] List of themers and designers

How To Layout This Kind of Activity?

I'm having a problem on layouting my app specially when I images are involve.
In the attached image below, how to create a navigation button like that? It also appears translucent, how to do that?
clonedaccnt said:
I'm having a problem on layouting my app specially when I images are involve.
In the attached image below, how to create a navigation button like that? It also appears translucent, how to do that?
Click to expand...
Click to collapse
just looks like a listView, well ... I lie that looks like a horrid webview/html oddity, but in android you would just use a listView for the main view
Or
If the menu items are static and not mutable then a simple frameLayout as parent then a linearLayout for the buttons views
Thanks for the answer. I'll try to use what you said.
deanwray said:
just looks like a listView, well ... I lie that looks like a horrid webview/html oddity, but in android you would just use a listView for the main view
Or
If the menu items are static and not mutable then a simple frameLayout as parent then a linearLayout for the buttons views
Click to expand...
Click to collapse
Can you give me some images or links that you think is a beautiful and clean home navigation?
clonedaccnt said:
Can you give me some images or links that you think is a beautiful and clean home navigation?
Click to expand...
Click to collapse
not sure I understand, but whatever you're after, if it's just inspiration, there will be many examples just searching google
using xml item or json for dynamic data
I m writed simple example for you :
If you have a limited and not dymanic data, you can use xml item for listview, like this :
Add this your string.xml
Code:
<string-array name="schoolsname">
<item>School 1</item>
<item>School 2</item>
<item>School 3</item>
</string-array>
Add listview to your layout file :
Code:
<ListView
android:id=”@+id/list”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:entries="@array/schoolsname"
/>
And in your Activity class you just defined your listview, like this :
Code:
public class MainActivity extends Activity implements OnItemClickListener{
ListView list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list= (ListView) findViewById(R.id.list);
list.setOnItemClickListener(this);
}
// [B]onItemClick When clicked your list item[/B]
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
}
Sorry my english. I m still learning.

[Tutorial] Learn to create a Matrix Effect

Hello,
I create that thread to present you a tutorial learning you how to create a Matrix Effect, also known as Digital Rain Effect, on Android. The tutorial is also available as a Youtube video :
Create a Matrix Effect on Android
Also know as Digital Rain Effect, the Matrix Effect is a classic effect featured in the Matrix series films. A green code is falling and represents the activity of the virtual reality environment of the Matrix on screen. On Android, Matrix Effect has been implemented in various applications often as a Live Wallpaper. In that tutorial, you are going to learn how to create a simple Matrix Effect.
1. Create a Matrix Effect custom View
First, you need to create a custom view named MatrixEffect :
Code:
package com.ssaurel.digitalraineffect;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import java.util.Random;
/**
* Created by ssaurel on 22/09/2016.
*/
public class MatrixEffect extends View {
private static final Random RANDOM = new Random();
private int width, height;
private Canvas canvas;
private Bitmap canvasBmp;
private int fontSize = 40;
private int columnSize;
private char[] cars = "+-*/!^'([])#@&?,=$€°|%".toCharArray();
private int[] txtPosByColumn;
private Paint paintTxt, paintBg, paintBgBmp, paintInitBg;
public MatrixEffect(Context context, AttributeSet attrs) {
super(context, attrs);
paintTxt = new Paint();
paintTxt.setStyle(Paint.Style.FILL);
paintTxt.setColor(Color.GREEN);
paintTxt.setTextSize(fontSize);
paintBg = new Paint();
paintBg.setColor(Color.BLACK);
paintBg.setAlpha(5);
paintBg.setStyle(Paint.Style.FILL);
paintBgBmp = new Paint();
paintBgBmp.setColor(Color.BLACK);
paintInitBg = new Paint();
paintInitBg.setColor(Color.BLACK);
paintInitBg.setAlpha(255);
paintInitBg.setStyle(Paint.Style.FILL);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
width = w;
height = h;
canvasBmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(canvasBmp);
canvas.drawRect(0, 0, width, height, paintInitBg);
columnSize = width / fontSize;
txtPosByColumn = new int[columnSize + 1];
for (int x = 0; x < columnSize; x++) {
txtPosByColumn[x] = RANDOM.nextInt(height / 2) + 1;
}
}
private void drawText() {
for (int i = 0; i < txtPosByColumn.length; i++) {
canvas.drawText("" + cars[RANDOM.nextInt(cars.length)], i * fontSize, txtPosByColumn[i] * fontSize, paintTxt);
if (txtPosByColumn[i] * fontSize > height && Math.random() > 0.975) {
txtPosByColumn[i] = 0;
}
txtPosByColumn[i]++;
}
}
private void drawCanvas() {
canvas.drawRect(0, 0, width, height, paintBg);
drawText();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(canvasBmp, 0, 0, paintBgBmp);
drawCanvas();
invalidate();
}
}
First, we define the variables for the Matrix Effect with the size of the code, the size of a column, the position of the bottom text for each column and then the caracters that will be used for the code. Note that you can put the caracters you want here or why not a custom font.
In the constructor, we initialize the paint objects. To get view width and height, we override the onSizeChanged method of the View. We initialize the position of the first caracter for each column. We use a random position between the top of the screen and the middle of the screen.
Then, we define a draw text method used to draw a random caracter for each column at the position indicated by txtPosByColumn variable.
The drawCanvas method is used to draw the background of our view and then the code.
Finally, we override the onDraw method of our custom view to call the drawCanvas method and invalidate the view to force a redraw. With that call, the Matrix Effect could progress from top to bottom in infinite mode. Note that it is not the most optimized way to manage a Matrix Effect, but for a tutorial it's sufficient.
2. Define the MatrixEffect View on the Layout
Now, we can define the MatrixEffect View on the layout of the Main Activity.
Code:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.ssaurel.digitalraineffect.MainActivity">
<com.ssaurel.digitalraineffect.MatrixEffect
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
3. Set the layout on the Main Activity
Last step is to set the layout as content view for the Main Activity.
Code:
package com.ssaurel.digitalraineffect;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
4. Demo
To enjoy the Matrix Effect, you have just to launch the application on an Android device and you sould see the following effect :
Don't hesitate to give it a try and give me your feedbacks.
Thanks.
Sylvain
Nice work mate, will give it a try.
Sent from my SM-G935F using XDA-Developers mobile app
silverrum said:
Nice work mate, will give it a try.
Sent from my SM-G935F using XDA-Developers mobile app
Click to expand...
Click to collapse
Thanks
I really like this animated wallpaper app.
Thanks for the detailed tutorial, it's always nice to see actually what the code does. :highfive:
In theory, would it be possible to take smali from the app you create and use it to create this effect on the notification screen (for example)?
Seeing the code I’m sure this app drain a lot of battery but it's very nice.
Ticklefish said:
Thanks for the detailed tutorial, it's always nice to see actually what the code does. :highfive:
In theory, would it be possible to take smali from the app you create and use it to create this effect on the notification screen (for example)?
Click to expand...
Click to collapse
Thanks.
Did you mean put the effect on the lock screen ? I thought it was not possible now to put live wallpaper on lock screen. If it's possible it could be great.
slnit said:
Seeing the code I’m sure this app drain a lot of battery but it's very nice.
Click to expand...
Click to collapse
For sure . But life is a choice, like in Matrix films, cool effect on your screen or save your battery lol
sylsau said:
Thanks.
Did you mean put the effect on the lock screen ? I thought it was not possible now to put live wallpaper on lock screen. If it's possible it could be great.
Click to expand...
Click to collapse
Should be possible to pull the AOSP lockscreen source (or the source from OEM variants that are actually available...) and replace the wallpaper code, right?
Interesting , definitely going to try it on Samsung TW later , great idea mate ..
thereassaad said:
Interesting , definitely going to try it on Samsung TW later , great idea mate ..
Click to expand...
Click to collapse
Thanks
Thanks for this tutorial With this I've started learning to work with canvas Nice job!
thereassaad said:
Interesting , definitely going to try it on Samsung TW later , great idea mate ..
Click to expand...
Click to collapse
Me too. hope it works
Excellent work.
rejm0901 said:
Me too. hope it works
Click to expand...
Click to collapse
It works mate ?
Hello! nice tutorial, everything works fine. But I would like to add buttons to change the colors of chars but i'm not able to call the method from the main activity.
I've tried this but giving errors
Code:
MatrixEffect matrixEffect = new MatrixEffect(); // this gives an error : MatrixEffect(Context, AttributSet) in MatrixEffect cannot be applied to ()
final Paint paintTxt = effetMatrix.peindreTxt;
paintTxt.setColor(Color.BLUE);
Is there a way that I can call paintTxt.setColor() to change color?
PS: Im just a noob on programming
esQmo said:
Hello! nice tutorial, everything works fine. But I would like to add buttons to change the colors of chars but i'm not able to call the method from the main activity.
I've tried this but giving errors
Code:
MatrixEffect matrixEffect = new MatrixEffect(); // this gives an error : MatrixEffect(Context, AttributSet) in MatrixEffect cannot be applied to ()
final Paint paintTxt = effetMatrix.peindreTxt;
paintTxt.setColor(Color.BLUE);
Is there a way that I can call paintTxt.setColor() to change color?
PS: Im just a noob on programming
Click to expand...
Click to collapse
If you want to add buttons to change the color of the Matrix Effect, you should work on the layout and add two buttons at the bottom of the screen under the MatrixView. The, you have to change the colors of the Matrix Effect when a user click on one of these buttons.
esQmo said:
Hello! nice tutorial, everything works fine. But I would like to add buttons to change the colors of chars but i'm not able to call the method from the main activity.
I've tried this but giving errors
Code:
MatrixEffect matrixEffect = new MatrixEffect(); // this gives an error : MatrixEffect(Context, AttributSet) in MatrixEffect cannot be applied to ()
final Paint paintTxt = effetMatrix.peindreTxt;
paintTxt.setColor(Color.BLUE);
Is there a way that I can call paintTxt.setColor() to change color?
PS: Im just a noob on programming
Click to expand...
Click to collapse
SOLVED!
---------- Post added at 11:13 PM ---------- Previous post was at 11:05 PM ----------
sylsau said:
If you want to add buttons to change the color of the Matrix Effect, you should work on the layout and add two buttons at the bottom of the screen under the MatrixView. The, you have to change the colors of the Matrix Effect when a user click on one of these buttons.
Click to expand...
Click to collapse
Already solved. I added 4 buttons for 4 colors and i used switch statement
1st, created a custom text color inside MAtrixEffect
Code:
public void setCustomTextColor(int color){
peindreTxt.setColor(color);
invalidate();
then, in mainactivity :
Code:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
MatrixEffect matrixEffect;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
matrixEffect = (MatrixEffect) findViewById(R.id.arrPlan);
final Button boutton_blanc = (Button) findViewById(R.id.b_bl);
final Button boutton_bleu = (Button) findViewById(R.id.b_b);
final Button boutton_rouge = (Button) findViewById(R.id.b_r);
final Button boutton_rose = (Button) findViewById(R.id.b_ro);
if (boutton_bleu != null) {
boutton_bleu.setOnClickListener(this);
}
if (boutton_blanc != null) {
boutton_blanc.setOnClickListener(this);
}
if (boutton_rouge != null) {
boutton_rouge.setOnClickListener(this);
}
if (boutton_rose != null) {
boutton_rose.setOnClickListener(this);
}
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.b_bl:
matrixEffect.setCustomTextColor(Color.WHITE);
break;
case R.id.b_b:
matrixEffect.setCustomTextColor(Color.BLUE);
break;
case R.id.b_ro:
matrixEffectsetCustomTextColor(Color.MAGENTA);
break;
case R.id.b_r:
matrixEffect.setCustomTextColor(Color.RED);
break;
case R.id.b_def:
matrixEffect.setCustomTextColor(Color.GREEN);
break;
}
}
}
Now it works fine and i can change color while a button is pressed
esQmo said:
SOLVED!
---------- Post added at 11:13 PM ---------- Previous post was at 11:05 PM ----------
Already solved. I added 4 buttons for 4 colors and i used switch statement
1st, created a custom text color inside MAtrixEffect
Code:
public void setCustomTextColor(int color){
peindreTxt.setColor(color);
invalidate();
then, in mainactivity :
Code:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
MatrixEffect matrixEffect;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
matrixEffect = (MatrixEffect) findViewById(R.id.arrPlan);
final Button boutton_blanc = (Button) findViewById(R.id.b_bl);
final Button boutton_bleu = (Button) findViewById(R.id.b_b);
final Button boutton_rouge = (Button) findViewById(R.id.b_r);
final Button boutton_rose = (Button) findViewById(R.id.b_ro);
if (boutton_bleu != null) {
boutton_bleu.setOnClickListener(this);
}
if (boutton_blanc != null) {
boutton_blanc.setOnClickListener(this);
}
if (boutton_rouge != null) {
boutton_rouge.setOnClickListener(this);
}
if (boutton_rose != null) {
boutton_rose.setOnClickListener(this);
}
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.b_bl:
matrixEffect.setCustomTextColor(Color.WHITE);
break;
case R.id.b_b:
matrixEffect.setCustomTextColor(Color.BLUE);
break;
case R.id.b_ro:
matrixEffectsetCustomTextColor(Color.MAGENTA);
break;
case R.id.b_r:
matrixEffect.setCustomTextColor(Color.RED);
break;
case R.id.b_def:
matrixEffect.setCustomTextColor(Color.GREEN);
break;
}
}
}
Now it works fine and i can change color while a button is pressed
Click to expand...
Click to collapse
Great
This is just the kind of guide that I have been waiting for! I am gonna implement this as a hidden feature in my Rom Control apk. Good lookin on the guide brother

Categories

Resources